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 1pz7jy-0000wr-I1 for pgsql-hackers@arkaria.postgresql.org; Wed, 17 May 2023 03:22:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pz7iy-0004pP-MJ for pgsql-hackers@arkaria.postgresql.org; Wed, 17 May 2023 03:21:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pz7ix-0004pE-Tq for pgsql-hackers@lists.postgresql.org; Wed, 17 May 2023 03:21:12 +0000 Received: from mail-yw1-x112c.google.com ([2607:f8b0:4864:20::112c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1pz7im-000GLB-B7 for pgsql-hackers@lists.postgresql.org; Wed, 17 May 2023 03:21:11 +0000 Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-55a00da4e53so2861627b3.0 for ; Tue, 16 May 2023 20:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684293659; x=1686885659; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2TQ1B0mXD29X3MCq7CX/L/mKInP3KVptKl+Gl8z4XrA=; b=hsN9MeaAN9FozVa+bVT7Gfl3VaKa/5Q6/yrUtiLNDi1pE1ha0BeMfkDOtr1TO/xLas jAheEmVTJYFZeDk1rl/X3l+rENzXHvTL1eIaOz45hCm38tLKMc2shbvtwDm8C5XuroFr n8sns//nYGb0SKUmT3rLwm8yEnATsTNZzvvjYMhyDGgjS9Q/8w9xJyFiVG52KSykSjmy Z6dk+FJW6BbHKq3xafSN3c60f3/fHp/lqexW//rNsNC3GkgrbXDNMIzCQF0xk802SJzv miPgHsxNvlrprHp1mWN0qnNmIezDmK8fnfckl+9CjeKRpEDbw1YtQ6UnB/cFdrGVvtkY Pipw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684293659; x=1686885659; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2TQ1B0mXD29X3MCq7CX/L/mKInP3KVptKl+Gl8z4XrA=; b=k8VtjA+J1IOxnl7geoYk1omLjrNa++bRg0Ipo6ml4T5IhfVtmggvcfDZET14xgcffY VwqiAUS0av2tRiKqPbX5cFSISSU5NRtkTw8kIMN+gjzus14fC758NA8cNrn8BRnwDrNZ Yfy+zF1jT68vehRqwNcvBG6bgEcQz562fIS1Q22bpb9hXPoaJ7ujSzB3/KWraQMjbxjJ 8PAvI0WPdOuMGtYWKsyqAqDB8snAvEeJVuzFIe3jzciCAYVwRBY/iwzLIwiJITQ1FYK6 AiCbSDNEWAsJuGCcmpSLTve8IC0Mz6qkpPUVyu1GJC+9lO8tglRFxq1Zp/cnDU6vQ/aB q3hw== X-Gm-Message-State: AC+VfDy2h18q424shNgTtZwfFXbQhbKhEcS/cHjoIBvqMo/vIW6Dt/Ee u7KQjWXhRgGAuqC/bPRFb14C6IVoVaqEWIb7x1U= X-Google-Smtp-Source: ACHHUZ4oNUycLUHCIVG21L+QNdSc+47mQLKY2JHFrRS0VS+17UCyJjuyXqksJNII8wiwgPtnwAkBEo4T9cmxvyU3/Ck= X-Received: by 2002:a0d:ed04:0:b0:559:f861:9e0b with SMTP id w4-20020a0ded04000000b00559f8619e0bmr31709873ywe.5.1684293659400; Tue, 16 May 2023 20:20:59 -0700 (PDT) MIME-Version: 1.0 References: <20230303201757.gvc5txqbvlcutaqc@erthalion.local> <20230308153349.xflxmb5u3tlrmq2t@erthalion.local> In-Reply-To: From: Pavel Stehule Date: Wed, 17 May 2023 05:20:22 +0200 Message-ID: Subject: Re: Schema variables - new implementation for Postgres 15 To: Dmitry Dolgov <9erthalion6@gmail.com> Cc: Sergey Shinderuk , Tomas Vondra , Julien Rouhaud , dean.a.rasheed@gmail.com, er@xs4all.nl, joel@compiler.org, pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000044e15505fbdb2de8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000044e15505fbdb2de8 Content-Type: multipart/alternative; boundary="00000000000044e15405fbdb2de6" --00000000000044e15405fbdb2de6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi =C3=BAt 16. 5. 2023 v 20:11 odes=C3=ADlatel Pavel Stehule napsal: > Hi > > still in old layout - but it can be useful for testing by someone > > fix build doc, fix regress tests > fresh rebase > > Regards > > Pavel > --00000000000044e15405fbdb2de6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi


=C3=BAt 16. 5. 2023 v=C2=A020:11 od= es=C3=ADlatel Pavel Stehule <= pavel.stehule@gmail.com> napsal:
Hi

s= till in old layout - but it can be useful for testing by someone
=

fix build doc, fix regress tests

fresh rebase

=C2=A0
Regards

Pavel
--00000000000044e15405fbdb2de6-- --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0008-regress-tests-for-session-variables.patch" Content-Disposition: attachment; filename="v20230517-1-0008-regress-tests-for-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xern2 RnJvbSBlMDhkZDZmNzk0ZTE0ZmJlMWZhMDEzMDY4YWU5ZDliNWUxMGYwMmIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDo1NDo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDgv MTBdIHJlZ3Jlc3MgdGVzdHMgZm9yIHNlc3Npb24gdmFyaWFibGVzCgpDaGVja3Mgb2YgYmFzaWMg ZnVuY3Rpb25hbGl0eSwgY2hlY2sgb2YgdXNhZ2Ugc2Vzc2lvbiB2YXJpYWJsZXMgaW4gc3VidHJh bnNhY3Rpb25zCmFuZCBmcm9tIFBMcGdTUUwKLS0tCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3Nl c3Npb24tdmFyaWFibGUub3V0ICAgfCAgMTEyICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9uX3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIC4uLi9pc29sYXRpb24vc3BlY3Mvc2Vzc2lv bi12YXJpYWJsZS5zcGVjICAgICB8ICAgNTMgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lv bl92YXJpYWJsZXMub3V0ICAgIHwgMTU2NCArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsICAgIHwgMTIwMyArKysrKysrKysrKysrCiA2 IGZpbGVzIGNoYW5nZWQsIDI5MzQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9zZXNzaW9uLXZhcmlhYmxl Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9zZXNzaW9u LXZhcmlhYmxlLnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Nlc3Npb25fdmFyaWFibGVzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Nlc3Npb25fdmFyaWFibGVzLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9zZXNzaW9uLXZhcmlhYmxlLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9zZXNzaW9uLXZhcmlhYmxlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4xYzQxNDlmNmVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2V4cGVjdGVkL3Nlc3Npb24tdmFyaWFibGUub3V0CkBAIC0wLDAgKzEsMTEyIEBACitQ YXJzZWQgdGVzdCBzcGVjIHdpdGggNCBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjog bGV0IHZhbCBkcm9wIHZhbAorc3RlcCBsZXQ6IExFVCBteXZhciA9ICd0ZXN0JzsKK3N0ZXAgdmFs OiBTRUxFQ1QgbXl2YXI7CitteXZhcgorLS0tLS0KK3Rlc3QgCisoMSByb3cpCisKK3N0ZXAgZHJv cDogRFJPUCBWQVJJQUJMRSBteXZhcjsKK3N0ZXAgdmFsOiBTRUxFQ1QgbXl2YXI7CitFUlJPUjog IGNvbHVtbiBvciB2YXJpYWJsZSAibXl2YXIiIGRvZXMgbm90IGV4aXN0CisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBsZXQgdmFsIHMxIGRyb3AgdmFsIHNyMQorc3RlcCBsZXQ6IExFVCBteXZhciA9 ICd0ZXN0JzsKK3N0ZXAgdmFsOiBTRUxFQ1QgbXl2YXI7CitteXZhcgorLS0tLS0KK3Rlc3QgCiso MSByb3cpCisKK3N0ZXAgczE6IEJFR0lOOworc3RlcCBkcm9wOiBEUk9QIFZBUklBQkxFIG15dmFy Oworc3RlcCB2YWw6IFNFTEVDVCBteXZhcjsKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJt eXZhciIgZG9lcyBub3QgZXhpc3QKK3N0ZXAgc3IxOiBST0xMQkFDSzsKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IGxldCB2YWwgZGJnIGRyb3AgY3JlYXRlIGRiZyB2YWwKK3N0ZXAgbGV0OiBMRVQg bXl2YXIgPSAndGVzdCc7CitzdGVwIHZhbDogU0VMRUNUIG15dmFyOworbXl2YXIKKy0tLS0tCit0 ZXN0IAorKDEgcm93KQorCitzdGVwIGRiZzogU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3ZlZCBG Uk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCk7CitzY2hlbWF8bmFtZSB8cmVtb3ZlZAorLS0tLS0t Ky0tLS0tKy0tLS0tLS0KK3B1YmxpY3xteXZhcnxmICAgICAgCisoMSByb3cpCisKK3N0ZXAgZHJv cDogRFJPUCBWQVJJQUJMRSBteXZhcjsKK3N0ZXAgY3JlYXRlOiBDUkVBVEUgVkFSSUFCTEUgbXl2 YXIgQVMgdGV4dDsKK3N0ZXAgZGJnOiBTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZST00g cGdfc2Vzc2lvbl92YXJpYWJsZXMoKTsKK3NjaGVtYXxuYW1lfHJlbW92ZWQKKy0tLS0tLSstLS0t Ky0tLS0tLS0KKygwIHJvd3MpCisKK3N0ZXAgdmFsOiBTRUxFQ1QgbXl2YXI7CitteXZhcgorLS0t LS0KKyAgICAgCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGxldCB2YWwgczEg ZGJnIGRyb3AgY3JlYXRlIGRiZyB2YWwgc3IxCitzdGVwIGxldDogTEVUIG15dmFyID0gJ3Rlc3Qn Oworc3RlcCB2YWw6IFNFTEVDVCBteXZhcjsKK215dmFyCistLS0tLQordGVzdCAKKygxIHJvdykK Kworc3RlcCBzMTogQkVHSU47CitzdGVwIGRiZzogU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3Zl ZCBGUk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCk7CitzY2hlbWF8bmFtZSB8cmVtb3ZlZAorLS0t LS0tKy0tLS0tKy0tLS0tLS0KK3B1YmxpY3xteXZhcnxmICAgICAgCisoMSByb3cpCisKK3N0ZXAg ZHJvcDogRFJPUCBWQVJJQUJMRSBteXZhcjsKK3N0ZXAgY3JlYXRlOiBDUkVBVEUgVkFSSUFCTEUg bXl2YXIgQVMgdGV4dDsKK3N0ZXAgZGJnOiBTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZS T00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKTsKK3NjaGVtYXxuYW1lIHxyZW1vdmVkCistLS0tLS0r LS0tLS0rLS0tLS0tLQorcHVibGljfG15dmFyfGYgICAgICAKKygxIHJvdykKKworc3RlcCB2YWw6 IFNFTEVDVCBteXZhcjsKK215dmFyCistLS0tLQorICAgICAKKygxIHJvdykKKworc3RlcCBzcjE6 IFJPTExCQUNLOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogY3JlYXRlMyBsZXQzIHMzIG9fY19k IG9fZW94X3IgY3JlYXRlNCBsZXQ0IGRyb3A0IGRyb3AzIGludmFsMyBkaXNjYXJkIHNjMyBjbGVh biBzdGF0ZQorc3RlcCBjcmVhdGUzOiBDUkVBVEUgVkFSSUFCTEUgbXl2YXIzIEFTIHRleHQ7Citz dGVwIGxldDM6IExFVCBteXZhcjMgPSAndGVzdCc7CitzdGVwIHMzOiBCRUdJTjsKK3N0ZXAgb19j X2Q6IENSRUFURSBURU1QIFZBUklBQkxFIG15dmFyX29fY19kIEFTIHRleHQgT04gQ09NTUlUIERS T1A7CitzdGVwIG9fZW94X3I6IENSRUFURSBWQVJJQUJMRSBteXZhcl9vX2VveF9yIEFTIHRleHQg T04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUOyBMRVQgbXl2YXJfb19lb3hfciA9ICd0ZXN0JzsKK3N0 ZXAgY3JlYXRlNDogQ1JFQVRFIFZBUklBQkxFIG15dmFyNCBBUyB0ZXh0Oworc3RlcCBsZXQ0OiBM RVQgbXl2YXI0ID0gJ3Rlc3QnOworc3RlcCBkcm9wNDogRFJPUCBWQVJJQUJMRSBteXZhcjQ7Citz dGVwIGRyb3AzOiBEUk9QIFZBUklBQkxFIG15dmFyMzsKK3N0ZXAgaW52YWwzOiBTRUxFQ1QgQ09V TlQoKikgPj0gMCBGUk9NIHBnX2ZvcmVpZ25fdGFibGU7Cis/Y29sdW1uPworLS0tLS0tLS0KK3Qg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgZGlzY2FyZDogRElTQ0FSRCBWQVJJQUJMRVM7CitzdGVw IHNjMzogQ09NTUlUOworc3RlcCBjbGVhbjogRFJPUCBWQVJJQUJMRSBteXZhcl9vX2VveF9yOwor c3RlcCBzdGF0ZTogU0VMRUNUIHZhcm5hbWUgRlJPTSBwZ192YXJpYWJsZTsKK3Zhcm5hbWUKKy0t LS0tLS0KK215dmFyICAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1 bGUKaW5kZXggNGZjNTZhZTk5Yy4uODA5ZjQ3Yjk0MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9uX3NjaGVkdWxlCkBAIC0xMTAsMyArMTEwLDQgQEAgdGVzdDogc2VyaWFsaXphYmxlLXBhcmFs bGVsCiB0ZXN0OiBzZXJpYWxpemFibGUtcGFyYWxsZWwtMgogdGVzdDogc2VyaWFsaXphYmxlLXBh cmFsbGVsLTMKIHRlc3Q6IG1hdHZpZXctd3JpdGUtc2tldwordGVzdDogc2Vzc2lvbi12YXJpYWJs ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Nlc3Npb24tdmFyaWFibGUu c3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9zZXNzaW9uLXZhcmlhYmxlLnNwZWMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWQwODljOGE0ZQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9zZXNzaW9uLXZhcmlhYmxlLnNwZWMK QEAgLTAsMCArMSw1MyBAQAorIyBUZXN0IHNlc3Npb24gdmFyaWFibGVzIG1lbW9yeSBjbGVhbnVw IGZvciBzaW52YWwKKworc2V0dXAKK3sKKyAgICBDUkVBVEUgVkFSSUFCTEUgbXl2YXIgQVMgdGV4 dDsKK30KKwordGVhcmRvd24KK3sKKyAgICBEUk9QIFZBUklBQkxFIElGIEVYSVNUUyBteXZhcjsK K30KKworc2Vzc2lvbiBzMQorc3RlcCBzMQkJeyBCRUdJTjsgfQorc3RlcCBsZXQJeyBMRVQgbXl2 YXIgPSAndGVzdCc7IH0KK3N0ZXAgdmFsCXsgU0VMRUNUIG15dmFyOyB9CitzdGVwIGRiZwl7IFNF TEVDVCBzY2hlbWEsIG5hbWUsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3ZhcmlhYmxlcygpOyB9 CitzdGVwIHNyMQl7IFJPTExCQUNLOyB9CisKK3Nlc3Npb24gczIKK3N0ZXAgZHJvcAkJeyBEUk9Q IFZBUklBQkxFIG15dmFyOyB9CitzdGVwIGNyZWF0ZQkJeyBDUkVBVEUgVkFSSUFCTEUgbXl2YXIg QVMgdGV4dDsgfQorCitzZXNzaW9uIHMzCitzdGVwIHMzCQkJeyBCRUdJTjsgfQorc3RlcCBsZXQz CQl7IExFVCBteXZhcjMgPSAndGVzdCc7IH0KK3N0ZXAgb19jX2QJCXsgQ1JFQVRFIFRFTVAgVkFS SUFCTEUgbXl2YXJfb19jX2QgQVMgdGV4dCBPTiBDT01NSVQgRFJPUDsgfQorc3RlcCBvX2VveF9y CXsgQ1JFQVRFIFZBUklBQkxFIG15dmFyX29fZW94X3IgQVMgdGV4dCBPTiBUUkFOU0FDVElPTiBF TkQgUkVTRVQ7IExFVCBteXZhcl9vX2VveF9yID0gJ3Rlc3QnOyB9CitzdGVwIGNyZWF0ZTQJeyBD UkVBVEUgVkFSSUFCTEUgbXl2YXI0IEFTIHRleHQ7IH0KK3N0ZXAgbGV0NAkJeyBMRVQgbXl2YXI0 ID0gJ3Rlc3QnOyB9CitzdGVwIGRyb3A0CQl7IERST1AgVkFSSUFCTEUgbXl2YXI0OyB9CitzdGVw IGludmFsMwkJeyBTRUxFQ1QgQ09VTlQoKikgPj0gMCBGUk9NIHBnX2ZvcmVpZ25fdGFibGU7IH0K K3N0ZXAgZGlzY2FyZAl7IERJU0NBUkQgVkFSSUFCTEVTOyB9CitzdGVwIHNjMwkJeyBDT01NSVQ7 IH0KK3N0ZXAgY2xlYW4JCXsgRFJPUCBWQVJJQUJMRSBteXZhcl9vX2VveF9yOyB9CitzdGVwIHN0 YXRlCQl7IFNFTEVDVCB2YXJuYW1lIEZST00gcGdfdmFyaWFibGU7IH0KKworc2Vzc2lvbiBzNAor c3RlcCBjcmVhdGUzCXsgQ1JFQVRFIFZBUklBQkxFIG15dmFyMyBBUyB0ZXh0OyB9CitzdGVwIGRy b3AzCQl7IERST1AgVkFSSUFCTEUgbXl2YXIzOyB9CisKKyMgQ29uY3VycmVudCBkcm9wIG9mIGEg a25vd24gdmFyaWFibGUgc2hvdWxkIGxlYWQgdG8gYW4gZXJyb3IKK3Blcm11dGF0aW9uIGxldCB2 YWwgZHJvcCB2YWwKKyMgU2FtZSwgYnV0IHdpdGggYW4gZXhwbGljaXQgdHJhbnNhY3Rpb24KK3Bl cm11dGF0aW9uIGxldCB2YWwgczEgZHJvcCB2YWwgc3IxCisjIENvbmN1cnJlbnQgZHJvcC9jcmVh dGUgb2YgYSBrbm93biB2YXJpYWJsZSBzaG91bGQgbGVhZCB0byBlbXB0eSB2YXJpYWJsZQorcGVy bXV0YXRpb24gbGV0IHZhbCBkYmcgZHJvcCBjcmVhdGUgZGJnIHZhbAorIyBDb25jdXJyZW50IGRy b3AvY3JlYXRlIG9mIGEga25vd24gdmFyaWFibGUgc2hvdWxkIGxlYWQgdG8gZW1wdHkgdmFyaWFi bGUKKyMgV2UgbmVlZCBhIHRyYW5zYWN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHdvbid0IGFj Y2VwdCBpbnZhbGlkYXRpb24gd2hlbgorIyBjYWxsaW5nIHRoZSBkYmcgc3RlcCBhZnRlciB0aGUg Y29uY3VycmVudCBkcm9wCitwZXJtdXRhdGlvbiBsZXQgdmFsIHMxIGRiZyBkcm9wIGNyZWF0ZSBk YmcgdmFsIHNyMQorIyB0ZXN0IGZvciBESVNDQVJEIEFMTCB3aGVuIGFsbCBpbnRlcm5hbCBxdWV1 ZXMgaGF2ZSBhY3Rpb25zIHJlZ2lzdGVyZWQKK3Blcm11dGF0aW9uIGNyZWF0ZTMgbGV0MyBzMyBv X2NfZCBvX2VveF9yIGNyZWF0ZTQgbGV0NCBkcm9wNCBkcm9wMyBpbnZhbDMgZGlzY2FyZCBzYzMg Y2xlYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lv bl92YXJpYWJsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3Zhcmlh Ymxlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDYzYjJjOTZm NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92 YXJpYWJsZXMub3V0CkBAIC0wLDAgKzEsMTU2NCBAQAorLS0gc2hvdWxkIGZhaWwsIHBzZXVkb3R5 cGVzIGFyZSBub3QgYWxsb3dlZAorQ1JFQVRFIFZBUklBQkxFIHh4IEFTIGFueWVsZW1lbnQ7CitF UlJPUjogIHNlc3Npb24gdmFyaWFibGUgY2Fubm90IGJlIHBzZXVkby10eXBlIGFueWVsZW1lbnQK Ky0tIHNob3VsZCBiZSBvaworQ1JFQVRFIFNDSEVNQSBzdmFydGVzdCBDUkVBVEUgVkFSSUFCTEUg eHggQVMgaW50IENSRUFURSBUQUJMRSBmb28oYSBpbnQpOworTEVUIHN2YXJ0ZXN0Lnh4ID0gMTAw OworRFJPUCBTQ0hFTUEgc3ZhcnRlc3QgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gMiBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHN2YXJ0 ZXN0LmZvbworZHJvcCBjYXNjYWRlcyB0byBzZXNzaW9uIHZhcmlhYmxlIHN2YXJ0ZXN0Lnh4Cist LSBzaG91bGQgZmFpbAorTEVUIHN2YXJ0ZXN0Lnh4ID0gMTAwOworRVJST1I6ICBzZXNzaW9uIHZh cmlhYmxlICJzdmFydGVzdC54eCIgZG9lc24ndCBleGlzdAorTElORSAxOiBMRVQgc3ZhcnRlc3Qu eHggPSAxMDA7CisgICAgICAgICAgICBeCitDUkVBVEUgU0NIRU1BIHN2YXJ0ZXN0OworU0VUIHNl YXJjaF9wYXRoID0gc3ZhcnRlc3Q7CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2VyOwor Q1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworRFJPUCBWQVJJQUJMRSB2YXIxLCB2 YXIyOworLS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51 bWVyaWM7CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworR1JBTlQgVVNBR0UgT04gU0NIRU1B IHN2YXJ0ZXN0IFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOwor LS0gc2hvdWxkIGZhaWwKK1NFTEVDVCB2YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBm b3Igc2Vzc2lvbiB2YXJpYWJsZSB2YXIxCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQgU0VM RUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90 ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbAorTEVUIHZhcjEgPSAxMDsKK0VSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgdmFyMQorLS0gc2hvdWxkIHdvcmsKK1NF TEVDVCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFVCBST0xFIFRP IERFRkFVTFQ7CitHUkFOVCBVUERBVEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xl OworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB3b3JrCitMRVQgdmFyMSA9 IDMzMzsKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEg RlJPTSB2YXJfdGVzdF9yb2xlOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc2VjdXJlX3Zh cigpCitSRVRVUk5TIGludCBBUyAkJAorICBTRUxFQ1Qgc3ZhcnRlc3QudmFyMTo6aW50OworJCQg TEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNl Y3VyZV92YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSByb3cpCisKK1NFVCBST0xF IFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbAorU0VMRUNUIHN2YXJ0ZXN0LnZhcjE7 CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxlIHZhcjEKKy0t IHNob3VsZCB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKyBzZWN1cmVfdmFyIAorLS0tLS0t LS0tLS0tCisgICAgICAgIDMzMworKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMg ZworICAgT3V0cHV0OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw KQorICAgRmlsdGVyOiAoKGcudik6Om51bWVyaWMgPSB2YXIxKQorKDQgcm93cykKKworQ1JFQVRF IFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOworU0VMRUNUICogRlJPTSBzY2hl bWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAzMzMKKygxIHJvdykKKworXGMgLQorU0VU IHNlYXJjaF9wYXRoID0gc3ZhcnRlc3Q7CistLSBzaG91bGQgd29yayBzdGlsbCwgYnV0IHZhciB3 aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIxIAorLS0t LS0tCisgICAgIAorKDEgcm93KQorCitMRVQgdmFyMSA9IHBpKCk7CitTRUxFQ1QgdmFyMTsKKyAg ICAgICB2YXIxICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2NTM1ODk3OQor KDEgcm93KQorCistLSB3ZSBjYW4gc2VlIGV4ZWN1dGlvbiBwbGFuIG9mIExFVCBzdGF0ZW1lbnQK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNFVCBT RVNTSU9OIFZBUklBQkxFCisgUmVzdWx0CisgICBPdXRwdXQ6IDMuMTQxNTkyNjUzNTg5NzkKKygz IHJvd3MpCisKK1NFTEVDVCB2YXIxOworICAgICAgIHZhcjEgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0KKyAzLjE0MTU5MjY1MzU4OTc5CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YXIz IEFTIGludDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGlu dCBBUyAkJAorQkVHSU4KKyAgTEVUIHN2YXJ0ZXN0LnZhcjMgPSBDT0FMRVNDRShzdmFydGVzdC52 YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3Fs OworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMQorKDEgcm93KQorCitTRUxFQ1Qg aW5jKDEpOworIGluYyAKKy0tLS0tCisgICAyCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7Cisg aW5jIAorLS0tLS0KKyAgIDMKKygxIHJvdykKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKTsKKyBpbmMgCistLS0tLQorICAgNAorICAgNQorICAgNgorICAgNworICAg OAorICAgOQorICAxMAorICAxMQorICAxMgorICAxMworKDEwIHJvd3MpCisKK1NFVCBST0xFIFRP IHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbAorTEVUIHZhcjMgPSAwOworRVJST1I6ICBw ZXJtaXNzaW9uIGRlbmllZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSB2YXIzCitTRVQgUk9MRSBUTyBE RUZBVUxUOworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmlldzsKK0RST1AgVkFSSUFCTEUgdmFyMSBD QVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CistLSBjb21wb3NpdGUgdmFyaWFi bGVzCitDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5IGludCwgeiBudW1lcmljKDEwLDIp KTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMg c3ZfeHl6OworXGQgdjEKK1xkIHYyCitMRVQgdjEgPSAoMSwyLDMuMTQpOworTEVUIHYyID0gKDEw LDIwLDMuMTQqMTApOworLS0gc2hvdWxkIHdvcmsgdG9vIC0gdGhlcmUgYXJlIHByZXBhcmVkIGNh c3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOworU0VMRUNUIHYxOworICAgICB2MSAgICAgCistLS0t LS0tLS0tLS0KKyAoMSwyLDMuMTQpCisoMSByb3cpCisKK1NFTEVDVCB2MjsKKyAgICAgIHYyICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tCisgKDEwLDIwLDMxLjQwKQorKDEgcm93KQorCitTRUxFQ1Qg KHYxKS4qOworIHggfCB5IHwgIHogICAKKy0tLSstLS0rLS0tLS0tCisgMSB8IDIgfCAzLjE0Ciso MSByb3cpCisKK1NFTEVDVCAodjIpLio7CisgeCAgfCB5ICB8ICAgeiAgIAorLS0tLSstLS0tKy0t LS0tLS0KKyAxMCB8IDIwIHwgMzEuNDAKKygxIHJvdykKKworU0VMRUNUIHYxLnggKyB2MS56Owor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICA0LjE0CisoMSByb3cpCisKK1NFTEVDVCB2Mi54 ICsgdjIuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICA0MS40MAorKDEgcm93KQorCist LSBhY2Nlc3MgdG8gY29tcG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28KKy0tIHNob3Vs ZCBmYWlsCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHYyLng7CitFUlJPUjog IHBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxlIHYyCitTRVQgUk9MRSBUTyBE RUZBVUxUOworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CitSRVZPS0UgVVNB R0UgT04gU0NIRU1BIHN2YXJ0ZXN0IEZST00gdmFyX3Rlc3Rfcm9sZTsKK0RST1AgUk9MRSB2YXJf dGVzdF9yb2xlOworLS0gc2NhbGFyIHZhcmlhYmxlcyBzaG91bGQgbm90IGJlIGluIGNvbmZsaWN0 IHdpdGggcXVhbGlmaWVkIGNvbHVtbgorQ1JFQVRFIFZBUklBQkxFIHZhcnggQVMgdGV4dDsKK1NF TEVDVCB2YXJ4LnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2YXJ4IFdIRVJFIHZhcngucmVsbmFtZSA9 ICdwZ19jbGFzcyc7CisgcmVsbmFtZSAgCistLS0tLS0tLS0tCisgcGdfY2xhc3MKKygxIHJvdykK KworLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4eDsKK0VSUk9SOiAgdmFyaWFibGUgInN2 YXJ0ZXN0LnZhcngiIGlzIG9mIHR5cGUgInRleHQiLCB3aGljaCBpcyBub3QgYSBjb21wb3NpdGUg dHlwZQorTElORSAxOiBTRUxFQ1QgdmFyeC54eHg7CisgICAgICAgICAgICAgICBeCistLSBkb24n dCBhbGxvdyBtdWx0aSBjb2x1bW4gcXVlcnkKK0NSRUFURSBUWVBFIHZhcnRlc3R0cCBBUyAoYTEg aW50LCBiMSBpbnQsIGMxIGludCk7CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgdmFydGVzdHRwOwor LS0gc2hvdWxkIGZhaWwKK0xFVCB2MSA9IChOVUxMOjp2YXJ0ZXN0dHApLio7CitFUlJPUjogIGFz c2lnbm1lbnQgZXhwcmVzc2lvbiByZXR1cm5lZCAzIGNvbHVtbnMKK0xJTkUgMTogTEVUIHYxID0g KE5VTEw6OnZhcnRlc3R0cCkuKjsKKyAgICAgICAgICAgICAgICAgIF4KK0RST1AgVkFSSUFCTEUg djE7CitEUk9QIFRZUEUgdmFydGVzdHRwOworLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVu ZGVyIFJPIHRyYW5zYWN0aW9uCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitM RVQgdmFyeCA9ICdoZWxsbyc7CitDT01NSVQ7CitTRUxFQ1QgdmFyeDsKKyB2YXJ4ICAKKy0tLS0t LS0KKyBoZWxsbworKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhcng7CitDUkVBVEUgVFlQRSB0 MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywgYyB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyB0 MTsKK0xFVCB2MSA9ICgxLCBwaSgpLCAnaGVsbG8nKTsKK1NFTEVDVCB2MTsKKyAgICAgICAgICAg ICB2MSAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwzLjE0 MTU5MjY1MzU4OTc5LGhlbGxvKQorKDEgcm93KQorCitMRVQgdjEuYiA9IDEwLjIyMjI7CitTRUxF Q1QgdjE7CisgICAgICAgIHYxICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsMTAu MjIyMixoZWxsbykKKygxIHJvdykKKworLS0gc2hvdWxkIGZhaWwKK0xFVCB2MS54ID0gMTA7CitF UlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgIngiIG9mIGNvbHVtbiAidjEiIGJlY2F1c2Ug dGhlcmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0YSB0eXBlIHQxCitMSU5FIDE6IExFVCB2MS54 ID0gMTA7CisgICAgICAgICAgICBeCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBUWVBFIHQxOwor LS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2YTEgQVMgbnVtZXJpY1td OworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsxXSA9IDEwLjE7CitTRUxFQ1Qg dmExOworICAgIHZhMSAgICAgCistLS0tLS0tLS0tLS0KKyB7MTAuMSwyLjF9CisoMSByb3cpCisK Ky0tIExFVCB0YXJnZXQgZG9lc24ndCBhbGxvdyBzcmYsIHNob3VsZCBmYWlsCitMRVQgdmExW2dl bmVyYXRlX3NlcmllcygxLDMpXSA9IDEwMDsKK0VSUk9SOiAgc2V0LXJldHVybmluZyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIExFVCB0YXJnZXQgZXhwcmVzc2lvbgorTElORSAxOiBMRVQg dmExW2dlbmVyYXRlX3NlcmllcygxLDMpXSA9IDEwMDsKKyAgICAgICAgICAgICAgICBeCitDUkVB VEUgVFlQRSB0YTIgQVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxF IHZhMiBBUyB0YTI7CitMRVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CitMRVQgdmEy LmEgPSAxMC4yOworU0VMRUNUIHZhMjsKKyAgICAgICAgdmEyICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLQorICgxMC4yLCJ7MC4wLDAuMH0iKQorKDEgcm93KQorCitMRVQgdmEyLmJbMV0g PSAxMC4zOworU0VMRUNUIHZhMjsKKyAgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKDEwLjIsInsxMC4zLDAuMH0iKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxF IHZhMTsKK0RST1AgVkFSSUFCTEUgdmEyOworRFJPUCBUWVBFIHRhMjsKKy0tIGRlZmF1bHQgdmFs dWVzCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEg PSB2MSAqIDI7CitTRUxFQ1QgdjE7CisgICAgICAgIHYxICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLQorIDYuMjgzMTg1MzA3MTc5NTgKKygxIHJvdykKKworQ1JFQVRFIFRZUEUgdDIgQVMgKGEg bnVtZXJpYywgYiB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0MiBERUZBVUxUIChOVUxM LCAnSGVsbG8nKTsKK0xFVCBzdmFydGVzdC52Mi5hID0gcGkoKTsKK1NFTEVDVCB2MjsKKyAgICAg ICAgICAgIHYyICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgzLjE0 MTU5MjY1MzU4OTc5LEhlbGxvKQorKDEgcm93KQorCistLSBzaG91bGQgZmFpbCBkdWUgZGVwZW5k ZW5jeQorRFJPUCBUWVBFIHQyOworRVJST1I6ICBjYW5ub3QgZHJvcCB0eXBlIHQyIGJlY2F1c2Ug b3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHNlc3Npb24gdmFyaWFibGUgdjIg ZGVwZW5kcyBvbiB0eXBlIHQyCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0 aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxF IHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKy0tIHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVN QSB2YXJfc2NoZW1hMTsKK0NSRUFURSBTQ0hFTUEgdmFyX3NjaGVtYTI7CitDUkVBVEUgVkFSSUFC TEUgdmFyX3NjaGVtYTEudmFyMSBBUyBpbnRlZ2VyOworTEVUIHZhcl9zY2hlbWExLnZhcjEgPSAx MDAwOworU0VMRUNUIHZhcl9zY2hlbWExLnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygx IHJvdykKKworQUxURVIgVkFSSUFCTEUgdmFyX3NjaGVtYTEudmFyMSBTRVQgU0NIRU1BIHZhcl9z Y2hlbWEyOworU0VMRUNUIHZhcl9zY2hlbWEyLnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAK KygxIHJvdykKKworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK0FMVEVSIFZBUklBQkxFIHZh cl9zY2hlbWEyLnZhcjEgT1dORVIgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90 ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbCwgbm8gYWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1h Mi52YXIKK1NFTEVDVCB2YXJfc2NoZW1hMi52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3Igc2NoZW1hIHZhcl9zY2hlbWEyCitEUk9QIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjE7 CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyX3NjaGVtYTIKK1NFVCBS T0xFIFRPIERFRkFVTFQ7CitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIFNFVCBTQ0hF TUEgcHVibGljOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFTEVDVCBwdWJsaWMudmFy MTsKKyB2YXIxIAorLS0tLS0tCisgMTAwMAorKDEgcm93KQorCitBTFRFUiBWQVJJQUJMRSBwdWJs aWMudmFyMSBSRU5BTUUgVE8gdmFyMV9yZW5hbWVkOworU0VMRUNUIHB1YmxpYy52YXIxX3JlbmFt ZWQ7CisgdmFyMV9yZW5hbWVkIAorLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIDEwMDAKKygxIHJv dykKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMudmFyMV9yZW5hbWVkOworU0VUIFJPTEUgVE8gREVG QVVMdDsKKy0tIGRlZmF1bHQgcmlnaHRzIHRlc3QKK0FMVEVSIERFRkFVTFQgUFJJVklMRUdFUyBJ TiBTQ0hFTUEgcHVibGljIEdSQU5UIEFMTCBPTiBWQVJJQUJMRVMgVE8gdmFyX3Rlc3Rfcm9sZTsK K0NSRUFURSBWQVJJQUJMRSBwdWJsaWMudmFyMiBBUyBpbnQ7CitTRVQgUk9MRSBUTyB2YXJfdGVz dF9yb2xlOworLS0gc2hvdWxkIGJlIG9rCitMRVQgcHVibGljLnZhcjIgPSAxMDA7CitTRUxFQ1Qg cHVibGljLnZhcjI7CisgdmFyMiAKKy0tLS0tLQorICAxMDAKKygxIHJvdykKKworU0VUIFJPTEUg VE8gREVGQVVMdDsKK0RST1AgVkFSSUFCTEUgcHVibGljLnZhcjI7CitEUk9QIE9XTkVEIEJZIHZh cl90ZXN0X3JvbGU7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBWQVJJQUJMRSB4 eCBBUyB0ZXh0IERFRkFVTFQgJ2hlbGxvJzsKK1NFTEVDVCB4eCwgdXBwZXIoeHgpOworICB4eCAg IHwgdXBwZXIgCistLS0tLS0tKy0tLS0tLS0KKyBoZWxsbyB8IEhFTExPCisoMSByb3cpCisKK0xF VCB4eCA9ICdIaSc7CitTRUxFQ1QgeHg7CisgeHggCistLS0tCisgSGkKKygxIHJvdykKKworRFJP UCBWQVJJQUJMRSB4eDsKKy0tIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCB0ZXN0cworQ1JFQVRF IFZBUklBQkxFIHQxIEFTIGludCBERUZBVUxUIC0xIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVDsK K0JFR0lOOworICBTRUxFQ1QgdDE7CisgdDEgCistLS0tCisgLTEKKygxIHJvdykKKworICBMRVQg dDEgPSAxMDA7CisgIFNFTEVDVCB0MTsKKyB0MSAgCistLS0tLQorIDEwMAorKDEgcm93KQorCitD T01NSVQ7CitTRUxFQ1QgdDE7CisgdDEgCistLS0tCisgLTEKKygxIHJvdykKKworQkVHSU47Cisg IFNFTEVDVCB0MTsKKyB0MSAKKy0tLS0KKyAtMQorKDEgcm93KQorCisgIExFVCB0MSA9IDEwMDsK KyAgU0VMRUNUIHQxOworIHQxICAKKy0tLS0tCisgMTAwCisoMSByb3cpCisKK1JPTExCQUNLOwor U0VMRUNUIHQxOworIHQxIAorLS0tLQorIC0xCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdDE7 CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgaW50IERFRkFVTFQgMDsKK0NSRUFURSBWQVJJQUJMRSB2 MiBBUyB0ZXh0IERFRkFVTFQgJ25vbmUnOworTEVUIHYxID0gMTAwOworTEVUIHYyID0gJ0hlbGxv JzsKK1NFTEVDVCB2MSwgdjI7CisgdjEgIHwgIHYyICAgCistLS0tLSstLS0tLS0tCisgMTAwIHwg SGVsbG8KKygxIHJvdykKKworTEVUIHYxID0gREVGQVVMVDsKK0xFVCB2MiA9IERFRkFVTFQ7CitT RUxFQ1QgdjEsIHYyOworIHYxIHwgIHYyICAKKy0tLS0rLS0tLS0tCisgIDAgfCBub25lCisoMSBy b3cpCisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworLS0gT04gQ09NTUlU IERST1AgdGVzdHMKKy0tIHNob3VsZCBiZSAwIGFsd2F5cworU0VMRUNUIGNvdW50KCopIEZST00g cGdfdmFyaWFibGU7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworQ1JFQVRF IFRFTVAgVkFSSUFCTEUgZyBBUyBpbnQgT04gQ09NTUlUIERST1A7CitTRUxFQ1QgY291bnQoKikg RlJPTSBwZ192YXJpYWJsZTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitC RUdJTjsKKyAgQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZyBBUyBpbnQgT04gQ09NTUlUIERST1A7CitD T01NSVQ7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZTsKKyBjb3VudCAKKy0tLS0t LS0KKyAgICAgMAorKDEgcm93KQorCitCRUdJTjsKKyAgQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZyBB UyBpbnQgT04gQ09NTUlUIERST1A7CitST0xMQkFDSzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ZhcmlhYmxlOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0JFR0lOOwor ICBDUkVBVEUgVEVNUCBWQVJJQUJMRSBnIEFTIGludCBPTiBDT01NSVQgRFJPUDsKKyAgTEVUIGcg PSAxOworICBESVNDQVJEIFZBUklBQkxFUzsKK0NPTU1JVDsKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ZhcmlhYmxlOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0JFR0lO OworICBDUkVBVEUgVEVNUCBWQVJJQUJMRSBnIEFTIGludCBPTiBDT01NSVQgRFJPUDsKKyAgTEVU IGcgPSAxOworICBESVNDQVJEIFZBUklBQkxFUzsKK1JPTExCQUNLOworU0VMRUNUIGNvdW50KCop IEZST00gcGdfdmFyaWFibGU7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKwor LS0gRW5jb3VyYWdlIHVzZSBvZiBwYXJhbGxlbCBwbGFucworU0VUIHBhcmFsbGVsX3NldHVwX2Nv c3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIg PSAyOworLS0gdGVzdCBvbiBxdWVyeSB3aXRoIHdvcmtlcnMKK0NSRUFURSBUQUJMRSBzdmFyX3Rl c3QoYSBpbnQpOworSU5TRVJUIElOVE8gc3Zhcl90ZXN0IFNFTEVDVCAqIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwMCk7CitBTkFMWVpFIHN2YXJfdGVzdDsKK0NSRUFURSBWQVJJQUJMRSB6ZXJv IGludDsKK0xFVCB6ZXJvID0gMDsKKy0tIHBhcmFsbGVsIHdvcmtlcnMgc2hvdWxkIGJlIHVzZWQK K0VYUExBSU4gKGNvc3RzIG9mZikgU0VMRUNUIGNvdW50KCopIEZST00gc3Zhcl90ZXN0IFdIRVJF IGElMTAgPSB6ZXJvOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAg IC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzdmFyX3Rlc3QKKyAgICAgICAgICAgICAgIEZpbHRl cjogKChhICUgMTApID0gemVybykKKyg1IHJvd3MpCisKKy0tIHJlc3VsdCBzaG91bGQgYmUgMTAw CitTRUxFQ1QgY291bnQoKikgRlJPTSBzdmFyX3Rlc3QgV0hFUkUgYSUxMCA9IHplcm87CisgY291 bnQgCistLS0tLS0tCisgICAxMDAKKygxIHJvdykKKworTEVUIHplcm8gPSAoU0VMRUNUIGNvdW50 KCopIEZST00gc3Zhcl90ZXN0KTsKKy0tIHJlc3VsdCBzaG91bGQgYmUgMTAwMAorU0VMRUNUIHpl cm87CisgemVybyAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworLS0gcGFyYWxsZWwgd29ya2Vy cyBzaG91bGQgYmUgdXNlZAorRVhQTEFJTiAoY29zdHMgb2ZmKSBMRVQgemVybyA9IChTRUxFQ1Qg Y291bnQoKikgRlJPTSBzdmFyX3Rlc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNFVCBTRVNTSU9OIFZBUklBQkxFCisg UmVzdWx0CisgICBJbml0UGxhbiAxIChyZXR1cm5zICQxKQorICAgICAtPiAgRmluYWxpemUgQWdn cmVnYXRlCisgICAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgICAgV29ya2VycyBQ bGFubmVkOiAyCisgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc3Zhcl90ZXN0CisoOCBy b3dzKQorCistLSB0ZXN0IGZvciBkZXBlbmRlbmN5IG9uIHJlbGF0aW9uCitDUkVBVEUgVkFSSUFC TEUgdl90YWJsZSBBUyBzdmFyX3Rlc3Q7CitBTFRFUiBUQUJMRSBzdmFyX3Rlc3QgQUxURVIgQ09M VU1OIGEgVFlQRSB0ZXh0OworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdGFibGUgInN2YXJfdGVzdCIg YmVjYXVzZSBzZXNzaW9uIHZhcmlhYmxlICJzdmFydGVzdC52X3RhYmxlIiB1c2VzIGl0CitEUk9Q IFZBUklBQkxFIHZfdGFibGU7CitEUk9QIFRBQkxFIHN2YXJfdGVzdDsKK0RST1AgVkFSSUFCTEUg emVybzsKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9j b3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CistLSB1c2UgdmFyaWFibGVzIGluIHByZXBhcmVkIHN0 YXRlbWVudHMKK0NSRUFURSBWQVJJQUJMRSB2IEFTIG51bWVyaWM7CitMRVQgdiA9IDMuMTQ7Cist LSB1c2UgdmFyaWFibGVzIGluIHZpZXdzCitDUkVBVEUgVklFVyB2diBBUyBTRUxFQ1QgQ09BTEVT Q0UodiwgMCkgKyAxMDAwIEFTIHJlc3VsdDsKK1NFTEVDVCAqIEZST00gdnY7CisgcmVzdWx0ICAK Ky0tLS0tLS0tLQorIDEwMDMuMTQKKygxIHJvdykKKworLS0gc3RhcnQgYSBuZXcgc2Vzc2lvbgor XGMKK1NFVCBzZWFyY2hfcGF0aCB0byBzdmFydGVzdDsKK1NFTEVDVCAqIEZST00gdnY7CisgcmVz dWx0IAorLS0tLS0tLS0KKyAgIDEwMDAKKygxIHJvdykKKworTEVUIHYgPSAzLjE0OworU0VMRUNU ICogRlJPTSB2djsKKyByZXN1bHQgIAorLS0tLS0tLS0tCisgMTAwMy4xNAorKDEgcm93KQorCist LSBzaG91bGQgZmFpbCwgZGVwZW5kZW5jeQorRFJPUCBWQVJJQUJMRSB2OworRVJST1I6ICBjYW5u b3QgZHJvcCBzZXNzaW9uIHZhcmlhYmxlIHYgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBv biBpdAorREVUQUlMOiAgdmlldyB2diBkZXBlbmRzIG9uIHNlc3Npb24gdmFyaWFibGUgdgorSElO VDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRv by4KKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2IENBU0NBREU7CitOT1RJQ0U6ICBk cm9wIGNhc2NhZGVzIHRvIHZpZXcgdnYKKy0tIG90aGVyIGZlYXR1cmVzCitDUkVBVEUgVkFSSUFC TEUgZHQgQVMgaW50ZWdlciBERUZBVUxUIDA7CitMRVQgZHQgPSAxMDA7CitTRUxFQ1QgZHQ7Cisg ZHQgIAorLS0tLS0KKyAxMDAKKygxIHJvdykKKworRElTQ0FSRCBWQVJJQUJMRVM7CitTRUxFQ1Qg ZHQ7CisgZHQgCistLS0tCisgIDAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBkdDsKKy0tIE5P VCBOVUxMCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgaW50IE5PVCBOVUxMOworQ1JFQVRFIFZBUklB QkxFIHYyIEFTIGludCBOT1QgTlVMTCBERUZBVUxUIE5VTEw7CistLSBzaG91bGQgZmFpbAorU0VM RUNUIHYxOworRVJST1I6ICBudWxsIHZhbHVlIGlzIG5vdCBhbGxvd2VkIGZvciBOT1QgTlVMTCBz ZXNzaW9uIHZhcmlhYmxlICJzdmFydGVzdC52MSIKK0RFVEFJTDogIFRoZSBzZXNzaW9uIHZhcmlh YmxlIHdhcyBub3QgaW5pdGlhbGl6ZWQgeWV0LgorU0VMRUNUIHYyOworRVJST1I6ICBudWxsIHZh bHVlIGlzIG5vdCBhbGxvd2VkIGZvciBOT1QgTlVMTCBzZXNzaW9uIHZhcmlhYmxlICJzdmFydGVz dC52MiIKK0xFVCB2MSA9IE5VTEw7CitFUlJPUjogIG51bGwgdmFsdWUgaXMgbm90IGFsbG93ZWQg Zm9yIE5PVCBOVUxMIHNlc3Npb24gdmFyaWFibGUgInN2YXJ0ZXN0LnYxIgorTEVUIHYyID0gTlVM TDsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpcyBub3QgYWxsb3dlZCBmb3IgTk9UIE5VTEwgc2Vzc2lv biB2YXJpYWJsZSAic3ZhcnRlc3QudjIiCitMRVQgdjEgPSBERUZBVUxUOworRVJST1I6ICBudWxs IHZhbHVlIGlzIG5vdCBhbGxvd2VkIGZvciBOT1QgTlVMTCBzZXNzaW9uIHZhcmlhYmxlICJzdmFy dGVzdC52MSIKK0xFVCB2MiA9IERFRkFVTFQ7CitFUlJPUjogIG51bGwgdmFsdWUgaXMgbm90IGFs bG93ZWQgZm9yIE5PVCBOVUxMIHNlc3Npb24gdmFyaWFibGUgInN2YXJ0ZXN0LnYyIgorLS0gc2hv dWxkIGJlIG9rCitMRVQgdjEgPSAxMDA7CitMRVQgdjIgPSAxMDAwOworU0VMRUNUIHYxLCB2MjsK KyB2MSAgfCAgdjIgIAorLS0tLS0rLS0tLS0tCisgMTAwIHwgMTAwMAorKDEgcm93KQorCitEUk9Q IFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKK0NSRUFURSBWQVJJQUJMRSB0diBBUyBp bnQ7CitDUkVBVEUgVkFSSUFCTEUgSUYgTk9UIEVYSVNUUyB0diBBUyBpbnQ7CitOT1RJQ0U6ICBz ZXNzaW9uIHZhcmlhYmxlICJ0diIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nCitEUk9QIFZBUklB QkxFIHR2OworQ1JFQVRFIElNTVVUQUJMRSBWQVJJQUJMRSBpdiBBUyBpbnQgREVGQVVMVCAxMDA7 CitTRUxFQ1QgaXY7CisgaXYgIAorLS0tLS0KKyAxMDAKKygxIHJvdykKKworLS0gc2hvdWxkIGZh aWw7CitMRVQgaXYgPSAxMDAwMDsKK0VSUk9SOiAgc2Vzc2lvbiB2YXJpYWJsZSAic3ZhcnRlc3Qu aXYiIGlzIGRlY2xhcmVkIElNTVVUQUJMRQorRFJPUCBWQVJJQUJMRSBpdjsKKy0tIGRpZmZlcmVu dCBvcmRlcgorQ1JFQVRFIElNTVVUQUJMRSBWQVJJQUJMRSBpdiBBUyBpbnQgREVGQVVMVCAxMDA7 CistLSBzaG91bGQgdG8gZmFpbAorTEVUIGl2ID0gMTAwMDA7CitFUlJPUjogIHNlc3Npb24gdmFy aWFibGUgInN2YXJ0ZXN0Lml2IiBpcyBkZWNsYXJlZCBJTU1VVEFCTEUKKy0tIHNob3VsZCBiZSBv aworU0VMRUNUIGl2OworIGl2ICAKKy0tLS0tCisgMTAwCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgaXY7CitDUkVBVEUgSU1NVVRBQkxFIFZBUklBQkxFIGl2IEFTIGludDsKKy0tIHNob3VsZCBi ZSBvaworTEVUIGl2ID0gTlVMTDsKKy0tIHNob3VsZCBmYWlsCitMRVQgaXYgPSBOVUxMOworRVJS T1I6ICBzZXNzaW9uIHZhcmlhYmxlICJzdmFydGVzdC5pdiIgaXMgZGVjbGFyZWQgSU1NVVRBQkxF CitEUk9QIFZBUklBQkxFIGl2OworLS0gY3JlYXRlIHZhcmlhYmxlIGluc2lkZSBwbHBnc3FsIGJs b2NrCitETyAkJAorQkVHSU4KKyAgQ1JFQVRFIFZBUklBQkxFIGRvX3Rlc3Rfc3ZhciBBUyBkYXRl IERFRkFVTFQgJzIwMDAtMDEtMDEnOworRU5EOworJCQ7CitTRUxFQ1QgZG9fdGVzdF9zdmFyOwor IGRvX3Rlc3Rfc3ZhciAKKy0tLS0tLS0tLS0tLS0tCisgMDEtMDEtMjAwMAorKDEgcm93KQorCitE Uk9QIFZBUklBQkxFIGRvX3Rlc3Rfc3ZhcjsKKy0tIHNob3VsZCBmYWlsCitDUkVBVEUgSU1NVVRB QkxFIFZBUklBQkxFIHh4IEFTIGludCBOT1QgTlVMTDsKK0VSUk9SOiAgSU1NVVRBQkxFIE5PVCBO VUxMIHZhcmlhYmxlIHJlcXVpcmVzIGRlZmF1bHQgZXhwcmVzc2lvbgorLS0gUkVBU1NJR04gT1dO RUQgdGVzdAorQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTE7CitDUkVBVEUgUk9MRSB2YXJfdGVz dF9yb2xlMjsKK0NSRUFURSBWQVJJQUJMRSB4eHhfdmFyIEFTIGludDsKK0FMVEVSIFZBUklBQkxF IHh4eF92YXIgT1dORVIgVE8gdmFyX3Rlc3Rfcm9sZTE7CitSRUFTU0lHTiBPV05FRCBCWSB2YXJf dGVzdF9yb2xlMSB0byB2YXJfdGVzdF9yb2xlMjsKK1NFTEVDVCB2YXJvd25lcjo6cmVncm9sZSBG Uk9NIHBnX3ZhcmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAneHh4X3Zhcic7CisgICAgdmFyb3duZXIg ICAgCistLS0tLS0tLS0tLS0tLS0tCisgdmFyX3Rlc3Rfcm9sZTIKKygxIHJvdykKKworRFJPUCBP V05FRCBCWSB2YXJfdGVzdF9yb2xlMTsKK0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlMTsKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAneHh4X3Zhcic7Cisg Y291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBPV05FRCBCWSB2YXJfdGVz dF9yb2xlMjsKK0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlMjsKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ZhcmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAneHh4X3Zhcic7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworLS0gY3JlYXRpbmcsIGRyb3BwaW5nIHRlbXBvcmFyeSB2YXJp YWJsZQorQkVHSU47CitDUkVBVEUgVEVNUCBWQVJJQUJMRSB0ZW1wdmFyIEFTIElOVCBPTiBDT01N SVQgRFJPUDsKK0xFVCB0ZW1wdmFyID0gMTAwOworU0FWRVBPSU5UIHMxOworRFJPUCBWQVJJQUJM RSB0ZW1wdmFyOworUk9MTEJBQ0sgVE8gczE7CitTRUxFQ1QgdGVtcHZhcjsKKyB0ZW1wdmFyIAor LS0tLS0tLS0tCisgICAgIDEwMAorKDEgcm93KQorCitDT01NSVQ7CistLSBzaG91bGQgdG8gZmFp bAorTEVUIHRlbXB2YXIgPSAxMDA7CitFUlJPUjogIHNlc3Npb24gdmFyaWFibGUgInRlbXB2YXIi IGRvZXNuJ3QgZXhpc3QKK0xJTkUgMTogTEVUIHRlbXB2YXIgPSAxMDA7CisgICAgICAgICAgICBe CitCRUdJTjsKK1NBVkVQT0lOVCBzMTsKK0NSRUFURSBURU1QIFZBUklBQkxFIHRlbXB2YXIgQVMg SU5UIE9OIENPTU1JVCBEUk9QOworTEVUIHRlbXB2YXIgPSAxMDA7CitST0xMQkFDSyBUTyBzMTsK K0NPTU1JVDsKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdGVtcHZhciA9IDEwMDsKK0VSUk9SOiAg c2Vzc2lvbiB2YXJpYWJsZSAidGVtcHZhciIgZG9lc24ndCBleGlzdAorTElORSAxOiBMRVQgdGVt cHZhciA9IDEwMDsKKyAgICAgICAgICAgIF4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludDsK K0xFVCB2YXIxID0gMTAwOworQkVHSU47CitEUk9QIFZBUklBQkxFIHZhcjE7CitST0xMQkFDSzsK K1NFTEVDVCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAgMTAwCisoMSByb3cpCisKK0RST1AgVkFS SUFCTEUgdmFyMTsKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludCBERUZBVUxUIDEwMDsKK0NP TU1FTlQgT04gVkFSSUFCTEUgdmFyMSBJUyAnc29tZSB2YXJpYWJsZSBjb21tZW50JzsKK1NFTEVD VCBwZ19jYXRhbG9nLm9ial9kZXNjcmlwdGlvbihvaWQsICdwZ192YXJpYWJsZScpIEZST00gcGdf dmFyaWFibGUgV0hFUkUgdmFybmFtZSA9ICd2YXIxJzsKKyAgICBvYmpfZGVzY3JpcHRpb24gICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNvbWUgdmFyaWFibGUgY29tbWVudAorKDEgcm93 KQorCitEUk9QIFZBUklBQkxFIHZhcjE7CitDUkVBVEUgVEFCTEUgeHh0YWIoYXZhciBpbnQpOwor Q1JFQVRFIFRZUEUgeHh0eXBlIEFTIChhdmFyIGludCk7CitDUkVBVEUgVkFSSUFCTEUgeHh0YWIg QVMgeHh0eXBlOworSU5TRVJUIElOVE8geHh0YWIgVkFMVUVTKDEwKTsKKy0tIGl0IGlzIGFtYmln dW91cywgYnV0IGNvbHVtbnMgYXJlIHByZWZlcnJlZAorLS0gdmFyaWFibGUgaXMgc2hhZG93ZWQK K1NFTEVDVCB4eHRhYi5hdmFyIEZST00geHh0YWI7CisgYXZhciAKKy0tLS0tLQorICAgMTAKKygx IHJvdykKKworU0VUIHNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0eV93YXJuaW5nIFRPIG9uOwor U0VMRUNUIHh4dGFiLmF2YXIgRlJPTSB4eHRhYjsKK1dBUk5JTkc6ICBzZXNzaW9uIHZhcmlhYmxl ICJ4eHRhYi5hdmFyIiBpcyBzaGFkb3dlZAorTElORSAxOiBTRUxFQ1QgeHh0YWIuYXZhciBGUk9N IHh4dGFiOworICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU2Vzc2lvbiB2YXJpYWJsZXMgY2Fu IGJlIHNoYWRvd2VkIGJ5IGNvbHVtbnMsIHJvdXRpbmUncyB2YXJpYWJsZXMgYW5kIHJvdXRpbmUn cyBhcmd1bWVudHMgd2l0aCB0aGUgc2FtZSBuYW1lLgorIGF2YXIgCistLS0tLS0KKyAgIDEwCiso MSByb3cpCisKK1NFVCBzZWFyY2hfcGF0aCA9IHN2YXJ0ZXN0OworQ1JFQVRFIFZBUklBQkxFIHRl c3R2YXIgYXMgaW50OworLS0gcGxwZ3NxbCB2YXJpYWJsZXMgYXJlIHByZWZlcnJlZCBhZ2FpbnN0 IHNlc3Npb24gdmFyaWFibGVzCitETyAkJAorPDxteWJsb2NrPj4KK0RFQ0xBUkUgdGVzdHZhciBp bnQ7CitCRUdJTgorICAtLSBzaG91bGQgYmUgb2sgd2l0aG91dCB3YXJuaW5nCisgIExFVCB0ZXN0 dmFyID0gMTAwOworICAtLSBzaG91bGQgYmUgb2sgd2l0aG91dCB3YXJuaW5nCisgIHRlc3R2YXIg Oj0gMTAwMDsKKyAgLS0gc2hvdWxkIGJlIG9rIHdpdGhvdXQgd2FybmluZworICBSQUlTRSBOT1RJ Q0UgJ3Nlc3Npb24gdmFyaWFibGUgaXMgJScsIHN2YXJ0ZXN0LnRlc3R2YXI7CisgIC0tIHNob3Vs ZCBiZSBvayB3aXRob3V0IHdhcm5pbmcKKyAgUkFJU0UgTk9USUNFICdwbHBnc3FsIHZhcmlhYmxl IGlzICUnLCBteWJsb2NrLnRlc3R2YXI7CisgIC0tIHNob3VsZCB0byBwcmludCBwbHBnc3FsIHZh cmlhYmxlIHdpdGggd2FybmluZworICBSQUlTRSBOT1RJQ0UgJ3ZhcmlhYmxlIGlzICUnLCB0ZXN0 dmFyOworRU5EOworJCQ7CitXQVJOSU5HOiAgc2Vzc2lvbiB2YXJpYWJsZSAidGVzdHZhciIgaXMg c2hhZG93ZWQKK0xJTkUgMTogdGVzdHZhciA6PSAxMDAwCisgICAgICAgIF4KK0RFVEFJTDogIFNl c3Npb24gdmFyaWFibGVzIGNhbiBiZSBzaGFkb3dlZCBieSBjb2x1bW5zLCByb3V0aW5lJ3MgdmFy aWFibGVzIGFuZCByb3V0aW5lJ3MgYXJndW1lbnRzIHdpdGggdGhlIHNhbWUgbmFtZS4KK1FVRVJZ OiAgdGVzdHZhciA6PSAxMDAwCitOT1RJQ0U6ICBzZXNzaW9uIHZhcmlhYmxlIGlzIDEwMAorTk9U SUNFOiAgcGxwZ3NxbCB2YXJpYWJsZSBpcyAxMDAwCitXQVJOSU5HOiAgc2Vzc2lvbiB2YXJpYWJs ZSAidGVzdHZhciIgaXMgc2hhZG93ZWQKK0xJTkUgMTogdGVzdHZhcgorICAgICAgICBeCitERVRB SUw6ICBTZXNzaW9uIHZhcmlhYmxlcyBjYW4gYmUgc2hhZG93ZWQgYnkgY29sdW1ucywgcm91dGlu ZSdzIHZhcmlhYmxlcyBhbmQgcm91dGluZSdzIGFyZ3VtZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUu CitRVUVSWTogIHRlc3R2YXIKK05PVElDRTogIHZhcmlhYmxlIGlzIDEwMDAKK0RST1AgVkFSSUFC TEUgdGVzdHZhcjsKK1NFVCBzZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyBUTyBk ZWZhdWx0OworLS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgYXZhciBGUk9NIHh4dGFiOworIGF2YXIg CistLS0tLS0KKyAgIDEwCisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuYXZhciBB UyBpbnQ7CistLSBzaG91bGQgYmUgb2ssIHNlZSB0aGUgdGFibGUKK1NFTEVDVCBhdmFyIEZST00g eHh0YWI7CisgYXZhciAKKy0tLS0tLQorICAgMTAKKygxIHJvdykKKworLS0gc2hvdWxkIGJlIG9r CitTRUxFQ1QgcHVibGljLmF2YXIgRlJPTSB4eHRhYjsKKyBhdmFyIAorLS0tLS0tCisgICAgIAor KDEgcm93KQorCitEUk9QIFZBUklBQkxFIHh4dGFiOworU0VMRUNUIHh4dGFiLmF2YXIgRlJPTSB4 eHRhYjsKKyBhdmFyIAorLS0tLS0tCisgICAxMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHB1 YmxpYy5hdmFyOworRFJPUCBUWVBFIHh4dHlwZTsKK0RST1AgVEFCTEUgeHh0YWI7CistLSB0ZXN0 IG9mIHBsYW4gY2FjaGUgaW52YWxpZGF0aW9uCitDUkVBVEUgVkFSSUFCTEUgeHggQVMgaW50Owor U0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKK1BSRVBBUkUgcHAgQVMg U0VMRUNUIHh4OworRVhFQ1VURSBwcDsKKyB4eCAKKy0tLS0KKyAgIAorKDEgcm93KQorCitEUk9Q IFZBUklBQkxFIHh4OworQ1JFQVRFIFZBUklBQkxFIHh4IEFTIGludDsKKy0tIHNob3VsZCB0byB3 b3JrCitFWEVDVVRFIHBwOworIHh4IAorLS0tLQorICAgCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgeHg7CitERUFMTE9DQVRFIHBwOworU0VUIHBsYW5fY2FjaGVfbW9kZSA9IERFRkFVTFQ7CitD UkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworQ1JFQVRFIFNDSEVNQSB2YXJ0ZXN0OworR1JBTlQg VVNBR0UgT04gU0NIRU1BIHZhcnRlc3QgVE8gdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBWQVJJQUJM RSB2YXJ0ZXN0LnggQVMgaW50OworQ1JFQVRFIFZBUklBQkxFIHZhcnRlc3QueSBBUyBpbnQ7CitM RVQgdmFydGVzdC54ID0gMTAwOworTEVUIHZhcnRlc3QueSA9IDEwMTsKK0dSQU5UIFNFTEVDVCBP TiBBTEwgVkFSSUFCTEVTIElOIFNDSEVNQSB2YXJ0ZXN0IFRPIHZhcl90ZXN0X3JvbGU7CitTRVQg Uk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHZhcnRlc3QueCwgdmFydGVzdC55OworICB4 ICB8ICB5ICAKKy0tLS0tKy0tLS0tCisgMTAwIHwgMTAxCisoMSByb3cpCisKK1NFVCBST0xFIFRP IERFRkFVTFQ7CitSRVZPS0UgU0VMRUNUIE9OIEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIHZhcnRl c3QgRlJPTSB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNo b3VsZCB0byBmYWlsCitTRUxFQ1QgdmFydGVzdC54OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSB4CitTRUxFQ1QgdmFydGVzdC55OworRVJST1I6ICBwZXJt aXNzaW9uIGRlbmllZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSB5CitTRVQgUk9MRSBUTyBERUZBVUxU OworRFJPUCBWQVJJQUJMRSB2YXJ0ZXN0LngsIHZhcnRlc3QueTsKK0RST1AgU0NIRU1BIHZhcnRl c3Q7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKy0tIHRlc3QgY2FjaGVkIHBsYW4KK0NSRUFU RSBWQVJJQUJMRSB2MSBBUyB0ZXh0OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIGludDsKK0NSRUFU RSBWQVJJQUJMRSB2MyBBUyBpbnQ7CitMRVQgdjEgPSAndGVzdCc7CitMRVQgdjIgPSAxMDsKK0xF VCB2MyA9IDU7CitQUkVQQVJFIHExIEFTIFNFTEVDVCB2MSB8fCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIHYyKSBnKGkpIFdIRVJFIGkgSU4gKHYyLCB2Myk7CitTRVQgcGxhbl9jYWNoZV9tb2Rl IHRvIGZvcmNlX2dlbmVyaWNfcGxhbjsKK0VYRUNVVEUgcTE7CisgP2NvbHVtbj8gCistLS0tLS0t LS0tCisgdGVzdDUKKyB0ZXN0MTAKKygyIHJvd3MpCisKK0VYUExBSU4gRVhFQ1VURSBxMTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIGcgIChjb3N0PTAuMDAuLjAuMTQgcm93cz0yIHdpZHRoPTMyKQorICAgRmlsdGVyOiAo aSA9IEFOWSAoQVJSQVlbdjIsIHYzXSkpCisoMiByb3dzKQorCistLSBkZXBlbmRlY3kgY2hlY2sK K0RST1AgVkFSSUFCTEUgdjM7CistLSByZWNyZWF0ZSB2MyBhZ2FpbgorQ1JFQVRFIFZBUklBQkxF IHYzIEFTIGludCBERUZBVUxUIDY7CistLSBzaG91bGQgdG8gd29yaywgdGhlIHBsYW4gc2hvdWxk IGJlIHJlY3JlYXRlZAorRVhFQ1VURSBxMTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0ZXN0 NgorIHRlc3QxMAorKDIgcm93cykKKworREVBTExPQ0FURSBxMTsKKy0tIGZpbGwgdjEgYnkgbG9u ZyB0ZXh0CitMRVQgdjEgPSByZXBlYXQoJyAnLCAxMDAwMCk7CitQUkVQQVJFIHExIEFTIFNFTEVD VCBsZW5ndGgodjEpOworRVhFQ1VURSBxMTsKKyBsZW5ndGggCistLS0tLS0tLQorICAxMDAwMAor KDEgcm93KQorCitMRVQgdjEgPSByZXBlYXQoJyAnLCA1MDAwKTsKK0VYRUNVVEUgcTE7CisgbGVu Z3RoIAorLS0tLS0tLS0KKyAgIDUwMDAKKygxIHJvdykKKworREVBTExPQ0FURSBxMTsKK1NFVCBw bGFuX2NhY2hlX21vZGUgdG8gZGVmYXVsdDsKK0RST1AgVkFSSUFCTEUgdjEsIHYyLCB2MzsKK0NS RUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnYxIEFTIGlu dCBERUZBVUxUIDA7CistLSBjaGVjayBhY2wgd2hlbiB2YXJpYWJsZSBpcyBhY2Vzc2VkIGJ5IHNp bXBsZSBldmFsIGV4cHIgbWV0aG9kCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwdWJsaWMu ZnhfdmFyKGludCkKK1JFVFVSTlMgaW50IEFTICQkCitERUNMQVJFIHh4IGludDsKK0JFR0lOCisg IHh4IDo9IHB1YmxpYy52MSArICQxOworICBSRVRVUk4geHg7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworLS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLmZ4X3ZhcigwKTsKKyBmeF92 YXIgCistLS0tLS0tLQorICAgICAgMAorKDEgcm93KQorCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9y b2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBwdWJsaWMuZnhfdmFyKDApOworRVJST1I6 ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSB2MQorQ09OVEVYVDogIFBM L3BnU1FMIGZ1bmN0aW9uIHB1YmxpYy5meF92YXIoaW50ZWdlcikgbGluZSA0IGF0IGFzc2lnbm1l bnQKK1NFVCBST0xFIFRPIGRlZmF1bHQ7CitHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgcHVibGlj LnYxIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hv dWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLmZ4X3ZhcigwKTsKKyBmeF92YXIgCistLS0tLS0tLQor ICAgICAgMAorKDEgcm93KQorCitTRVQgUk9MRSBUTyBkZWZhdWx0OworUkVWT0tFIFNFTEVDVCBP TiBWQVJJQUJMRSBwdWJsaWMudjEgRlJPTSB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFy X3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCBiZSBmYWlsCitTRUxFQ1QgcHVibGljLmZ4X3ZhcigwKTsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgdjEKK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBwdWJsaWMuZnhfdmFyKGludGVnZXIpIGxpbmUgNCBhdCBh c3NpZ25tZW50CitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBGVU5DVElPTiBwdWJsaWMuZnhf dmFyKGludCk7CitEUk9QIFZBUklBQkxFIHB1YmxpYy52MTsKK0RST1AgUk9MRSB2YXJfdGVzdF9y b2xlOworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdGVzdF90eXBlIEFTIChhIGludCwgYiBpbnQs IGMgbnVtZXJpYyk7CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGljLnN2YXJf dGVzdF90eXBlOworTEVUIHB1YmxpYy5zdmFyID0gUk9XKDEwLDIwLDMwKTsKK1NFTEVDVCBwdWJs aWMuc3ZhcjsKKyAgICBzdmFyICAgIAorLS0tLS0tLS0tLS0tCisgKDEwLDIwLDMwKQorKDEgcm93 KQorCitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBEUk9QIEFUVFJJQlVURSBjOwor LS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLnN2YXI7CisgIHN2YXIgICAKKy0tLS0tLS0t LQorICgxMCwyMCkKKygxIHJvdykKKworQUxURVIgVFlQRSBwdWJsaWMuc3Zhcl90ZXN0X3R5cGUg QUREIEFUVFJJQlVURSBjIGludDsKKy0tIHNob3VsZCBiZSBvaworU0VMRUNUIHB1YmxpYy5zdmFy OworICAgc3ZhciAgIAorLS0tLS0tLS0tLQorICgxMCwyMCwpCisoMSByb3cpCisKK0xFVCBwdWJs aWMuc3ZhciA9IFJPVygxMCwyMCwzMCk7CistLSBzaG91bGQgYmUgb2sgYWdhaW4gZm9yIG5ldyB2 YWx1ZQorU0VMRUNUIHB1YmxpYy5zdmFyOworICAgIHN2YXIgICAgCistLS0tLS0tLS0tLS0KKyAo MTAsMjAsMzApCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRZ UEUgcHVibGljLnN2YXJfdGVzdF90eXBlOworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFT IGludDsKK3NlbGVjdCBvaWQgYXMgdmFyaWQgZnJvbSBwZ192YXJpYWJsZSB3aGVyZSB2YXJuYW1l ID0gJ3N2YXInIGFuZCB2YXJuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlIFxnc2V0 CitTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMo KTsKKyBzY2hlbWEgfCBuYW1lIHwgcmVtb3ZlZCAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0K KygwIHJvd3MpCisKK0xFVCBwdWJsaWMuc3ZhciA9IDEwMDsKK1NFTEVDVCBzY2hlbWEsIG5hbWUs IHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3ZhcmlhYmxlcygpOworIHNjaGVtYSB8IG5hbWUgfCBy ZW1vdmVkIAorLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLQorIHB1YmxpYyB8IHN2YXIgfCBmCiso MSByb3cpCisKK0JFR0lOOworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKKy0tIHZhbHVlIHNo b3VsZCBiZSBpbiBtZW1vcnkKK1NFTEVDVCBzY2hlbWEsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9u X3ZhcmlhYmxlcygpOworIHNjaGVtYSB8IHJlbW92ZWQgCistLS0tLS0tLSstLS0tLS0tLS0KKyAg ICAgICAgfCB0CisoMSByb3cpCisKK1JPTExCQUNLOworLS0gdmFsdWUgc2hvdWxkIGJlIGluIG1l bW9yeQorU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Npb25fdmFyaWFi bGVzKCkgZiBXSEVSRSBmLnZhcmlkID0gOnZhcmlkOworIHNjaGVtYSB8IG5hbWUgfCByZW1vdmVk IAorLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLQorIHB1YmxpYyB8IHN2YXIgfCBmCisoMSByb3cp CisKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKyBzdmFyIAorLS0tLS0tCisgIDEwMAorKDEgcm93KQor CitCRUdJTjsKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CistLSB2YWx1ZSBzaG91bGQgYmUg aW4gbWVtb3J5CitTRUxFQ1Qgc2NoZW1hLCBuYW1lID0gOnZhcmlkOjp0ZXh0IEFTIG9rLCByZW1v dmVkIEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKSBmIFdIRVJFIGYudmFyaWQgPSA6dmFyaWQ7 OworIHNjaGVtYSB8IG9rIHwgcmVtb3ZlZCAKKy0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tCisgICAg ICAgIHwgdCAgfCB0CisoMSByb3cpCisKK0NPTU1JVDsKKy0tIHRoZSBtZW1vcnkgc2hvdWxkIGJl IGNsZWFuOworU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Npb25fdmFy aWFibGVzKCkgV0hFUkUgZi52YXJpZCA9IDp2YXJpZDsKK0VSUk9SOiAgbWlzc2luZyBGUk9NLWNs YXVzZSBlbnRyeSBmb3IgdGFibGUgImYiCitMSU5FIDE6IC4uLiwgbmFtZSwgcmVtb3ZlZCBGUk9N IHBnX3Nlc3Npb25fdmFyaWFibGVzKCkgV0hFUkUgZi52YXJpZCA9IC4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0JFR0lO OworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIGludDsKK3NlbGVjdCBvaWQgYXMgdmFy aWQgZnJvbSBwZ192YXJpYWJsZSB3aGVyZSB2YXJuYW1lID0gJ3N2YXInIGFuZCB2YXJuYW1lc3Bh Y2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlIFxnc2V0CitMRVQgcHVibGljLnN2YXIgPSAxMDA7 CitST0xMQkFDSzsKKy0tIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFuOworU0VMRUNUIHNjaGVt YSwgbmFtZSwgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCkgZiBXSEVSRSBmLnZh cmlkID0gOnZhcmlkOworIHNjaGVtYSB8IG5hbWUgfCByZW1vdmVkIAorLS0tLS0tLS0rLS0tLS0t Ky0tLS0tLS0tLQorKDAgcm93cykKKworXHVuc2V0IHZhcmlkCitDUkVBVEUgVkFSSUFCTEUgcHVi bGljLnN2YXIgQVMgaW50OworTEVUIHB1YmxpYy5zdmFyID0gMTAwOworLS0gcmVwZWF0ZWQgYWJv cnRlZCB0cmFuc2FjdGlvbgorQkVHSU47IERST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7IFJPTExC QUNLOworQkVHSU47IERST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7IFJPTExCQUNLOworQkVHSU47 IERST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7IFJPTExCQUNLOworLS0gdGhlIHZhbHVlIHNob3Vs ZCBiZSBzdGlsbCBhdmFpbGFibGUKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKyBzdmFyIAorLS0tLS0t CisgIDEwMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOworQ1JFQVRFIFRZ UEUgcHVibGljLnN2YXJfdGVzdF90eXBlIEFTIChhIGludCwgYiBpbnQpOworQ1JFQVRFIFZBUklB QkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsKK1NFTEVDVCBwdWJsaWMu c3ZhcjsKKyBzdmFyIAorLS0tLS0tCisgCisoMSByb3cpCisKK0FMVEVSIFRZUEUgcHVibGljLnN2 YXJfdGVzdF90eXBlIEFERCBBVFRSSUJVVEUgYyBpbnQ7CitTRUxFQ1QgcHVibGljLnN2YXI7Cisg c3ZhciAKKy0tLS0tLQorIAorKDEgcm93KQorCitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3Rf dHlwZSBEUk9QIEFUVFJJQlVURSBiOworU0VMRUNUIHB1YmxpYy5zdmFyOworIHN2YXIgCistLS0t LS0KKyAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0RST1AgVFlQRSBw dWJsaWMuc3Zhcl90ZXN0X3R5cGU7CitDUkVBVEUgVFlQRSBwdWJsaWMuc3Zhcl90ZXN0X3R5cGUg QVMgKGEgaW50LCBiIGludCk7CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGlj LnN2YXJfdGVzdF90eXBlOworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyMiBBUyBwdWJsaWMu c3Zhcl90ZXN0X3R5cGU7CitMRVQgcHVibGljLnN2YXIgPSAoMTAsIDIwKTsKK0FMVEVSIFRZUEUg cHVibGljLnN2YXJfdGVzdF90eXBlIEFERCBBVFRSSUJVVEUgYyBpbnQ7CitTRUxFQ1QgcHVibGlj LnN2YXI7CisgICBzdmFyICAgCistLS0tLS0tLS0tCisgKDEwLDIwLCkKKygxIHJvdykKKworTEVU IHB1YmxpYy5zdmFyMiA9ICgxMCwgMjAsIDMwKTsKK0FMVEVSIFRZUEUgcHVibGljLnN2YXJfdGVz dF90eXBlIERST1AgQVRUUklCVVRFIGI7CitTRUxFQ1QgcHVibGljLnN2YXI7Cisgc3ZhciAgCist LS0tLS0tCisgKDEwLCkKKygxIHJvdykKKworU0VMRUNUIHB1YmxpYy5zdmFyMjsKKyAgc3ZhcjIg IAorLS0tLS0tLS0tCisgKDEwLDMwKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHB1YmxpYy5z dmFyOworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJf dGVzdF90eXBlOworLS0gVGhlIGNvbXBvc2l0ZSB0eXBlIGNhbm5vdCBiZSBjaGFuZ2VkIHdoZW4g aXQgaXMgdXNlZAorQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdHlwZSBBUyAoYSBpbnQsIGIgaW50 KTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBBUyBwdWJsaWMuc3Zhcl90eXBlOworLS0g c2hvdWxkIHRvIGZhaWwKK0FMVEVSIFRZUEUgcHVibGljLnN2YXJfdHlwZSBBTFRFUiBBVFRSSUJV VEUgYiBUWVBFIG51bWVyaWM7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0eXBlICJzdmFyX3R5cGUi IGJlY2F1c2Ugc2Vzc2lvbiB2YXJpYWJsZSAicHVibGljLnN2YXIiIHVzZXMgaXQKK0RST1AgVkFS SUFCTEUgcHVibGljLnN2YXI7CitDUkVBVEUgVFlQRSBwdWJsaWMuc3Zhcl90eXBlMiBBUyAoYSBp bnQsIGIgaW50LCBjIHB1YmxpYy5zdmFyX3R5cGUpOworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5z dmFyIEFTIHB1YmxpYy5zdmFyX3R5cGUyOworLS0gc2hvdWxkIHRvIGZhaWwKK0FMVEVSIFRZUEUg cHVibGljLnN2YXJfdHlwZSBBTFRFUiBBVFRSSUJVVEUgYiBUWVBFIG51bWVyaWM7CitFUlJPUjog IGNhbm5vdCBhbHRlciB0eXBlICJzdmFyX3R5cGUiIGJlY2F1c2Ugc2Vzc2lvbiB2YXJpYWJsZSAi cHVibGljLnN2YXIiIHVzZXMgaXQKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRZ UEUgcHVibGljLnN2YXJfdHlwZTI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJfdHlwZTsKKy0tIFRo ZSB2YXJpYWJsZSBjYW4gYmUgc2hhZG93ZWQgYnkgdGFibGUgb3IgYnkgYWxpYXMKK0NSRUFURSBU WVBFIHB1YmxpYy5zdmFyX3R5cGUgQVMgKGEgaW50LCBiIGludCwgYyBpbnQpOworQ1JFQVRFIFZB UklBQkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFyX3R5cGU7CitDUkVBVEUgVEFCTEUgcHVi bGljLnN2YXIgKGEgaW50LCBiIGludCk7CitJTlNFUlQgSU5UTyBwdWJsaWMuc3ZhciBWQUxVRVMo MTAsIDIwKTsKK0xFVCBwdWJsaWMuc3ZhciA9ICgxMDAsIDIwMCwgMzAwKTsKKy0tIHNob3VsZCBi ZSBvaworLS0gc2hvdyB0YWJsZQorU0VMRUNUICogRlJPTSBwdWJsaWMuc3ZhcjsKKyBhICB8IGIg IAorLS0tLSstLS0tCisgMTAgfCAyMAorKDEgcm93KQorCitTRUxFQ1Qgc3Zhci5hIEZST00gcHVi bGljLnN2YXI7CisgYSAgCistLS0tCisgMTAKKygxIHJvdykKKworU0VMRUNUIHN2YXIuKiBGUk9N IHB1YmxpYy5zdmFyOworIGEgIHwgYiAgCistLS0tKy0tLS0KKyAxMCB8IDIwCisoMSByb3cpCisK Ky0tIHNob3cgdmFyaWFibGUKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKyAgICAgc3ZhciAgICAgIAor LS0tLS0tLS0tLS0tLS0tCisgKDEwMCwyMDAsMzAwKQorKDEgcm93KQorCitTRUxFQ1QgcHVibGlj LnN2YXIuYzsKKyAgYyAgCistLS0tLQorIDMwMAorKDEgcm93KQorCitTRUxFQ1QgKHB1YmxpYy5z dmFyKS4qOworICBhICB8ICBiICB8ICBjICAKKy0tLS0tKy0tLS0tKy0tLS0tCisgMTAwIHwgMjAw IHwgMzAwCisoMSByb3cpCisKKy0tIHRoZSB2YXJpYWJsZSBpcyBzaGFkb3dlZCwgcmFpc2UgZXJy b3IKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXI7CitFUlJPUjogIGNvbHVt biBzdmFyLmMgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJP TSBwdWJsaWMuc3ZhcjsKKyAgICAgICAgICAgICAgIF4KKy0tIGNhbiBiZSBmaXhlZCBieSBhbGlh cworU0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhciB4OworICBjICAKKy0tLS0t CisgMzAwCisoMSByb3cpCisKKy0tIGFnYWluIHdpdGggd2FybmluZ3MKK1NFVCBzZXNzaW9uX3Zh cmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyBUTyBvbjsKK1NFTEVDVCAqIEZST00gcHVibGljLnN2 YXI7CisgYSAgfCBiICAKKy0tLS0rLS0tLQorIDEwIHwgMjAKKygxIHJvdykKKworU0VMRUNUIHN2 YXIuYSBGUk9NIHB1YmxpYy5zdmFyOworIGEgIAorLS0tLQorIDEwCisoMSByb3cpCisKK1NFTEVD VCBzdmFyLiogRlJPTSBwdWJsaWMuc3ZhcjsKKyBhICB8IGIgIAorLS0tLSstLS0tCisgMTAgfCAy MAorKDEgcm93KQorCistLSBzaG93IHZhcmlhYmxlCitTRUxFQ1QgcHVibGljLnN2YXI7CisgICAg IHN2YXIgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorICgxMDAsMjAwLDMwMCkKKygxIHJvdykKKwor U0VMRUNUIHB1YmxpYy5zdmFyLmM7CisgIGMgIAorLS0tLS0KKyAzMDAKKygxIHJvdykKKworU0VM RUNUIChwdWJsaWMuc3ZhcikuKjsKKyAgYSAgfCAgYiAgfCAgYyAgCistLS0tLSstLS0tLSstLS0t LQorIDEwMCB8IDIwMCB8IDMwMAorKDEgcm93KQorCistLSB0aGUgdmFyaWFibGUgaXMgc2hhZG93 ZWQsIHJhaXNlIGVycm9yCitTRUxFQ1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyOwor V0FSTklORzogIHNlc3Npb24gdmFyaWFibGUgInB1YmxpYy5zdmFyIiBpcyBzaGFkb3dlZAorTElO RSAxOiBTRUxFQ1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyOworICAgICAgICAgICAg ICAgXgorREVUQUlMOiAgU2Vzc2lvbiB2YXJpYWJsZXMgY2FuIGJlIHNoYWRvd2VkIGJ5IHRhYmxl cyBvciB0YWJsZSdzIGFsaWFzZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgorRVJST1I6ICBjb2x1bW4g c3Zhci5jIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00g cHVibGljLnN2YXI7CisgICAgICAgICAgICAgICBeCistLSBjYW4gYmUgZml4ZWQgYnkgYWxpYXMK K1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXIgeDsKKyAgYyAgCistLS0tLQor IDMwMAorKDEgcm93KQorCitTRVQgc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmcg VE8gREVGQVVMVDsKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRBQkxFIHB1Ymxp Yy5zdmFyOworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3R5cGU7CistLSB0aGUgTEVUIHN0YXRlbWVu dCBzaG91bGQgYmUgZGlzYWxsb3dlZCBpbiBDVEUKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3Zh ciBBUyBpbnQ7CitXSVRIIHggQVMgKExFVCBwdWJsaWMuc3ZhciA9IDEwMCkgU0VMRUNUICogRlJP TSB4OworRVJST1I6ICBMRVQgbm90IHN1cHBvcnRlZCBpbiBXSVRIIHF1ZXJ5CitMSU5FIDE6IFdJ VEggeCBBUyAoTEVUIHB1YmxpYy5zdmFyID0gMTAwKSBTRUxFQ1QgKiBGUk9NIHg7CisgICAgICAg ICAgICAgXgorLS0gdGhlIExFVCBzdGF0ZW1lbnQgY2FuIGJlIHByZXBhcmVkCitQUkVQQVJFIHBw KGludCkgQVMgTEVUIHB1YmxpYy5zdmFyID0gJDE7CitFWEVDVVRFIHBwKDEwKTsKK1NFTEVDVCBw dWJsaWMuc3ZhcjsKKyBzdmFyIAorLS0tLS0tCisgICAxMAorKDEgcm93KQorCitFWEVDVVRFIHBw KDEwMDApOworU0VMRUNUIHB1YmxpYy5zdmFyOworIHN2YXIgCistLS0tLS0KKyAxMDAwCisoMSBy b3cpCisKKy0tIHRlc3Qgb2YgY29ycmVjdCBkZXBlbmRlbmN5CitEUk9QIFZBUklBQkxFIHB1Ymxp Yy5zdmFyOworRVhFQ1VURSBwcCgtMSk7CitFUlJPUjogIHNlc3Npb24gdmFyaWFibGUgInB1Ymxp Yy5zdmFyIiBkb2Vzbid0IGV4aXN0CitERUFMTE9DQVRFIHBwOworQ1JFQVRFIFZBUklBQkxFIHB1 YmxpYy5zdmFyMiBBUyBpbnQ7CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIxIEFTIGludCBE RUZBVUxUIDEwMDsKK1BSRVBBUkUgcHAoaW50KSBBUyBMRVQgcHVibGljLnN2YXIyID0gcHVibGlj LnN2YXIxICsgJDE7CitFWEVDVVRFIHBwKDEwMCk7CitTRUxFQ1QgcHVibGljLnN2YXIxLCBwdWJs aWMuc3ZhcjI7Cisgc3ZhcjEgfCBzdmFyMiAKKy0tLS0tLS0rLS0tLS0tLQorICAgMTAwIHwgICAy MDAKKygxIHJvdykKKworTEVUIHB1YmxpYy5zdmFyMSA9IDEwMDA7CitFWEVDVVRFIHBwKDEwMCk7 CitTRUxFQ1QgcHVibGljLnN2YXIxLCBwdWJsaWMuc3ZhcjI7Cisgc3ZhcjEgfCBzdmFyMiAKKy0t LS0tLS0rLS0tLS0tLQorICAxMDAwIHwgIDExMDAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBw dWJsaWMuc3ZhcjE7CitFWEVDVVRFIHBwKDEwMCk7CitFUlJPUjogIG1pc3NpbmcgRlJPTS1jbGF1 c2UgZW50cnkgZm9yIHRhYmxlICJwdWJsaWMiCitERUFMTE9DQVRFIHBwOworRFJPUCBWQVJJQUJM RSBwdWJsaWMuc3ZhcjI7CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgaW50OworLS0g c2hvdWxkIGJlIG9rCitMRVQgcHVibGljLnN2YXIgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSk7Cist LSBzaG91bGQgZmFpbAorTEVUIHB1YmxpYy5zdmFyID0gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpOwor RVJST1I6ICBleHByZXNzaW9uIHJldHVybmVkIG1vcmUgdGhhbiBvbmUgcm93CitMRVQgcHVibGlj LnN2YXIgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCk7CitFUlJPUjogIGV4cHJlc3Npb24gcmV0dXJu ZWQgbm8gcm93cworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK1NFVCBzZWFyY2hfcGF0aCBU TyBERUZBVUxUOworQ1JFQVRFIFRZUEUgYWIgQVMgKGEgaW50ZWdlciwgYiBpbnRlZ2VyKTsKK0NS RUFURSBWQVJJQUJMRSB2X2FiIEFTIGFiOworQ1JFQVRFIFRBQkxFIHZfYWIgKGEgaW50ZWdlciwg YiBpbnRlZ2VyKTsKK1NFVCBzZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyA9IDE7 CistLSB3YXJuaW5nIHNob3VsZCBiZSByYWlzZWQKK1NFTEVDVCB2X2FiLmEgRlJPTSB2X2FiOwor V0FSTklORzogIHNlc3Npb24gdmFyaWFibGUgInZfYWIuYSIgaXMgc2hhZG93ZWQKK0xJTkUgMTog U0VMRUNUIHZfYWIuYSBGUk9NIHZfYWI7CisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBTZXNz aW9uIHZhcmlhYmxlcyBjYW4gYmUgc2hhZG93ZWQgYnkgY29sdW1ucywgcm91dGluZSdzIHZhcmlh YmxlcyBhbmQgcm91dGluZSdzIGFyZ3VtZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUuCisgYSAKKy0t LQorKDAgcm93cykKKworQ1JFQVRFIFNDSEVNQSB2X2FiOworQ1JFQVRFIFZBUklBQkxFIHZfYWIu YSBBUyBpbnRlZ2VyOworLS0gd2FybmluZyBzaG91bGQgYmUgcmFpc2VkCitTRUxFQ1Qgdl9hYi5h IEZST00gdl9hYjsKK1dBUk5JTkc6ICBzZXNzaW9uIHZhcmlhYmxlICJ2X2FiLmEiIGlzIHNoYWRv d2VkCitMSU5FIDE6IFNFTEVDVCB2X2FiLmEgRlJPTSB2X2FiOworICAgICAgICAgICAgICAgXgor REVUQUlMOiAgU2Vzc2lvbiB2YXJpYWJsZXMgY2FuIGJlIHNoYWRvd2VkIGJ5IGNvbHVtbnMsIHJv dXRpbmUncyB2YXJpYWJsZXMgYW5kIHJvdXRpbmUncyBhcmd1bWVudHMgd2l0aCB0aGUgc2FtZSBu YW1lLgorIGEgCistLS0KKygwIHJvd3MpCisKK0RST1AgVkFSSUFCTEUgdl9hYjsKK0RST1AgVEFC TEUgdl9hYjsKK0RST1AgVFlQRSBhYjsKK0NSRUFURSBWQVJJQUJMRSBteXZhciBBUyBpbnQ7CitT RUxFQ1QgbXl2YXIuYmxhYmxhOworRVJST1I6ICB2YXJpYWJsZSAicHVibGljLm15dmFyIiBpcyBv ZiB0eXBlICJpbnRlZ2VyIiwgd2hpY2ggaXMgbm90IGEgY29tcG9zaXRlIHR5cGUKK0xJTkUgMTog U0VMRUNUIG15dmFyLmJsYWJsYTsKKyAgICAgICAgICAgICAgIF4KK0RST1AgVkFSSUFCTEUgbXl2 YXI7CistLSB0aGUgcmVzdWx0IG9mIHZpZXcgc2hvdWxkIGJlIHNhbWUgaW4gcGFyYWxsZWwgbW9k ZSB0b28KK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBpbnQ7CitMRVQgdjEgPSAxMDsKK0NSRUFURSBW SUVXIHYxdmlldyBBUyBTRUxFQ1QgQ09BTEVTQ0UodjEsIDApIEFTIHJlc3VsdDsKK1NFTEVDVCAq IEZST00gdjF2aWV3OworIHJlc3VsdCAKKy0tLS0tLS0tCisgICAgIDEwCisoMSByb3cpCisKK1NF VCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSBUTyBvbjsKK1NFTEVDVCAqIEZST00gdjF2aWV3OworIHJl c3VsdCAKKy0tLS0tLS0tCisgICAgIDEwCisoMSByb3cpCisKK1NFVCBkZWJ1Z19wYXJhbGxlbF9x dWVyeSBUTyBvZmY7CitEUk9QIFZJRVcgdjF2aWV3OworRFJPUCBWQVJJQUJMRSB2MTsKKy0tIHRo ZSB2YWx1ZSBzaG91bGQgbm90IGJlIGNvcnJ1cHRlZAorQ1JFQVRFIFZBUklBQkxFIHYxIHRleHQg REVGQVVMVCAnYWJjJzsKK0NSRUFURSBGVU5DVElPTiBmZnVuYygpCitSRVRVUk5TIHRleHQgQVMg JCQKK0JFR0lOCisgIFJFVFVSTiBnZnVuYyh2MSk7CitFTkQKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitDUkVBVEUgRlVOQ1RJT04gZ2Z1bmModCB0ZXh0KQorUkVUVVJOUyB0ZXh0IEFTICQkCitCRUdJ TgorICBMRVQgdjEgPSAnQk9PTSEnOworICBSRVRVUk4gdDsKK0VORDsKKyQkIExBTkdVQUdFIHBs cGdzcWw7CitzZWxlY3QgZmZ1bmMoKTsKKyBmZnVuYyAKKy0tLS0tLS0KKyBhYmMKKygxIHJvdykK KworRFJPUCBGVU5DVElPTiBmZnVuYygpOworRFJPUCBGVU5DVElPTiBnZnVuYyh0ZXh0KTsKK0RS T1AgVkFSSUFCTEUgdjE7CitDUkVBVEUgVFlQRSB0X2FtX3R5cGUgQVMgKGIgaW50KTsKK0NSRUFU RSBTQ0hFTUEgeHh4X2FtOworU0VUIHNlYXJjaF9wYXRoIFRPIHB1YmxpYzsKK0NSRUFURSBWQVJJ QUJMRSB4eHhfYW0gQVMgdF9hbV90eXBlIERFRkFVTFQgcm93KDEwKTsKK1NFTEVDVCB4eHhfYW07 CisgeHh4X2FtIAorLS0tLS0tLS0KKyAoMTApCisoMSByb3cpCisKK1NFTEVDVCBwdWJsaWMueHh4 X2FtOworIHh4eF9hbSAKKy0tLS0tLS0tCisgKDEwKQorKDEgcm93KQorCitDUkVBVEUgVkFSSUFC TEUgeHh4X2FtLmIgQVMgaW50IERFRkFVTFQgMjA7CistLSB0aGUgcmVmZXJlbmNlIHNob3VsZCBi ZSBhbWJpZ3VvdXMKK1NFTEVDVCB4eHhfYW0uYjsKK0VSUk9SOiAgc2Vzc2lvbiB2YXJpYWJsZSBy ZWZlcmVuY2UgInh4eF9hbS5iIiBpcyBhbWJpZ3VvdXMKK0xJTkUgMTogU0VMRUNUIHh4eF9hbS5i OworICAgICAgICAgICAgICAgXgorLS0gZW5oYW5jZWQgcmVmZXJlbmNlcyBzaG91bGQgYmUgb2sK K1NFTEVDVCBwdWJsaWMueHh4X2FtLmI7CisgYiAgCistLS0tCisgMTAKKygxIHJvdykKKworU0VM RUNUIDoiREJOQU1FIi54eHhfYW0uYjsKKyBiICAKKy0tLS0KKyAyMAorKDEgcm93KQorCitTRVQg c2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmcgVE8gb247CitDUkVBVEUgVEFCTEUg eHh4X2FtKGIgIGludCk7CistLSBzaG91bGQgYmUgd2FybmluZywgbm90IGVycm9yCitTRUxFQ1Qg eHh4X2FtLmIgRlJPTSB4eHhfYW07CitXQVJOSU5HOiAgc2Vzc2lvbiB2YXJpYWJsZSAieHh4X2Ft LmIiIGlzIHNoYWRvd2VkCitMSU5FIDE6IFNFTEVDVCB4eHhfYW0uYiBGUk9NIHh4eF9hbTsKKyAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBzaGFkb3dl ZCBieSBjb2x1bW5zLCByb3V0aW5lJ3MgdmFyaWFibGVzIGFuZCByb3V0aW5lJ3MgYXJndW1lbnRz IHdpdGggdGhlIHNhbWUgbmFtZS4KKyBiIAorLS0tCisoMCByb3dzKQorCistLSBubyB3YXJuaW5n CitTRUxFQ1QgeC5iIEZST00geHh4X2FtIHg7CisgYiAKKy0tLQorKDAgcm93cykKKworRFJPUCBU QUJMRSB4eHhfYW07CitEUk9QIFZBUklBQkxFIHB1YmxpYy54eHhfYW07CitEUk9QIFZBUklBQkxF IHh4eF9hbS5iOworRFJPUCBTQ0hFTUEgeHh4X2FtOworQ1JFQVRFIFNDSEVNQSA6IkRCTkFNRSI7 CitDUkVBVEUgVkFSSUFCTEUgOiJEQk5BTUUiLjoiREJOQU1FIi46IkRCTkFNRSIgQVMgdF9hbV90 eXBlIERFRkFVTFQgcm93KDEwKTsKK0NSRUFURSBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUi LmIgQVMgaW50IERFRkFVTFQgMjA7CitTRVQgc2VhcmNoX3BhdGggdG8gOiJEQk5BTUUiOworLS0g SW4gdGhpcyB0ZXN0IGNhc2UsIGVycm9yIChhbmQgd2FybmluZykgbWVzc2FnZXMgY29udGFpbnMg ZGF0YWJhc2UgbmFtZS4KKy0tIEl0IGlzICJyZWdyZXNzaW9uIiwgYnV0IGl0IGNhbiBiZSBwb3Nz aWJseSBkaWZmZXJlbnQsIHNvIHdlIHRyeSB0bworLS0gc3VwcmVzcyBlcnJvciBhbmQgd2Fybmlu ZyBtZXNzYWdlcy4KK1xzZXQgRUNITyBub25lCitFUlJPUjogIHNlc3Npb24gdmFyaWFibGUgcmVm ZXJlbmNlICJyZWdyZXNzaW9uLmIiIGlzIGFtYmlndW91cworTElORSAxOiBTRUxFQ1QgInJlZ3Jl c3Npb24iLmI7CisgICAgICAgICAgICAgICBeCit0cnVlLCA0MlAwOAorRVJST1I6ICBzZXNzaW9u IHZhcmlhYmxlIHJlZmVyZW5jZSAicmVncmVzc2lvbi5yZWdyZXNzaW9uLmIiIGlzIGFtYmlndW91 cworTElORSAxOiBTRUxFQ1QgInJlZ3Jlc3Npb24iLiJyZWdyZXNzaW9uIi5iOworICAgICAgICAg ICAgICAgXgordHJ1ZSwgNDJQMDgKKyBiIAorLS0tCisoMCByb3dzKQorCitmYWxzZSwgMDAwMDAK K0RST1AgVEFCTEUgOiJEQk5BTUUiOworRFJPUCBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUi LmI7CitEUk9QIFZBUklBQkxFIDoiREJOQU1FIi46IkRCTkFNRSIuOiJEQk5BTUUiOworRFJPUCBT Q0hFTUEgOiJEQk5BTUUiOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgVE8gREVGQVVMVDsKK1NF VCBzZWFyY2hfcGF0aCB0byBwdWJsaWM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRl eCBjZjQ2ZmEzMzU5Li5hNDVjZDQwYTY2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBh dGgganNvbnBhdGhfZW5jb2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbgogIyBOQjogdGVtcC5z cWwgZG9lcyBhIHJlY29ubmVjdCB3aGljaCB0cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMs CiAjIHNvIGtlZXAgdGhpcyBwYXJhbGxlbCBncm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0t LS0tLS0tLS0KLXRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWlu IHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVl bmNlIHBvbHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwK K3Rlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVu Y3MgcHJlcGFyZSBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHlt b3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2Vzc2lvbl92 YXJpYWJsZXMKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVz dHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nlc3Npb25fdmFyaWFibGVzLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nlc3Npb25fdmFyaWFibGVzLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40MjkyNmRmYmNjCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEs MTIwMyBAQAorLS0gc2hvdWxkIGZhaWwsIHBzZXVkb3R5cGVzIGFyZSBub3QgYWxsb3dlZAorQ1JF QVRFIFZBUklBQkxFIHh4IEFTIGFueWVsZW1lbnQ7CisKKy0tIHNob3VsZCBiZSBvaworQ1JFQVRF IFNDSEVNQSBzdmFydGVzdCBDUkVBVEUgVkFSSUFCTEUgeHggQVMgaW50IENSRUFURSBUQUJMRSBm b28oYSBpbnQpOworCitMRVQgc3ZhcnRlc3QueHggPSAxMDA7CisKK0RST1AgU0NIRU1BIHN2YXJ0 ZXN0IENBU0NBREU7CisKKy0tIHNob3VsZCBmYWlsCitMRVQgc3ZhcnRlc3QueHggPSAxMDA7CisK K0NSRUFURSBTQ0hFTUEgc3ZhcnRlc3Q7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHN2YXJ0ZXN0Owor CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUg dmFyMiBBUyB0ZXh0OworCitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CisKKy0tIGZ1bmN0aW9u YWwgaW50ZXJmYWNlCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworCitDUkVBVEUg Uk9MRSB2YXJfdGVzdF9yb2xlOworR1JBTlQgVVNBR0UgT04gU0NIRU1BIHN2YXJ0ZXN0IFRPIHZh cl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCBm YWlsCitTRUxFQ1QgdmFyMTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworR1JBTlQgU0VMRUNU IE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKy0tIHNob3VsZCBmYWlsCitMRVQgdmFyMSA9IDEwOworLS0gc2hvdWxkIHdvcmsK K1NFTEVDVCB2YXIxOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBVUERBVEUgT04g VkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9y b2xlOworCistLSBzaG91bGQgd29yaworTEVUIHZhcjEgPSAzMzM7CisKK1NFVCBST0xFIFRPIERF RkFVTFQ7CisKK1JFVk9LRSBBTEwgT04gVkFSSUFCTEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7 CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQg QVMgJCQKKyAgU0VMRUNUIHN2YXJ0ZXN0LnZhcjE6OmludDsKKyQkIExBTkdVQUdFIHNxbCBTRUNV UklUWSBERUZJTkVSOworCitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworCitTRVQgUk9MRSBUTyB2YXJf dGVzdF9yb2xlOworCistLSBzaG91bGQgZmFpbAorU0VMRUNUIHN2YXJ0ZXN0LnZhcjE7CisKKy0t IHNob3VsZCB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8gREVGQVVM VDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKworQ1JFQVRFIFZJRVcgc2NoZW1h X3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOworCitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmll dzsKKworXGMgLQorCitTRVQgc2VhcmNoX3BhdGggPSBzdmFydGVzdDsKKworLS0gc2hvdWxkIHdv cmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBlbXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFy X3ZpZXc7CisKK0xFVCB2YXIxID0gcGkoKTsKKworU0VMRUNUIHZhcjE7CisKKy0tIHdlIGNhbiBz ZWUgZXhlY3V0aW9uIHBsYW4gb2YgTEVUIHN0YXRlbWVudAorRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7CisKK1NFTEVDVCB2YXIxOworCitDUkVBVEUgVkFSSUFC TEUgdmFyMyBBUyBpbnQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitS RVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVUIHN2YXJ0ZXN0LnZhcjMgPSBDT0FMRVNDRShz dmFydGVzdC52YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworCitTRUxFQ1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMo MSk7CisKK1NFTEVDVCBpbmMoMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7CisKK1NFVCBS T0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCBmYWlsCitMRVQgdmFyMyA9IDA7CisK K1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0RST1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CisKK0RS T1AgVkFSSUFCTEUgdmFyMSBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CisK Ky0tIGNvbXBvc2l0ZSB2YXJpYWJsZXMKKworQ1JFQVRFIFRZUEUgc3ZfeHl6IEFTICh4IGludCwg eSBpbnQsIHogbnVtZXJpYygxMCwyKSk7CisKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7 CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgc3ZfeHl6OworCitcZCB2MQorXGQgdjIKKworTEVUIHYx ID0gKDEsMiwzLjE0KTsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTsKKworLS0gc2hvdWxkIHdv cmsgdG9vIC0gdGhlcmUgYXJlIHByZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOwor CitTRUxFQ1QgdjE7CitTRUxFQ1QgdjI7CitTRUxFQ1QgKHYxKS4qOworU0VMRUNUICh2MikuKjsK KworU0VMRUNUIHYxLnggKyB2MS56OworU0VMRUNUIHYyLnggKyB2Mi56OworCistLSBhY2Nlc3Mg dG8gY29tcG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28KKy0tIHNob3VsZCBmYWlsCitT RVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCitTRUxFQ1QgdjIueDsKKworU0VUIFJPTEUgVE8g REVGQVVMVDsKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CisKK1JFVk9L RSBVU0FHRSBPTiBTQ0hFTUEgc3ZhcnRlc3QgRlJPTSB2YXJfdGVzdF9yb2xlOworRFJPUCBST0xF IHZhcl90ZXN0X3JvbGU7CisKKy0tIHNjYWxhciB2YXJpYWJsZXMgc2hvdWxkIG5vdCBiZSBpbiBj b25mbGljdCB3aXRoIHF1YWxpZmllZCBjb2x1bW4KK0NSRUFURSBWQVJJQUJMRSB2YXJ4IEFTIHRl eHQ7CitTRUxFQ1QgdmFyeC5yZWxuYW1lIEZST00gcGdfY2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJl bG5hbWUgPSAncGdfY2xhc3MnOworCistLSBzaG91bGQgZmFpbAorU0VMRUNUIHZhcngueHh4Owor CistLSBkb24ndCBhbGxvdyBtdWx0aSBjb2x1bW4gcXVlcnkKK0NSRUFURSBUWVBFIHZhcnRlc3R0 cCBBUyAoYTEgaW50LCBiMSBpbnQsIGMxIGludCk7CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgdmFy dGVzdHRwOworCistLSBzaG91bGQgZmFpbAorTEVUIHYxID0gKE5VTEw6OnZhcnRlc3R0cCkuKjsK KworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB2YXJ0ZXN0dHA7CisKKy0tIHZhcmlhYmxl cyBjYW4gYmUgdXBkYXRlZCB1bmRlciBSTyB0cmFuc2FjdGlvbgorCitCRUdJTjsKK1NFVCBUUkFO U0FDVElPTiBSRUFEIE9OTFk7CitMRVQgdmFyeCA9ICdoZWxsbyc7CitDT01NSVQ7CisKK1NFTEVD VCB2YXJ4OworCitEUk9QIFZBUklBQkxFIHZhcng7CisKK0NSRUFURSBUWVBFIHQxIEFTIChhIGlu dCwgYiBudW1lcmljLCBjIHRleHQpOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgdDE7CitMRVQg djEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitTRUxFQ1QgdjE7CitMRVQgdjEuYiA9IDEwLjIyMjI7 CitTRUxFQ1QgdjE7CisKKy0tIHNob3VsZCBmYWlsCitMRVQgdjEueCA9IDEwOworCitEUk9QIFZB UklBQkxFIHYxOworRFJPUCBUWVBFIHQxOworCistLSBhcnJheXMgYXJlIHN1cHBvcnRlZAorQ1JF QVRFIFZBUklBQkxFIHZhMSBBUyBudW1lcmljW107CitMRVQgdmExID0gQVJSQVlbMS4xLDIuMV07 CitMRVQgdmExWzFdID0gMTAuMTsKK1NFTEVDVCB2YTE7CisKKy0tIExFVCB0YXJnZXQgZG9lc24n dCBhbGxvdyBzcmYsIHNob3VsZCBmYWlsCitMRVQgdmExW2dlbmVyYXRlX3NlcmllcygxLDMpXSA9 IDEwMDsKKworQ1JFQVRFIFRZUEUgdGEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NS RUFURSBWQVJJQUJMRSB2YTIgQVMgdGEyOworTEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAu MF0pOworTEVUIHZhMi5hID0gMTAuMjsKK1NFTEVDVCB2YTI7CitMRVQgdmEyLmJbMV0gPSAxMC4z OworU0VMRUNUIHZhMjsKKworRFJPUCBWQVJJQUJMRSB2YTE7CitEUk9QIFZBUklBQkxFIHZhMjsK K0RST1AgVFlQRSB0YTI7CisKKy0tIGRlZmF1bHQgdmFsdWVzCitDUkVBVEUgVkFSSUFCTEUgdjEg QVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAqIDI7CitTRUxFQ1QgdjE7CisK K0NSRUFURSBUWVBFIHQyIEFTIChhIG51bWVyaWMsIGIgdGV4dCk7CitDUkVBVEUgVkFSSUFCTEUg djIgQVMgdDIgREVGQVVMVCAoTlVMTCwgJ0hlbGxvJyk7CitMRVQgc3ZhcnRlc3QudjIuYSA9IHBp KCk7CitTRUxFQ1QgdjI7CisKKy0tIHNob3VsZCBmYWlsIGR1ZSBkZXBlbmRlbmN5CitEUk9QIFRZ UEUgdDI7CisKKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFC TEUgdjI7CisKKy0tIHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMTsK K0NSRUFURSBTQ0hFTUEgdmFyX3NjaGVtYTI7CisKK0NSRUFURSBWQVJJQUJMRSB2YXJfc2NoZW1h MS52YXIxIEFTIGludGVnZXI7CitMRVQgdmFyX3NjaGVtYTEudmFyMSA9IDEwMDA7CitTRUxFQ1Qg dmFyX3NjaGVtYTEudmFyMTsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWExLnZhcjEgU0VUIFND SEVNQSB2YXJfc2NoZW1hMjsKK1NFTEVDVCB2YXJfc2NoZW1hMi52YXIxOworCitDUkVBVEUgUk9M RSB2YXJfdGVzdF9yb2xlOworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIE9XTkVS IFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91 bGQgZmFpbCwgbm8gYWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1hMi52YXIKK1NFTEVDVCB2YXJf c2NoZW1hMi52YXIxOworRFJPUCBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxOworCitTRVQgUk9M RSBUTyBERUZBVUxUOworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIFNFVCBTQ0hF TUEgcHVibGljOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHB1YmxpYy52 YXIxOworCitBTFRFUiBWQVJJQUJMRSBwdWJsaWMudmFyMSBSRU5BTUUgVE8gdmFyMV9yZW5hbWVk OworCitTRUxFQ1QgcHVibGljLnZhcjFfcmVuYW1lZDsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMu dmFyMV9yZW5hbWVkOworCitTRVQgUk9MRSBUTyBERUZBVUx0OworCistLSBkZWZhdWx0IHJpZ2h0 cyB0ZXN0CitBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BIHB1YmxpYyBHUkFOVCBB TEwgT04gVkFSSUFCTEVTIFRPIHZhcl90ZXN0X3JvbGU7CisKK0NSRUFURSBWQVJJQUJMRSBwdWJs aWMudmFyMiBBUyBpbnQ7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3Vs ZCBiZSBvaworTEVUIHB1YmxpYy52YXIyID0gMTAwOworU0VMRUNUIHB1YmxpYy52YXIyOworCitT RVQgUk9MRSBUTyBERUZBVUx0OworCitEUk9QIFZBUklBQkxFIHB1YmxpYy52YXIyOworRFJPUCBP V05FRCBCWSB2YXJfdGVzdF9yb2xlOworCitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworQ1JF QVRFIFZBUklBQkxFIHh4IEFTIHRleHQgREVGQVVMVCAnaGVsbG8nOworCitTRUxFQ1QgeHgsIHVw cGVyKHh4KTsKKworTEVUIHh4ID0gJ0hpJzsKKworU0VMRUNUIHh4OworCitEUk9QIFZBUklBQkxF IHh4OworCistLSBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQgdGVzdHMKK0NSRUFURSBWQVJJQUJM RSB0MSBBUyBpbnQgREVGQVVMVCAtMSBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQ7CisKK0JFR0lO OworICBTRUxFQ1QgdDE7CisgIExFVCB0MSA9IDEwMDsKKyAgU0VMRUNUIHQxOworQ09NTUlUOwor CitTRUxFQ1QgdDE7CisKK0JFR0lOOworICBTRUxFQ1QgdDE7CisgIExFVCB0MSA9IDEwMDsKKyAg U0VMRUNUIHQxOworUk9MTEJBQ0s7CisKK1NFTEVDVCB0MTsKKworRFJPUCBWQVJJQUJMRSB0MTsK KworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIGludCBERUZBVUxUIDA7CitDUkVBVEUgVkFSSUFCTEUg djIgQVMgdGV4dCBERUZBVUxUICdub25lJzsKKworTEVUIHYxID0gMTAwOworTEVUIHYyID0gJ0hl bGxvJzsKK1NFTEVDVCB2MSwgdjI7CitMRVQgdjEgPSBERUZBVUxUOworTEVUIHYyID0gREVGQVVM VDsKK1NFTEVDVCB2MSwgdjI7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYy OworCistLSBPTiBDT01NSVQgRFJPUCB0ZXN0cworLS0gc2hvdWxkIGJlIDAgYWx3YXlzCitTRUxF Q1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZTsKKworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZyBB UyBpbnQgT04gQ09NTUlUIERST1A7CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxl OworCitCRUdJTjsKKyAgQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZyBBUyBpbnQgT04gQ09NTUlUIERS T1A7CitDT01NSVQ7CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxlOworCitCRUdJ TjsKKyAgQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZyBBUyBpbnQgT04gQ09NTUlUIERST1A7CitST0xM QkFDSzsKKworU0VMRUNUIGNvdW50KCopIEZST00gcGdfdmFyaWFibGU7CisKK0JFR0lOOworICBD UkVBVEUgVEVNUCBWQVJJQUJMRSBnIEFTIGludCBPTiBDT01NSVQgRFJPUDsKKyAgTEVUIGcgPSAx OworICBESVNDQVJEIFZBUklBQkxFUzsKK0NPTU1JVDsKKworU0VMRUNUIGNvdW50KCopIEZST00g cGdfdmFyaWFibGU7CisKK0JFR0lOOworICBDUkVBVEUgVEVNUCBWQVJJQUJMRSBnIEFTIGludCBP TiBDT01NSVQgRFJPUDsKKyAgTEVUIGcgPSAxOworICBESVNDQVJEIFZBUklBQkxFUzsKK1JPTExC QUNLOworCitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZTsKKworLS0gRW5jb3VyYWdl IHVzZSBvZiBwYXJhbGxlbCBwbGFucworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VU IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworCistLSB0 ZXN0IG9uIHF1ZXJ5IHdpdGggd29ya2VycworQ1JFQVRFIFRBQkxFIHN2YXJfdGVzdChhIGludCk7 CitJTlNFUlQgSU5UTyBzdmFyX3Rlc3QgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwKTsKK0FOQUxZWkUgc3Zhcl90ZXN0OworQ1JFQVRFIFZBUklBQkxFIHplcm8gaW50OworTEVU IHplcm8gPSAwOworCistLSBwYXJhbGxlbCB3b3JrZXJzIHNob3VsZCBiZSB1c2VkCitFWFBMQUlO IChjb3N0cyBvZmYpIFNFTEVDVCBjb3VudCgqKSBGUk9NIHN2YXJfdGVzdCBXSEVSRSBhJTEwID0g emVybzsKKworLS0gcmVzdWx0IHNob3VsZCBiZSAxMDAKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHN2 YXJfdGVzdCBXSEVSRSBhJTEwID0gemVybzsKKworTEVUIHplcm8gPSAoU0VMRUNUIGNvdW50KCop IEZST00gc3Zhcl90ZXN0KTsKKworLS0gcmVzdWx0IHNob3VsZCBiZSAxMDAwCitTRUxFQ1QgemVy bzsKKworLS0gcGFyYWxsZWwgd29ya2VycyBzaG91bGQgYmUgdXNlZAorRVhQTEFJTiAoY29zdHMg b2ZmKSBMRVQgemVybyA9IChTRUxFQ1QgY291bnQoKikgRlJPTSBzdmFyX3Rlc3QpOworCistLSB0 ZXN0IGZvciBkZXBlbmRlbmN5IG9uIHJlbGF0aW9uCitDUkVBVEUgVkFSSUFCTEUgdl90YWJsZSBB UyBzdmFyX3Rlc3Q7CisKK0FMVEVSIFRBQkxFIHN2YXJfdGVzdCBBTFRFUiBDT0xVTU4gYSBUWVBF IHRleHQ7CisKK0RST1AgVkFSSUFCTEUgdl90YWJsZTsKK0RST1AgVEFCTEUgc3Zhcl90ZXN0Owor RFJPUCBWQVJJQUJMRSB6ZXJvOworCitSRVNFVCBwYXJhbGxlbF9zZXR1cF9jb3N0OworUkVTRVQg cGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7 CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworCistLSB1c2UgdmFyaWFi bGVzIGluIHByZXBhcmVkIHN0YXRlbWVudHMKK0NSRUFURSBWQVJJQUJMRSB2IEFTIG51bWVyaWM7 CitMRVQgdiA9IDMuMTQ7CisKKy0tIHVzZSB2YXJpYWJsZXMgaW4gdmlld3MKK0NSRUFURSBWSUVX IHZ2IEFTIFNFTEVDVCBDT0FMRVNDRSh2LCAwKSArIDEwMDAgQVMgcmVzdWx0OworU0VMRUNUICog RlJPTSB2djsKKworLS0gc3RhcnQgYSBuZXcgc2Vzc2lvbgorXGMKKworU0VUIHNlYXJjaF9wYXRo IHRvIHN2YXJ0ZXN0OworCitTRUxFQ1QgKiBGUk9NIHZ2OworTEVUIHYgPSAzLjE0OworU0VMRUNU ICogRlJPTSB2djsKKworLS0gc2hvdWxkIGZhaWwsIGRlcGVuZGVuY3kKK0RST1AgVkFSSUFCTEUg djsKKworLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHYgQ0FTQ0FERTsKKworLS0gb3Ro ZXIgZmVhdHVyZXMKK0NSRUFURSBWQVJJQUJMRSBkdCBBUyBpbnRlZ2VyIERFRkFVTFQgMDsKKwor TEVUIGR0ID0gMTAwOworU0VMRUNUIGR0OworCitESVNDQVJEIFZBUklBQkxFUzsKKworU0VMRUNU IGR0OworCitEUk9QIFZBUklBQkxFIGR0OworCistLSBOT1QgTlVMTAorQ1JFQVRFIFZBUklBQkxF IHYxIEFTIGludCBOT1QgTlVMTDsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBpbnQgTk9UIE5VTEwg REVGQVVMVCBOVUxMOworCistLSBzaG91bGQgZmFpbAorU0VMRUNUIHYxOworU0VMRUNUIHYyOwor TEVUIHYxID0gTlVMTDsKK0xFVCB2MiA9IE5VTEw7CitMRVQgdjEgPSBERUZBVUxUOworTEVUIHYy ID0gREVGQVVMVDsKKworLS0gc2hvdWxkIGJlIG9rCitMRVQgdjEgPSAxMDA7CitMRVQgdjIgPSAx MDAwOworU0VMRUNUIHYxLCB2MjsKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUg djI7CisKK0NSRUFURSBWQVJJQUJMRSB0diBBUyBpbnQ7CitDUkVBVEUgVkFSSUFCTEUgSUYgTk9U IEVYSVNUUyB0diBBUyBpbnQ7CitEUk9QIFZBUklBQkxFIHR2OworCitDUkVBVEUgSU1NVVRBQkxF IFZBUklBQkxFIGl2IEFTIGludCBERUZBVUxUIDEwMDsKK1NFTEVDVCBpdjsKKworLS0gc2hvdWxk IGZhaWw7CitMRVQgaXYgPSAxMDAwMDsKKworRFJPUCBWQVJJQUJMRSBpdjsKKworLS0gZGlmZmVy ZW50IG9yZGVyCitDUkVBVEUgSU1NVVRBQkxFIFZBUklBQkxFIGl2IEFTIGludCBERUZBVUxUIDEw MDsKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgaXYgPSAxMDAwMDsKKy0tIHNob3VsZCBiZSBvawor U0VMRUNUIGl2OworCitEUk9QIFZBUklBQkxFIGl2OworCitDUkVBVEUgSU1NVVRBQkxFIFZBUklB QkxFIGl2IEFTIGludDsKKworLS0gc2hvdWxkIGJlIG9rCitMRVQgaXYgPSBOVUxMOworCistLSBz aG91bGQgZmFpbAorTEVUIGl2ID0gTlVMTDsKKworRFJPUCBWQVJJQUJMRSBpdjsKKworLS0gY3Jl YXRlIHZhcmlhYmxlIGluc2lkZSBwbHBnc3FsIGJsb2NrCitETyAkJAorQkVHSU4KKyAgQ1JFQVRF IFZBUklBQkxFIGRvX3Rlc3Rfc3ZhciBBUyBkYXRlIERFRkFVTFQgJzIwMDAtMDEtMDEnOworRU5E OworJCQ7CisKK1NFTEVDVCBkb190ZXN0X3N2YXI7CisKK0RST1AgVkFSSUFCTEUgZG9fdGVzdF9z dmFyOworCistLSBzaG91bGQgZmFpbAorQ1JFQVRFIElNTVVUQUJMRSBWQVJJQUJMRSB4eCBBUyBp bnQgTk9UIE5VTEw7CisKKworCistLSBSRUFTU0lHTiBPV05FRCB0ZXN0CitDUkVBVEUgUk9MRSB2 YXJfdGVzdF9yb2xlMTsKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGUyOworCitDUkVBVEUgVkFS SUFCTEUgeHh4X3ZhciBBUyBpbnQ7CisKK0FMVEVSIFZBUklBQkxFIHh4eF92YXIgT1dORVIgVE8g dmFyX3Rlc3Rfcm9sZTE7CitSRUFTU0lHTiBPV05FRCBCWSB2YXJfdGVzdF9yb2xlMSB0byB2YXJf dGVzdF9yb2xlMjsKKworU0VMRUNUIHZhcm93bmVyOjpyZWdyb2xlIEZST00gcGdfdmFyaWFibGUg V0hFUkUgdmFybmFtZSA9ICd4eHhfdmFyJzsKKworRFJPUCBPV05FRCBCWSB2YXJfdGVzdF9yb2xl MTsKK0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlMTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3Zh cmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAneHh4X3Zhcic7CisKK0RST1AgT1dORUQgQlkgdmFyX3Rl c3Rfcm9sZTI7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTI7CitTRUxFQ1QgY291bnQoKikgRlJP TSBwZ192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3h4eF92YXInOworCistLSBjcmVhdGluZywg ZHJvcHBpbmcgdGVtcG9yYXJ5IHZhcmlhYmxlCitCRUdJTjsKKworQ1JFQVRFIFRFTVAgVkFSSUFC TEUgdGVtcHZhciBBUyBJTlQgT04gQ09NTUlUIERST1A7CisKK0xFVCB0ZW1wdmFyID0gMTAwOwor CitTQVZFUE9JTlQgczE7CisKK0RST1AgVkFSSUFCTEUgdGVtcHZhcjsKKworUk9MTEJBQ0sgVE8g czE7CisKK1NFTEVDVCB0ZW1wdmFyOworCitDT01NSVQ7CisKKy0tIHNob3VsZCB0byBmYWlsCitM RVQgdGVtcHZhciA9IDEwMDsKKworQkVHSU47CisKK1NBVkVQT0lOVCBzMTsKKworQ1JFQVRFIFRF TVAgVkFSSUFCTEUgdGVtcHZhciBBUyBJTlQgT04gQ09NTUlUIERST1A7CisKK0xFVCB0ZW1wdmFy ID0gMTAwOworCitST0xMQkFDSyBUTyBzMTsKKworQ09NTUlUOworCistLSBzaG91bGQgdG8gZmFp bAorTEVUIHRlbXB2YXIgPSAxMDA7CisKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludDsKK0xF VCB2YXIxID0gMTAwOworQkVHSU47CitEUk9QIFZBUklBQkxFIHZhcjE7CitST0xMQkFDSzsKK1NF TEVDVCB2YXIxOworCitEUk9QIFZBUklBQkxFIHZhcjE7CisKK0NSRUFURSBWQVJJQUJMRSB2YXIx IEFTIGludCBERUZBVUxUIDEwMDsKK0NPTU1FTlQgT04gVkFSSUFCTEUgdmFyMSBJUyAnc29tZSB2 YXJpYWJsZSBjb21tZW50JzsKKworU0VMRUNUIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKG9p ZCwgJ3BnX3ZhcmlhYmxlJykgRlJPTSBwZ192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3ZhcjEn OworCitEUk9QIFZBUklBQkxFIHZhcjE7CisKK0NSRUFURSBUQUJMRSB4eHRhYihhdmFyIGludCk7 CisKK0NSRUFURSBUWVBFIHh4dHlwZSBBUyAoYXZhciBpbnQpOworCitDUkVBVEUgVkFSSUFCTEUg eHh0YWIgQVMgeHh0eXBlOworCitJTlNFUlQgSU5UTyB4eHRhYiBWQUxVRVMoMTApOworCistLSBp dCBpcyBhbWJpZ3VvdXMsIGJ1dCBjb2x1bW5zIGFyZSBwcmVmZXJyZWQKKy0tIHZhcmlhYmxlIGlz IHNoYWRvd2VkCitTRUxFQ1QgeHh0YWIuYXZhciBGUk9NIHh4dGFiOworCitTRVQgc2Vzc2lvbl92 YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmcgVE8gb247CisKK1NFTEVDVCB4eHRhYi5hdmFyIEZS T00geHh0YWI7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHN2YXJ0ZXN0OworCitDUkVBVEUgVkFSSUFC TEUgdGVzdHZhciBhcyBpbnQ7CisKKy0tIHBscGdzcWwgdmFyaWFibGVzIGFyZSBwcmVmZXJyZWQg YWdhaW5zdCBzZXNzaW9uIHZhcmlhYmxlcworRE8gJCQKKzw8bXlibG9jaz4+CitERUNMQVJFIHRl c3R2YXIgaW50OworQkVHSU4KKyAgLS0gc2hvdWxkIGJlIG9rIHdpdGhvdXQgd2FybmluZworICBM RVQgdGVzdHZhciA9IDEwMDsKKyAgLS0gc2hvdWxkIGJlIG9rIHdpdGhvdXQgd2FybmluZworICB0 ZXN0dmFyIDo9IDEwMDA7CisgIC0tIHNob3VsZCBiZSBvayB3aXRob3V0IHdhcm5pbmcKKyAgUkFJ U0UgTk9USUNFICdzZXNzaW9uIHZhcmlhYmxlIGlzICUnLCBzdmFydGVzdC50ZXN0dmFyOworICAt LSBzaG91bGQgYmUgb2sgd2l0aG91dCB3YXJuaW5nCisgIFJBSVNFIE5PVElDRSAncGxwZ3NxbCB2 YXJpYWJsZSBpcyAlJywgbXlibG9jay50ZXN0dmFyOworICAtLSBzaG91bGQgdG8gcHJpbnQgcGxw Z3NxbCB2YXJpYWJsZSB3aXRoIHdhcm5pbmcKKyAgUkFJU0UgTk9USUNFICd2YXJpYWJsZSBpcyAl JywgdGVzdHZhcjsKK0VORDsKKyQkOworCitEUk9QIFZBUklBQkxFIHRlc3R2YXI7CisKK1NFVCBz ZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyBUTyBkZWZhdWx0OworCistLSBzaG91 bGQgYmUgb2sKK1NFTEVDVCBhdmFyIEZST00geHh0YWI7CisKK0NSRUFURSBWQVJJQUJMRSBwdWJs aWMuYXZhciBBUyBpbnQ7CisKKy0tIHNob3VsZCBiZSBvaywgc2VlIHRoZSB0YWJsZQorU0VMRUNU IGF2YXIgRlJPTSB4eHRhYjsKKworLS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLmF2YXIg RlJPTSB4eHRhYjsKKworRFJPUCBWQVJJQUJMRSB4eHRhYjsKKworU0VMRUNUIHh4dGFiLmF2YXIg RlJPTSB4eHRhYjsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuYXZhcjsKKworRFJPUCBUWVBFIHh4 dHlwZTsKKworRFJPUCBUQUJMRSB4eHRhYjsKKworLS0gdGVzdCBvZiBwbGFuIGNhY2hlIGludmFs aWRhdGlvbgorQ1JFQVRFIFZBUklBQkxFIHh4IEFTIGludDsKKworU0VUIHBsYW5fY2FjaGVfbW9k ZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKworUFJFUEFSRSBwcCBBUyBTRUxFQ1QgeHg7CisKK0VY RUNVVEUgcHA7CisKK0RST1AgVkFSSUFCTEUgeHg7CisKK0NSRUFURSBWQVJJQUJMRSB4eCBBUyBp bnQ7CisKKy0tIHNob3VsZCB0byB3b3JrCitFWEVDVVRFIHBwOworCitEUk9QIFZBUklBQkxFIHh4 OworCitERUFMTE9DQVRFIHBwOworCitTRVQgcGxhbl9jYWNoZV9tb2RlID0gREVGQVVMVDsKKwor Q1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworQ1JFQVRFIFNDSEVNQSB2YXJ0ZXN0OworCitH UkFOVCBVU0FHRSBPTiBTQ0hFTUEgdmFydGVzdCBUTyB2YXJfdGVzdF9yb2xlOworCitDUkVBVEUg VkFSSUFCTEUgdmFydGVzdC54IEFTIGludDsKK0NSRUFURSBWQVJJQUJMRSB2YXJ0ZXN0LnkgQVMg aW50OworCitMRVQgdmFydGVzdC54ID0gMTAwOworTEVUIHZhcnRlc3QueSA9IDEwMTsKKworR1JB TlQgU0VMRUNUIE9OIEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIHZhcnRlc3QgVE8gdmFyX3Rlc3Rf cm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VMRUNUIHZhcnRlc3QueCwg dmFydGVzdC55OworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitSRVZPS0UgU0VMRUNUIE9OIEFM TCBWQVJJQUJMRVMgSU4gU0NIRU1BIHZhcnRlc3QgRlJPTSB2YXJfdGVzdF9yb2xlOworCitTRVQg Uk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcnRl c3QueDsKK1NFTEVDVCB2YXJ0ZXN0Lnk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0RST1Ag VkFSSUFCTEUgdmFydGVzdC54LCB2YXJ0ZXN0Lnk7CisKK0RST1AgU0NIRU1BIHZhcnRlc3Q7CisK K0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlOworCistLSB0ZXN0IGNhY2hlZCBwbGFuCitDUkVBVEUg VkFSSUFCTEUgdjEgQVMgdGV4dDsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBpbnQ7CitDUkVBVEUg VkFSSUFCTEUgdjMgQVMgaW50OworCitMRVQgdjEgPSAndGVzdCc7CitMRVQgdjIgPSAxMDsKK0xF VCB2MyA9IDU7CisKK1BSRVBBUkUgcTEgQVMgU0VMRUNUIHYxIHx8IGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgdjIpIGcoaSkgV0hFUkUgaSBJTiAodjIsIHYzKTsKKworU0VUIHBsYW5fY2FjaGVf bW9kZSB0byBmb3JjZV9nZW5lcmljX3BsYW47CisKK0VYRUNVVEUgcTE7CisKK0VYUExBSU4gRVhF Q1VURSBxMTsKKworLS0gZGVwZW5kZWN5IGNoZWNrCitEUk9QIFZBUklBQkxFIHYzOworCistLSBy ZWNyZWF0ZSB2MyBhZ2FpbgorQ1JFQVRFIFZBUklBQkxFIHYzIEFTIGludCBERUZBVUxUIDY7CisK Ky0tIHNob3VsZCB0byB3b3JrLCB0aGUgcGxhbiBzaG91bGQgYmUgcmVjcmVhdGVkCitFWEVDVVRF IHExOworCitERUFMTE9DQVRFIHExOworCistLSBmaWxsIHYxIGJ5IGxvbmcgdGV4dAorTEVUIHYx ID0gcmVwZWF0KCcgJywgMTAwMDApOworCitQUkVQQVJFIHExIEFTIFNFTEVDVCBsZW5ndGgodjEp OworCitFWEVDVVRFIHExOworCitMRVQgdjEgPSByZXBlYXQoJyAnLCA1MDAwKTsKKworRVhFQ1VU RSBxMTsKKworREVBTExPQ0FURSBxMTsKKworU0VUIHBsYW5fY2FjaGVfbW9kZSB0byBkZWZhdWx0 OworCitEUk9QIFZBUklBQkxFIHYxLCB2MiwgdjM7CisKK0NSRUFURSBST0xFIHZhcl90ZXN0X3Jv bGU7CisKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMudjEgQVMgaW50IERFRkFVTFQgMDsKKworLS0g Y2hlY2sgYWNsIHdoZW4gdmFyaWFibGUgaXMgYWNlc3NlZCBieSBzaW1wbGUgZXZhbCBleHByIG1l dGhvZAorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHVibGljLmZ4X3ZhcihpbnQpCitSRVRV Uk5TIGludCBBUyAkJAorREVDTEFSRSB4eCBpbnQ7CitCRUdJTgorICB4eCA6PSBwdWJsaWMudjEg KyAkMTsKKyAgUkVUVVJOIHh4OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworLS0gc2hv dWxkIGJlIG9rCitTRUxFQ1QgcHVibGljLmZ4X3ZhcigwKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBwdWJsaWMuZnhfdmFyKDApOwor CitTRVQgUk9MRSBUTyBkZWZhdWx0OworCitHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgcHVibGlj LnYxIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0t IHNob3VsZCBiZSBvaworU0VMRUNUIHB1YmxpYy5meF92YXIoMCk7CisKK1NFVCBST0xFIFRPIGRl ZmF1bHQ7CisKK1JFVk9LRSBTRUxFQ1QgT04gVkFSSUFCTEUgcHVibGljLnYxIEZST00gdmFyX3Rl c3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIGJlIGZh aWwKK1NFTEVDVCBwdWJsaWMuZnhfdmFyKDApOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitE Uk9QIEZVTkNUSU9OIHB1YmxpYy5meF92YXIoaW50KTsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMu djE7CisKK0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlOworCitDUkVBVEUgVFlQRSBwdWJsaWMuc3Zh cl90ZXN0X3R5cGUgQVMgKGEgaW50LCBiIGludCwgYyBudW1lcmljKTsKKworQ1JFQVRFIFZBUklB QkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsKKworTEVUIHB1YmxpYy5z dmFyID0gUk9XKDEwLDIwLDMwKTsKKworU0VMRUNUIHB1YmxpYy5zdmFyOworCitBTFRFUiBUWVBF IHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBEUk9QIEFUVFJJQlVURSBjOworCistLSBzaG91bGQgYmUg b2sKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKworQUxURVIgVFlQRSBwdWJsaWMuc3Zhcl90ZXN0X3R5 cGUgQUREIEFUVFJJQlVURSBjIGludDsKKworLS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVibGlj LnN2YXI7CisKK0xFVCBwdWJsaWMuc3ZhciA9IFJPVygxMCwyMCwzMCk7CisKKy0tIHNob3VsZCBi ZSBvayBhZ2FpbiBmb3IgbmV3IHZhbHVlCitTRUxFQ1QgcHVibGljLnN2YXI7CisKK0RST1AgVkFS SUFCTEUgcHVibGljLnN2YXI7CisKK0RST1AgVFlQRSBwdWJsaWMuc3Zhcl90ZXN0X3R5cGU7CisK K0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBBUyBpbnQ7CitzZWxlY3Qgb2lkIGFzIHZhcmlk IGZyb20gcGdfdmFyaWFibGUgd2hlcmUgdmFybmFtZSA9ICdzdmFyJyBhbmQgdmFybmFtZXNwYWNl ID0gJ3B1YmxpYyc6OnJlZ25hbWVzcGFjZSBcZ3NldAorCitTRUxFQ1Qgc2NoZW1hLCBuYW1lLCBy ZW1vdmVkIEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKTsKKworTEVUIHB1YmxpYy5zdmFyID0g MTAwOworCitTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZST00gcGdfc2Vzc2lvbl92YXJp YWJsZXMoKTsKKworQkVHSU47CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CisKKy0tIHZh bHVlIHNob3VsZCBiZSBpbiBtZW1vcnkKK1NFTEVDVCBzY2hlbWEsIHJlbW92ZWQgRlJPTSBwZ19z ZXNzaW9uX3ZhcmlhYmxlcygpOworCitST0xMQkFDSzsKKworLS0gdmFsdWUgc2hvdWxkIGJlIGlu IG1lbW9yeQorU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Npb25fdmFy aWFibGVzKCkgZiBXSEVSRSBmLnZhcmlkID0gOnZhcmlkOworCitTRUxFQ1QgcHVibGljLnN2YXI7 CisKK0JFR0lOOworCitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOworCistLSB2YWx1ZSBzaG91 bGQgYmUgaW4gbWVtb3J5CitTRUxFQ1Qgc2NoZW1hLCBuYW1lID0gOnZhcmlkOjp0ZXh0IEFTIG9r LCByZW1vdmVkIEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKSBmIFdIRVJFIGYudmFyaWQgPSA6 dmFyaWQ7OworCitDT01NSVQ7CisKKy0tIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFuOworU0VM RUNUIHNjaGVtYSwgbmFtZSwgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCkgV0hF UkUgZi52YXJpZCA9IDp2YXJpZDsKKworQkVHSU47CisKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMu c3ZhciBBUyBpbnQ7CitzZWxlY3Qgb2lkIGFzIHZhcmlkIGZyb20gcGdfdmFyaWFibGUgd2hlcmUg dmFybmFtZSA9ICdzdmFyJyBhbmQgdmFybmFtZXNwYWNlID0gJ3B1YmxpYyc6OnJlZ25hbWVzcGFj ZSBcZ3NldAorCisKK0xFVCBwdWJsaWMuc3ZhciA9IDEwMDsKKworUk9MTEJBQ0s7CisKKy0tIHRo ZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFuOworU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3ZlZCBG Uk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCkgZiBXSEVSRSBmLnZhcmlkID0gOnZhcmlkOworCitc dW5zZXQgdmFyaWQKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIGludDsKKworTEVU IHB1YmxpYy5zdmFyID0gMTAwOworCistLSByZXBlYXRlZCBhYm9ydGVkIHRyYW5zYWN0aW9uCitC RUdJTjsgRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsgUk9MTEJBQ0s7CitCRUdJTjsgRFJPUCBW QVJJQUJMRSBwdWJsaWMuc3ZhcjsgUk9MTEJBQ0s7CitCRUdJTjsgRFJPUCBWQVJJQUJMRSBwdWJs aWMuc3ZhcjsgUk9MTEJBQ0s7CisKKy0tIHRoZSB2YWx1ZSBzaG91bGQgYmUgc3RpbGwgYXZhaWxh YmxlCitTRUxFQ1QgcHVibGljLnN2YXI7CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CisK K0NSRUFURSBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBBUyAoYSBpbnQsIGIgaW50KTsKKwor Q1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsKKwor U0VMRUNUIHB1YmxpYy5zdmFyOworCitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBB REQgQVRUUklCVVRFIGMgaW50OworCitTRUxFQ1QgcHVibGljLnN2YXI7CisKK0FMVEVSIFRZUEUg cHVibGljLnN2YXJfdGVzdF90eXBlIERST1AgQVRUUklCVVRFIGI7CisKK1NFTEVDVCBwdWJsaWMu c3ZhcjsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0RST1AgVFlQRSBwdWJsaWMuc3Zh cl90ZXN0X3R5cGU7CisKK0NSRUFURSBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBBUyAoYSBp bnQsIGIgaW50KTsKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFy X3Rlc3RfdHlwZTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhcjIgQVMgcHVibGljLnN2YXJf dGVzdF90eXBlOworCitMRVQgcHVibGljLnN2YXIgPSAoMTAsIDIwKTsKKworQUxURVIgVFlQRSBw dWJsaWMuc3Zhcl90ZXN0X3R5cGUgQUREIEFUVFJJQlVURSBjIGludDsKKworU0VMRUNUIHB1Ymxp Yy5zdmFyOworCitMRVQgcHVibGljLnN2YXIyID0gKDEwLCAyMCwgMzApOworCitBTFRFUiBUWVBF IHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBEUk9QIEFUVFJJQlVURSBiOworCitTRUxFQ1QgcHVibGlj LnN2YXI7CitTRUxFQ1QgcHVibGljLnN2YXIyOworCitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFy OworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJfdGVz dF90eXBlOworCistLSBUaGUgY29tcG9zaXRlIHR5cGUgY2Fubm90IGJlIGNoYW5nZWQgd2hlbiBp dCBpcyB1c2VkCitDUkVBVEUgVFlQRSBwdWJsaWMuc3Zhcl90eXBlIEFTIChhIGludCwgYiBpbnQp OworCitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGljLnN2YXJfdHlwZTsKKwor LS0gc2hvdWxkIHRvIGZhaWwKK0FMVEVSIFRZUEUgcHVibGljLnN2YXJfdHlwZSBBTFRFUiBBVFRS SUJVVEUgYiBUWVBFIG51bWVyaWM7CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CisKK0NS RUFURSBUWVBFIHB1YmxpYy5zdmFyX3R5cGUyIEFTIChhIGludCwgYiBpbnQsIGMgcHVibGljLnN2 YXJfdHlwZSk7CisKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBBUyBwdWJsaWMuc3Zhcl90 eXBlMjsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0FMVEVSIFRZUEUgcHVibGljLnN2YXJfdHlwZSBB TFRFUiBBVFRSSUJVVEUgYiBUWVBFIG51bWVyaWM7CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2 YXI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJfdHlwZTI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJf dHlwZTsKKworLS0gVGhlIHZhcmlhYmxlIGNhbiBiZSBzaGFkb3dlZCBieSB0YWJsZSBvciBieSBh bGlhcworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdHlwZSBBUyAoYSBpbnQsIGIgaW50LCBjIGlu dCk7CitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGljLnN2YXJfdHlwZTsKKwor Q1JFQVRFIFRBQkxFIHB1YmxpYy5zdmFyIChhIGludCwgYiBpbnQpOworCitJTlNFUlQgSU5UTyBw dWJsaWMuc3ZhciBWQUxVRVMoMTAsIDIwKTsKKworTEVUIHB1YmxpYy5zdmFyID0gKDEwMCwgMjAw LCAzMDApOworCistLSBzaG91bGQgYmUgb2sKKy0tIHNob3cgdGFibGUKK1NFTEVDVCAqIEZST00g cHVibGljLnN2YXI7CitTRUxFQ1Qgc3Zhci5hIEZST00gcHVibGljLnN2YXI7CitTRUxFQ1Qgc3Zh ci4qIEZST00gcHVibGljLnN2YXI7CisKKy0tIHNob3cgdmFyaWFibGUKK1NFTEVDVCBwdWJsaWMu c3ZhcjsKK1NFTEVDVCBwdWJsaWMuc3Zhci5jOworU0VMRUNUIChwdWJsaWMuc3ZhcikuKjsKKwor LS0gdGhlIHZhcmlhYmxlIGlzIHNoYWRvd2VkLCByYWlzZSBlcnJvcgorU0VMRUNUIHB1YmxpYy5z dmFyLmMgRlJPTSBwdWJsaWMuc3ZhcjsKKworLS0gY2FuIGJlIGZpeGVkIGJ5IGFsaWFzCitTRUxF Q1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyIHg7CisKKy0tIGFnYWluIHdpdGggd2Fy bmluZ3MKK1NFVCBzZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyBUTyBvbjsKKwor U0VMRUNUICogRlJPTSBwdWJsaWMuc3ZhcjsKK1NFTEVDVCBzdmFyLmEgRlJPTSBwdWJsaWMuc3Zh cjsKK1NFTEVDVCBzdmFyLiogRlJPTSBwdWJsaWMuc3ZhcjsKKworLS0gc2hvdyB2YXJpYWJsZQor U0VMRUNUIHB1YmxpYy5zdmFyOworU0VMRUNUIHB1YmxpYy5zdmFyLmM7CitTRUxFQ1QgKHB1Ymxp Yy5zdmFyKS4qOworCistLSB0aGUgdmFyaWFibGUgaXMgc2hhZG93ZWQsIHJhaXNlIGVycm9yCitT RUxFQ1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyOworCistLSBjYW4gYmUgZml4ZWQg YnkgYWxpYXMKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXIgeDsKKworU0VU IHNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0eV93YXJuaW5nIFRPIERFRkFVTFQ7CisKK0RST1Ag VkFSSUFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRBQkxFIHB1YmxpYy5zdmFyOworRFJPUCBUWVBF IHB1YmxpYy5zdmFyX3R5cGU7CisKKy0tIHRoZSBMRVQgc3RhdGVtZW50IHNob3VsZCBiZSBkaXNh bGxvd2VkIGluIENURQorQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIGludDsKK1dJVEgg eCBBUyAoTEVUIHB1YmxpYy5zdmFyID0gMTAwKSBTRUxFQ1QgKiBGUk9NIHg7CisKKy0tIHRoZSBM RVQgc3RhdGVtZW50IGNhbiBiZSBwcmVwYXJlZAorUFJFUEFSRSBwcChpbnQpIEFTIExFVCBwdWJs aWMuc3ZhciA9ICQxOworRVhFQ1VURSBwcCgxMCk7CitTRUxFQ1QgcHVibGljLnN2YXI7CitFWEVD VVRFIHBwKDEwMDApOworU0VMRUNUIHB1YmxpYy5zdmFyOworCistLSB0ZXN0IG9mIGNvcnJlY3Qg ZGVwZW5kZW5jeQorRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0VYRUNVVEUgcHAoLTEpOwor CitERUFMTE9DQVRFIHBwOworCitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIyIEFTIGludDsK K0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhcjEgQVMgaW50IERFRkFVTFQgMTAwOworCitQUkVQ QVJFIHBwKGludCkgQVMgTEVUIHB1YmxpYy5zdmFyMiA9IHB1YmxpYy5zdmFyMSArICQxOworCitF WEVDVVRFIHBwKDEwMCk7CisKK1NFTEVDVCBwdWJsaWMuc3ZhcjEsIHB1YmxpYy5zdmFyMjsKKwor TEVUIHB1YmxpYy5zdmFyMSA9IDEwMDA7CisKK0VYRUNVVEUgcHAoMTAwKTsKKworU0VMRUNUIHB1 YmxpYy5zdmFyMSwgcHVibGljLnN2YXIyOworCitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyMTsK KworRVhFQ1VURSBwcCgxMDApOworCitERUFMTE9DQVRFIHBwOworCitEUk9QIFZBUklBQkxFIHB1 YmxpYy5zdmFyMjsKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIGludDsKKworLS0g c2hvdWxkIGJlIG9rCitMRVQgcHVibGljLnN2YXIgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSk7CisK Ky0tIHNob3VsZCBmYWlsCitMRVQgcHVibGljLnN2YXIgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMik7 CitMRVQgcHVibGljLnN2YXIgPSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCk7CisKK0RST1AgVkFSSUFC TEUgcHVibGljLnN2YXI7CisKK1NFVCBzZWFyY2hfcGF0aCBUTyBERUZBVUxUOworCitDUkVBVEUg VFlQRSBhYiBBUyAoYSBpbnRlZ2VyLCBiIGludGVnZXIpOworCitDUkVBVEUgVkFSSUFCTEUgdl9h YiBBUyBhYjsKKworQ1JFQVRFIFRBQkxFIHZfYWIgKGEgaW50ZWdlciwgYiBpbnRlZ2VyKTsKKwor U0VUIHNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0eV93YXJuaW5nID0gMTsKKworLS0gd2Fybmlu ZyBzaG91bGQgYmUgcmFpc2VkCitTRUxFQ1Qgdl9hYi5hIEZST00gdl9hYjsKKworQ1JFQVRFIFND SEVNQSB2X2FiOworCitDUkVBVEUgVkFSSUFCTEUgdl9hYi5hIEFTIGludGVnZXI7CisKKy0tIHdh cm5pbmcgc2hvdWxkIGJlIHJhaXNlZAorU0VMRUNUIHZfYWIuYSBGUk9NIHZfYWI7CisKK0RST1Ag VkFSSUFCTEUgdl9hYjsKK0RST1AgVEFCTEUgdl9hYjsKK0RST1AgVFlQRSBhYjsKKworQ1JFQVRF IFZBUklBQkxFIG15dmFyIEFTIGludDsKKworU0VMRUNUIG15dmFyLmJsYWJsYTsKKworRFJPUCBW QVJJQUJMRSBteXZhcjsKKworLS0gdGhlIHJlc3VsdCBvZiB2aWV3IHNob3VsZCBiZSBzYW1lIGlu IHBhcmFsbGVsIG1vZGUgdG9vCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgaW50OworTEVUIHYxID0g MTA7CisKK0NSRUFURSBWSUVXIHYxdmlldyBBUyBTRUxFQ1QgQ09BTEVTQ0UodjEsIDApIEFTIHJl c3VsdDsKKworU0VMRUNUICogRlJPTSB2MXZpZXc7CisKK1NFVCBkZWJ1Z19wYXJhbGxlbF9xdWVy eSBUTyBvbjsKKworU0VMRUNUICogRlJPTSB2MXZpZXc7CisKK1NFVCBkZWJ1Z19wYXJhbGxlbF9x dWVyeSBUTyBvZmY7CisKK0RST1AgVklFVyB2MXZpZXc7CitEUk9QIFZBUklBQkxFIHYxOworCist LSB0aGUgdmFsdWUgc2hvdWxkIG5vdCBiZSBjb3JydXB0ZWQKK0NSRUFURSBWQVJJQUJMRSB2MSB0 ZXh0IERFRkFVTFQgJ2FiYyc7CisKK0NSRUFURSBGVU5DVElPTiBmZnVuYygpCitSRVRVUk5TIHRl eHQgQVMgJCQKK0JFR0lOCisgIFJFVFVSTiBnZnVuYyh2MSk7CitFTkQKKyQkIExBTkdVQUdFIHBs cGdzcWw7CisKK0NSRUFURSBGVU5DVElPTiBnZnVuYyh0IHRleHQpCitSRVRVUk5TIHRleHQgQVMg JCQKK0JFR0lOCisgIExFVCB2MSA9ICdCT09NISc7CisgIFJFVFVSTiB0OworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworc2VsZWN0IGZmdW5jKCk7CisKK0RST1AgRlVOQ1RJT04gZmZ1bmMo KTsKK0RST1AgRlVOQ1RJT04gZ2Z1bmModGV4dCk7CisKK0RST1AgVkFSSUFCTEUgdjE7CisKK0NS RUFURSBUWVBFIHRfYW1fdHlwZSBBUyAoYiBpbnQpOworQ1JFQVRFIFNDSEVNQSB4eHhfYW07CisK K1NFVCBzZWFyY2hfcGF0aCBUTyBwdWJsaWM7CisKK0NSRUFURSBWQVJJQUJMRSB4eHhfYW0gQVMg dF9hbV90eXBlIERFRkFVTFQgcm93KDEwKTsKK1NFTEVDVCB4eHhfYW07CitTRUxFQ1QgcHVibGlj Lnh4eF9hbTsKKworQ1JFQVRFIFZBUklBQkxFIHh4eF9hbS5iIEFTIGludCBERUZBVUxUIDIwOwor CistLSB0aGUgcmVmZXJlbmNlIHNob3VsZCBiZSBhbWJpZ3VvdXMKK1NFTEVDVCB4eHhfYW0uYjsK KworLS0gZW5oYW5jZWQgcmVmZXJlbmNlcyBzaG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMueHh4 X2FtLmI7CitTRUxFQ1QgOiJEQk5BTUUiLnh4eF9hbS5iOworCitTRVQgc2Vzc2lvbl92YXJpYWJs ZXNfYW1iaWd1aXR5X3dhcm5pbmcgVE8gb247CisKK0NSRUFURSBUQUJMRSB4eHhfYW0oYiAgaW50 KTsKKworLS0gc2hvdWxkIGJlIHdhcm5pbmcsIG5vdCBlcnJvcgorU0VMRUNUIHh4eF9hbS5iIEZS T00geHh4X2FtOworCistLSBubyB3YXJuaW5nCitTRUxFQ1QgeC5iIEZST00geHh4X2FtIHg7CisK K0RST1AgVEFCTEUgeHh4X2FtOworRFJPUCBWQVJJQUJMRSBwdWJsaWMueHh4X2FtOworRFJPUCBW QVJJQUJMRSB4eHhfYW0uYjsKK0RST1AgU0NIRU1BIHh4eF9hbTsKKworQ1JFQVRFIFNDSEVNQSA6 IkRCTkFNRSI7CisKK0NSRUFURSBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUiLjoiREJOQU1F IiBBUyB0X2FtX3R5cGUgREVGQVVMVCByb3coMTApOworQ1JFQVRFIFZBUklBQkxFIDoiREJOQU1F Ii46IkRCTkFNRSIuYiBBUyBpbnQgREVGQVVMVCAyMDsKKworU0VUIHNlYXJjaF9wYXRoIHRvIDoi REJOQU1FIjsKKworLS0gSW4gdGhpcyB0ZXN0IGNhc2UsIGVycm9yIChhbmQgd2FybmluZykgbWVz c2FnZXMgY29udGFpbnMgZGF0YWJhc2UgbmFtZS4KKy0tIEl0IGlzICJyZWdyZXNzaW9uIiwgYnV0 IGl0IGNhbiBiZSBwb3NzaWJseSBkaWZmZXJlbnQsIHNvIHdlIHRyeSB0bworLS0gc3VwcmVzcyBl cnJvciBhbmQgd2FybmluZyBtZXNzYWdlcy4KKworXHNldCBFQ0hPIG5vbmUKK1NFVCBjbGllbnRf bWluX21lc3NhZ2VzIFRPIGVycm9yOworCistLSBzaG91bGQgYmUgYW1iaWd1b3VzCitTRUxFQ1Qg OiJEQk5BTUUiLmI7CisKKy0tIHNob3VsZCBiZSB0cnVlCitcZWNobyA6RVJST1IsIDpTUUxTVEFU RQorCistLSBzaG91bGQgYmUgYW1iaWd1b3VzIHRvbworU0VMRUNUIDoiREJOQU1FIi46IkRCTkFN RSIuYjsKKworLS0gc2hvdWxkIGJlIHRydWUKK1xlY2hvIDpFUlJPUiwgOlNRTFNUQVRFCisKK0NS RUFURSBUQUJMRSA6IkRCTkFNRSIoYiBpbnQpOworCistLSBzaG91bGQgYmUgd2FybmluZywgbm90 IGVycm9yCitTRUxFQ1QgOiJEQk5BTUUiLmIgRlJPTSA6IkRCTkFNRSI7CisKKy0tIHNob3VsZCBi ZSBmYWxzZQorXGVjaG8gOkVSUk9SLCA6U1FMU1RBVEUKKworXHNldCBFQ0hPIGFsbAorCitEUk9Q IFRBQkxFIDoiREJOQU1FIjsKKworRFJPUCBWQVJJQUJMRSA6IkRCTkFNRSIuOiJEQk5BTUUiLmI7 CitEUk9QIFZBUklBQkxFIDoiREJOQU1FIi46IkRCTkFNRSIuOiJEQk5BTUUiOworRFJPUCBTQ0hF TUEgOiJEQk5BTUUiOworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyBUTyBERUZBVUxUOworCitT RVQgc2VhcmNoX3BhdGggdG8gcHVibGljOwotLSAKMi40MC4xCgo= --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0009-this-patch-changes-error-message-column-doesn-t-exis.patch" Content-Disposition: attachment; filename="v20230517-1-0009-this-patch-changes-error-message-column-doesn-t-exis.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xerk1 RnJvbSA0MzFjYzYyNzJiZTY5NmZjY2ZhZDZkODM5NWY2MzFmOGQ5YTE5ZDY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBUaHUsIDI0IE5vdiAyMDIyIDEyOjM1OjU3ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwOS8xMF0gdGhpcyBwYXRjaCBjaGFuZ2VzIGVycm9yIG1lc3NhZ2UgImNvbHVtbiBkb2Vz bid0IGV4aXN0IgogdG8gbWVzc2FnZSAiY29sdW1uIG9yIHZhcmlhYmxlIGRvZXNuJ3QgZXhpc3Qi CgpUaGUgZXJyb3IgbWVzc2FnZSB3aWxsIGJlIG1vcmUgY29ycmVjdC4gVG9kYXksIG1pc3Npbmcg UEwvcGdTUUwgdmFyaWFibGUgY2FuIGJlIHJlcG9ydGVkLiBUaGUgY2hhbmdlIGhhcwppbXBhY3Qg b24gbG90IG9mIHJlZ3Jlc3MgdGVzdHMgbm90IHJlbGF0ZWQgdG8gc2Vzc2lvbiB2YXJpYWJsZXMs IGFuZCB0aGVuIGl0IGlzIGRpc3RyaWJ1dGVkIGFzIHNlcGFyYXRlIHBhdGNoCi0tLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8IDI0ICsrKysrKysrKysrLS0t CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAgICAgICAgICAgfCAgOCArKyst LQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaCAgICAgICAgICAgICAgIHwgIDEgKwog c3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfYXJyYXkub3V0IHwgIDIgKy0KIC4u Li9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX3JlY29yZC5vdXQgICB8ICA0ICstLQogc3Jj L3BsL3RjbC9leHBlY3RlZC9wbHRjbF9xdWVyaWVzLm91dCAgICAgICAgIHwgMTIgKysrLS0tLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgICAgIHwgMzIgKysrKysr KysrLS0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgICAgICAg ICAgIHwgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXJyb3JzLm91dCAgICAgICAg ICB8ICA4ICsrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICAg ICAgfCAxMiArKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL25hbWVzcGFjZS5vdXQg ICAgICAgfCAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9udW1lcm9sb2d5Lm91dCAg ICAgIHwgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxwZ3NxbC5vdXQgICAgICAg ICB8IDEyICsrKy0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgICAgICAg ICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAg ICAgfCAgMiArLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92YXJpYWJsZXMub3V0ICAg IHwgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJhbnNhY3Rpb25zLm91dCAgICB8 ICA0ICstLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91bmlvbi5vdXQgICAgICAgICAgIHwg IDIgKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDg4ODlmZmViMGQuLjEyNWRlNTUyMGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHRyYW5zZm9ybUluZGly ZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogICogV2hlbiB3 ZSBhcmUgaW4gYW4gZXhwcmVzc2lvbiB3aGVyZSBzZXNzaW9uIHZhcmlhYmxlcyBjYW5ub3QgYmUg dXNlZCwgd2UgcmFpc2UKICAqIHRoZSBmaXJzdCBmb3JtIG9mIGVycm9yIG1lc3NhZ2UuCiAgKi8K LXN0YXRpYyBib29sCitib29sCiBleHByX2tpbmRfYWxsb3dzX3Nlc3Npb25fdmFyaWFibGVzKFBh cnNlRXhwcktpbmQgcF9leHByX2tpbmQpCiB7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmluZGV4IDQxZDYwNDk0YjkuLjhmMzM5OWE0MmUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk ZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX2Vuci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX3R5cGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCkBAIC0zNjUxLDYgKzM2 NTIsMTkgQEAgZXJyb3JNaXNzaW5nUlRFKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VWYXIgKnJl bGF0aW9uKQogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByZWxhdGlvbi0+bG9jYXRp b24pKSk7CiB9CiAKKy8qCisgKiBzZXQgbWVzc2FnZSAiY29sdW1uIGRvZXMgbm90IGV4aXN0IiBv ciAiY29sdW1uIG9yIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0IgorICogaW4gZGVwZW5kZW5jeSBp ZiBleHByZXNzaW9uIGNvbnRleHQgYWxsb3dzIHNlc3Npb24gdmFyaWFibGVzLgorICovCitzdGF0 aWMgaW50Citjb2x1bW5fb3JfdmFyaWFibGVfZG9lc19ub3RfZXhpc3RzKFBhcnNlU3RhdGUgKnBz dGF0ZSwgY29uc3QgY2hhciAqY29sbmFtZSkKK3sKKwlpZiAoZXhwcl9raW5kX2FsbG93c19zZXNz aW9uX3ZhcmlhYmxlcyhwc3RhdGUtPnBfZXhwcl9raW5kKSkKKwkJcmV0dXJuIGVycm1zZygiY29s dW1uIG9yIHZhcmlhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIGNvbG5hbWUpOworCWVsc2UK KwkJcmV0dXJuIGVycm1zZygiY29sdW1uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIGNvbG5hbWUp OworfQorCiAvKgogICogR2VuZXJhdGUgYSBzdWl0YWJsZSBlcnJvciBhYm91dCBhIG1pc3Npbmcg Y29sdW1uLgogICoKQEAgLTM2ODUsNyArMzY5OSw3IEBAIGVycm9yTWlzc2luZ0NvbHVtbihQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiks CiAJCQkJCSByZWxuYW1lID8KIAkJCQkJIGVycm1zZygiY29sdW1uICVzLiVzIGRvZXMgbm90IGV4 aXN0IiwgcmVsbmFtZSwgY29sbmFtZSkgOgotCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGRv ZXMgbm90IGV4aXN0IiwgY29sbmFtZSksCisJCQkJCSBjb2x1bW5fb3JfdmFyaWFibGVfZG9lc19u b3RfZXhpc3RzKHBzdGF0ZSwgY29sbmFtZSksCiAJCQkJCSBlcnJkZXRhaWwoIlRoZXJlIGFyZSBj b2x1bW5zIG5hbWVkIFwiJXNcIiwgYnV0IHRoZXkgYXJlIGluIHRhYmxlcyB0aGF0IGNhbm5vdCBi ZSByZWZlcmVuY2VkIGZyb20gdGhpcyBwYXJ0IG9mIHRoZSBxdWVyeS4iLAogCQkJCQkJCSAgIGNv bG5hbWUpLAogCQkJCQkgIXJlbG5hbWUgPyBlcnJoaW50KCJUcnkgdXNpbmcgYSB0YWJsZS1xdWFs aWZpZWQgbmFtZS4iKSA6IDAsCkBAIC0zNjk1LDcgKzM3MDksNyBAQCBlcnJvck1pc3NpbmdDb2x1 bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NP TFVNTiksCiAJCQkJIHJlbG5hbWUgPwogCQkJCSBlcnJtc2coImNvbHVtbiAlcy4lcyBkb2VzIG5v dCBleGlzdCIsIHJlbG5hbWUsIGNvbG5hbWUpIDoKLQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwgY29sbmFtZSksCisJCQkJIGNvbHVtbl9vcl92YXJpYWJsZV9kb2Vz X25vdF9leGlzdHMocHN0YXRlLCBjb2xuYW1lKSwKIAkJCQkgZXJyZGV0YWlsKCJUaGVyZSBpcyBh IGNvbHVtbiBuYW1lZCBcIiVzXCIgaW4gdGFibGUgXCIlc1wiLCBidXQgaXQgY2Fubm90IGJlIHJl ZmVyZW5jZWQgZnJvbSB0aGlzIHBhcnQgb2YgdGhlIHF1ZXJ5LiIsCiAJCQkJCQkgICBjb2xuYW1l LCBzdGF0ZS0+cmV4YWN0MS0+ZXJlZi0+YWxpYXNuYW1lKSwKIAkJCQkgcnRlX3Zpc2libGVfaWZf bGF0ZXJhbChwc3RhdGUsIHN0YXRlLT5yZXhhY3QxKSA/CkBAIC0zNzEzLDE0ICszNzI3LDE0IEBA IGVycm9yTWlzc2luZ0NvbHVtbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCiAJCQkJCSByZWxuYW1lID8KIAkJCQkJIGVycm1zZygi Y29sdW1uICVzLiVzIGRvZXMgbm90IGV4aXN0IiwgcmVsbmFtZSwgY29sbmFtZSkgOgotCQkJCQkg ZXJybXNnKCJjb2x1bW4gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgY29sbmFtZSksCisJCQkJCSBj b2x1bW5fb3JfdmFyaWFibGVfZG9lc19ub3RfZXhpc3RzKHBzdGF0ZSwgY29sbmFtZSksCiAJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAkJLyogSGFuZGxlIGNh c2Ugd2hlcmUgd2UgaGF2ZSBhIHNpbmdsZSBhbHRlcm5hdGl2ZSBzcGVsbGluZyB0byBvZmZlciAq LwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVN TiksCiAJCQkJIHJlbG5hbWUgPwogCQkJCSBlcnJtc2coImNvbHVtbiAlcy4lcyBkb2VzIG5vdCBl eGlzdCIsIHJlbG5hbWUsIGNvbG5hbWUpIDoKLQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGRv ZXMgbm90IGV4aXN0IiwgY29sbmFtZSksCisJCQkJIGNvbHVtbl9vcl92YXJpYWJsZV9kb2VzX25v dF9leGlzdHMocHN0YXRlLCBjb2xuYW1lKSwKIAkJCQkgZXJyaGludCgiUGVyaGFwcyB5b3UgbWVh bnQgdG8gcmVmZXJlbmNlIHRoZSBjb2x1bW4gXCIlcy4lc1wiLiIsCiAJCQkJCQkgc3RhdGUtPnJm aXJzdC0+ZXJlZi0+YWxpYXNuYW1lLAogCQkJCQkJIHN0clZhbChsaXN0X250aChzdGF0ZS0+cmZp cnN0LT5lcmVmLT5jb2xuYW1lcywKQEAgLTM3MzQsNyArMzc0OCw3IEBAIGVycm9yTWlzc2luZ0Nv bHVtbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf Q09MVU1OKSwKIAkJCQkgcmVsbmFtZSA/CiAJCQkJIGVycm1zZygiY29sdW1uICVzLiVzIGRvZXMg bm90IGV4aXN0IiwgcmVsbmFtZSwgY29sbmFtZSkgOgotCQkJCSBlcnJtc2coImNvbHVtbiBcIiVz XCIgZG9lcyBub3QgZXhpc3QiLCBjb2xuYW1lKSwKKwkJCQkgY29sdW1uX29yX3ZhcmlhYmxlX2Rv ZXNfbm90X2V4aXN0cyhwc3RhdGUsIGNvbG5hbWUpLAogCQkJCSBlcnJoaW50KCJQZXJoYXBzIHlv dSBtZWFudCB0byByZWZlcmVuY2UgdGhlIGNvbHVtbiBcIiVzLiVzXCIgb3IgdGhlIGNvbHVtbiBc IiVzLiVzXCIuIiwKIAkJCQkJCSBzdGF0ZS0+cmZpcnN0LT5lcmVmLT5hbGlhc25hbWUsCiAJCQkJ CQkgc3RyVmFsKGxpc3RfbnRoKHN0YXRlLT5yZmlyc3QtPmVyZWYtPmNvbG5hbWVzLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDAyMmRkZTI3ZjkuLjc0NGE3NjczYjMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTc3OSw3ICs3NzksOSBAQCB0cmFuc2Zvcm1Bc3NpZ25t ZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJaWYgKCF0eXByZWxpZCkKIAkJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCi0JCQkJCQkgZXJybXNnKCJjYW5ub3QgYXNzaWduIHRvIGZpZWxkIFwiJXNcIiBvZiBjb2x1 bW4gXCIlc1wiIGJlY2F1c2UgaXRzIHR5cGUgJXMgaXMgbm90IGEgY29tcG9zaXRlIHR5cGUiLAor CQkJCQkJIGVycm1zZyhleHByX2tpbmRfYWxsb3dzX3Nlc3Npb25fdmFyaWFibGVzKHBzdGF0ZS0+ cF9leHByX2tpbmQpID8KKwkJCQkJCQkJICJjYW5ub3QgYXNzaWduIHRvIGZpZWxkIFwiJXNcIiBv ZiBjb2x1bW4gb3IgdmFyaWFibGUgXCIlc1wiIGJlY2F1c2UgaXRzIHR5cGUgJXMgaXMgbm90IGEg Y29tcG9zaXRlIHR5cGUiIDoKKwkJCQkJCQkJICJjYW5ub3QgYXNzaWduIHRvIGZpZWxkIFwiJXNc IiBvZiBjb2x1bW4gXCIlc1wiIGJlY2F1c2UgaXRzIHR5cGUgJXMgaXMgbm90IGEgY29tcG9zaXRl IHR5cGUiLAogCQkJCQkJCQlzdHJWYWwobiksIHRhcmdldE5hbWUsCiAJCQkJCQkJCWZvcm1hdF90 eXBlX2JlKHRhcmdldFR5cGVJZCkpLAogCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGxvY2F0aW9uKSkpOwpAQCAtNzg4LDcgKzc5MCw5IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRJbmRp cmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlpZiAoYXR0bnVtID09IEludmFsaWRBdHRy TnVtYmVyKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9DT0xVTU4pLAotCQkJCQkJIGVycm1zZygiY2Fubm90IGFzc2lnbiB0byBmaWVsZCBcIiVz XCIgb2YgY29sdW1uIFwiJXNcIiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggY29sdW1uIGluIGRh dGEgdHlwZSAlcyIsCisJCQkJCQkgZXJybXNnKGV4cHJfa2luZF9hbGxvd3Nfc2Vzc2lvbl92YXJp YWJsZXMocHN0YXRlLT5wX2V4cHJfa2luZCkgPworCQkJCQkJCQkgImNhbm5vdCBhc3NpZ24gdG8g ZmllbGQgXCIlc1wiIG9mIGNvbHVtbiBvciB2YXJpYWJsZSBcIiVzXCIgYmVjYXVzZSB0aGVyZSBp cyBubyBzdWNoIGNvbHVtbiBpbiBkYXRhIHR5cGUgJXMiIDoKKwkJCQkJCQkJICJjYW5ub3QgYXNz aWduIHRvIGZpZWxkIFwiJXNcIiBvZiBjb2x1bW4gXCIlc1wiIGJlY2F1c2UgdGhlcmUgaXMgbm8g c3VjaCBjb2x1bW4gaW4gZGF0YSB0eXBlICVzIiwKIAkJCQkJCQkJc3RyVmFsKG4pLCB0YXJnZXRO YW1lLAogCQkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBlSWQpKSwKIAkJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9leHByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5o CmluZGV4IGY2YTVjY2IwYzEuLmViZDllZDdjYmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9leHByLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaApA QCAtMjIsNSArMjIsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBzZXNzaW9uX3ZhcmlhYmxl c19hbWJpZ3VpdHlfd2FybmluZzsKIGV4dGVybiBOb2RlICp0cmFuc2Zvcm1FeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgUGFyc2VFeHByS2luZCBleHByS2luZCk7CiAKIGV4dGVy biBjb25zdCBjaGFyICpQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKTsK K2V4dGVybiBib29sIGV4cHJfa2luZF9hbGxvd3Nfc2Vzc2lvbl92YXJpYWJsZXMoUGFyc2VFeHBy S2luZCBwX2V4cHJfa2luZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9FWFBSX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2FycmF5Lm91dCBi L3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2FycmF5Lm91dAppbmRleCA5ZTIy ZTU2ZjAwLi5lMTMxZmViZjNkIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0 ZWQvcGxwZ3NxbF9hcnJheS5vdXQKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3Bs cGdzcWxfYXJyYXkub3V0CkBAIC00MSw3ICs0MSw3IEBAIE5PVElDRTogIGEgPSB7IigsMTEpIn0s IGFbMV0uaSA9IDExCiAtLSBwZXJoYXBzIHRoaXMgb3VnaHQgdG8gd29yaywgYnV0IGZvciBub3cg aXQgZG9lc24ndDoKIGRvICQkIGRlY2xhcmUgYSBjb21wbGV4W107CiBiZWdpbiBhWzE6Ml0uaSA6 PSBhcnJheVsxMSwxMl07IHJhaXNlIG5vdGljZSAnYSA9ICUnLCBhOyBlbmQkJDsKLUVSUk9SOiAg Y2Fubm90IGFzc2lnbiB0byBmaWVsZCAiaSIgb2YgY29sdW1uICJhIiBiZWNhdXNlIGl0cyB0eXBl IGNvbXBsZXhbXSBpcyBub3QgYSBjb21wb3NpdGUgdHlwZQorRVJST1I6ICBjYW5ub3QgYXNzaWdu IHRvIGZpZWxkICJpIiBvZiBjb2x1bW4gb3IgdmFyaWFibGUgImEiIGJlY2F1c2UgaXRzIHR5cGUg Y29tcGxleFtdIGlzIG5vdCBhIGNvbXBvc2l0ZSB0eXBlCiBMSU5FIDE6IGFbMToyXS5pIDo9IGFy cmF5WzExLDEyXQogICAgICAgICBeCiBRVUVSWTogIGFbMToyXS5pIDo9IGFycmF5WzExLDEyXQpk aWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfcmVjb3JkLm91 dCBiL3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX3JlY29yZC5vdXQKaW5kZXgg YWZiOTIyZGYyOS4uZjcwMmM3YWQ1NCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL2V4 cGVjdGVkL3BscGdzcWxfcmVjb3JkLm91dAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0 ZWQvcGxwZ3NxbF9yZWNvcmQub3V0CkBAIC0xMzUsNyArMTM1LDcgQEAgRVJST1I6ICByZWNvcmQg ImMiIGhhcyBubyBmaWVsZCAieCIKIENPTlRFWFQ6ICBQTC9wZ1NRTCBhc3NpZ25tZW50ICJjLngu cTEgPSAxIgogUEwvcGdTUUwgZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSAxIGF0IGFz c2lnbm1lbnQKIGRvICQkIGRlY2xhcmUgYyBuZXN0ZWRfaW50OHM7IGJlZ2luIGMuYzIueCA9IDE7 IGVuZCAkJDsKLUVSUk9SOiAgY2Fubm90IGFzc2lnbiB0byBmaWVsZCAieCIgb2YgY29sdW1uICJj IiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB0d29faW50OHMK K0VSUk9SOiAgY2Fubm90IGFzc2lnbiB0byBmaWVsZCAieCIgb2YgY29sdW1uIG9yIHZhcmlhYmxl ICJjIiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB0d29faW50 OHMKIExJTkUgMTogYy5jMi54ID0gMQogICAgICAgICBeCiBRVUVSWTogIGMuYzIueCA9IDEKQEAg LTE1Nyw3ICsxNTcsNyBAQCBFUlJPUjogIHJlY29yZCAiYyIgaGFzIG5vIGZpZWxkICJ4IgogQ09O VEVYVDogIFBML3BnU1FMIGFzc2lnbm1lbnQgImIuYy54LnExID0gMSIKIFBML3BnU1FMIGZ1bmN0 aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgMSBhdCBhc3NpZ25tZW50CiBkbyAkJCA8PGI+PiBk ZWNsYXJlIGMgbmVzdGVkX2ludDhzOyBiZWdpbiBiLmMuYzIueCA9IDE7IGVuZCAkJDsKLUVSUk9S OiAgY2Fubm90IGFzc2lnbiB0byBmaWVsZCAieCIgb2YgY29sdW1uICJiIiBiZWNhdXNlIHRoZXJl IGlzIG5vIHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB0d29faW50OHMKK0VSUk9SOiAgY2Fubm90 IGFzc2lnbiB0byBmaWVsZCAieCIgb2YgY29sdW1uIG9yIHZhcmlhYmxlICJiIiBiZWNhdXNlIHRo ZXJlIGlzIG5vIHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB0d29faW50OHMKIExJTkUgMTogYi5j LmMyLnggPSAxCiAgICAgICAgIF4KIFFVRVJZOiAgYi5jLmMyLnggPSAxCmRpZmYgLS1naXQgYS9z cmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNsX3F1ZXJpZXMub3V0IGIvc3JjL3BsL3RjbC9leHBlY3Rl ZC9wbHRjbF9xdWVyaWVzLm91dAppbmRleCAyZDkyMmMyMzMzLi4zYjY1MDZkNjEzIDEwMDY0NAot LS0gYS9zcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNsX3F1ZXJpZXMub3V0CisrKyBiL3NyYy9wbC90 Y2wvZXhwZWN0ZWQvcGx0Y2xfcXVlcmllcy5vdXQKQEAgLTI0NiwxMiArMjQ2LDEyIEBAIEVSUk9S OiAgdHlwZSAiYiIgZG9lcyBub3QgZXhpc3QKIHNlbGVjdCB0Y2xfZXZhbCgnc3BpX3ByZXBhcmUg YSAiYiB7IicpOwogRVJST1I6ICB1bm1hdGNoZWQgb3BlbiBicmFjZSBpbiBsaXN0CiBzZWxlY3Qg dGNsX2Vycm9yX2hhbmRsaW5nX3Rlc3QoJHRjbCRzcGlfcHJlcGFyZSAic2VsZWN0IG1vbyIgW10k dGNsJCk7Ci0gICAgICAgdGNsX2Vycm9yX2hhbmRsaW5nX3Rlc3QgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTUUxTVEFURTogNDI3MDMgICAgICAgICAg ICAgICAgICAgICArCi0gY29uZGl0aW9uOiB1bmRlZmluZWRfY29sdW1uICAgICAgICAgKwotIGN1 cnNvcl9wb3NpdGlvbjogOCAgICAgICAgICAgICAgICAgICsKLSBtZXNzYWdlOiBjb2x1bW4gIm1v byIgZG9lcyBub3QgZXhpc3QrCisgICAgICAgICAgICAgdGNsX2Vycm9yX2hhbmRsaW5nX3Rlc3Qg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBTUUxTVEFURTogNDI3MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgY29uZGl0aW9uOiB1bmRlZmluZWRfY29sdW1uICAgICAgICAgICAgICAgICAgICAgKwor IGN1cnNvcl9wb3NpdGlvbjogOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBtZXNz YWdlOiBjb2x1bW4gb3IgdmFyaWFibGUgIm1vbyIgZG9lcyBub3QgZXhpc3QrCiAgc3RhdGVtZW50 OiBzZWxlY3QgbW9vCiAoMSByb3cpCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90 YWJsZS5vdXQKaW5kZXggM2I3MDhjNzk3Ni4uZGVmMzAzOWM0NCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTEyODcsMTkgKzEyODcsMTkgQEAgc2VsZWN0 ICogZnJvbSBhdGFjYzE7CiAoMSByb3cpCiAKIHNlbGVjdCAqIGZyb20gYXRhY2MxIG9yZGVyIGJ5 IGE7Ci1FUlJPUjogIGNvbHVtbiAiYSIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9y IHZhcmlhYmxlICJhIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxlY3QgKiBmcm9tIGF0YWNj MSBvcmRlciBieSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBz ZWxlY3QgKiBmcm9tIGF0YWNjMSBvcmRlciBieSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4u LiI7Ci1FUlJPUjogIGNvbHVtbiAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgZG9lcyBu b3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICIuLi4uLi4uLnBnLmRyb3BwZWQu MS4uLi4uLi4uIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxlY3QgKiBmcm9tIGF0YWNjMSBv cmRlciBieSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIuLi4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgogc2VsZWN0ICogZnJvbSBhdGFjYzEgZ3JvdXAgYnkg YTsKLUVSUk9SOiAgY29sdW1uICJhIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3Ig dmFyaWFibGUgImEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCAqIGZyb20gYXRhY2Mx IGdyb3VwIGJ5IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHNl bGVjdCAqIGZyb20gYXRhY2MxIGdyb3VwIGJ5ICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4u IjsKLUVSUk9SOiAgY29sdW1uICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiBkb2VzIG5v dCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgIi4uLi4uLi4ucGcuZHJvcHBlZC4x Li4uLi4uLi4iIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCAqIGZyb20gYXRhY2MxIGdy b3VwIGJ5ICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIi4uLgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCiBzZWxlY3QgYXRhY2MxLiogZnJvbSBhdGFjYzE7CkBA IC0xMzA5LDcgKzEzMDksNyBAQCBzZWxlY3QgYXRhY2MxLiogZnJvbSBhdGFjYzE7CiAoMSByb3cp CiAKIHNlbGVjdCBhIGZyb20gYXRhY2MxOwotRVJST1I6ICBjb2x1bW4gImEiIGRvZXMgbm90IGV4 aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiYSIgZG9lcyBub3QgZXhpc3QKIExJTkUg MTogc2VsZWN0IGEgZnJvbSBhdGFjYzE7CiAgICAgICAgICAgICAgICBeCiBzZWxlY3QgYXRhY2Mx LmEgZnJvbSBhdGFjYzE7CkBAIC0xMzIzLDE1ICsxMzIzLDE1IEBAIHNlbGVjdCBiLGMsZCBmcm9t IGF0YWNjMTsKICgxIHJvdykKIAogc2VsZWN0IGEsYixjLGQgZnJvbSBhdGFjYzE7Ci1FUlJPUjog IGNvbHVtbiAiYSIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJh IiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxlY3QgYSxiLGMsZCBmcm9tIGF0YWNjMTsKICAg ICAgICAgICAgICAgIF4KIHNlbGVjdCAqIGZyb20gYXRhY2MxIHdoZXJlIGEgPSAxOwotRVJST1I6 ICBjb2x1bW4gImEiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAi YSIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogc2VsZWN0ICogZnJvbSBhdGFjYzEgd2hlcmUgYSA9 IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHNlbGVjdCAiLi4uLi4u Li5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgZnJvbSBhdGFjYzE7Ci1FUlJPUjogIGNvbHVtbiAiLi4u Li4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1u IG9yIHZhcmlhYmxlICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiBkb2VzIG5vdCBleGlz dAogTElORSAxOiBzZWxlY3QgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGZyb20gYXRh Y2MxOwogICAgICAgICAgICAgICAgXgogc2VsZWN0IGF0YWNjMS4iLi4uLi4uLi5wZy5kcm9wcGVk LjEuLi4uLi4uLiIgZnJvbSBhdGFjYzE7CkBAIC0xMzM5LDExICsxMzM5LDExIEBAIEVSUk9SOiAg Y29sdW1uIGF0YWNjMS4uLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIGRvZXMgbm90IGV4aXN0 CiBMSU5FIDE6IHNlbGVjdCBhdGFjYzEuIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGZy b20gYXRhY2MxOwogICAgICAgICAgICAgICAgXgogc2VsZWN0ICIuLi4uLi4uLnBnLmRyb3BwZWQu MS4uLi4uLi4uIixiLGMsZCBmcm9tIGF0YWNjMTsKLUVSUk9SOiAgY29sdW1uICIuLi4uLi4uLnBn LmRyb3BwZWQuMS4uLi4uLi4uIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFy aWFibGUgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGRvZXMgbm90IGV4aXN0CiBMSU5F IDE6IHNlbGVjdCAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIsYixjLGQgZnJvbSBhdGFj YzE7CiAgICAgICAgICAgICAgICBeCiBzZWxlY3QgKiBmcm9tIGF0YWNjMSB3aGVyZSAiLi4uLi4u Li5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgPSAxOwotRVJST1I6ICBjb2x1bW4gIi4uLi4uLi4ucGcu ZHJvcHBlZC4xLi4uLi4uLi4iIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJp YWJsZSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QKIExJTkUg MTogc2VsZWN0ICogZnJvbSBhdGFjYzEgd2hlcmUgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4u Li4iID0gLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIFVQREFU RXMKQEAgLTEzNTIsNyArMTM1Miw3IEBAIEVSUk9SOiAgY29sdW1uICJhIiBvZiByZWxhdGlvbiAi YXRhY2MxIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiB1cGRhdGUgYXRhY2MxIHNldCBhID0gMzsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogdXBkYXRlIGF0YWNjMSBzZXQgYiA9IDIgd2hl cmUgYSA9IDM7Ci1FUlJPUjogIGNvbHVtbiAiYSIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29s dW1uIG9yIHZhcmlhYmxlICJhIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiB1cGRhdGUgYXRhY2Mx IHNldCBiID0gMiB3aGVyZSBhID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgogdXBkYXRlIGF0YWNjMSBzZXQgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4i ID0gMzsKQEAgLTEzNjAsNyArMTM2MCw3IEBAIEVSUk9SOiAgY29sdW1uICIuLi4uLi4uLnBnLmRy b3BwZWQuMS4uLi4uLi4uIiBvZiByZWxhdGlvbiAiYXRhY2MxIiBkb2VzIG5vdCBleGlzCiBMSU5F IDE6IHVwZGF0ZSBhdGFjYzEgc2V0ICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiA9IDM7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHVwZGF0ZSBhdGFjYzEgc2V0IGIgPSAyIHdo ZXJlICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiA9IDM7Ci1FUlJPUjogIGNvbHVtbiAi Li4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29s dW1uIG9yIHZhcmlhYmxlICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiBkb2VzIG5vdCBl eGlzdAogTElORSAxOiB1cGRhdGUgYXRhY2MxIHNldCBiID0gMiB3aGVyZSAiLi4uLi4uLi5wZy5k cm9wcGVkLjEuLi4uLi4uLiIuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgogLS0gSU5TRVJUcwpAQCAtMTQwOCwxMSArMTQwOCwxMSBAQCBMSU5FIDE6IGluc2VydCBp bnRvIGF0YWNjMSAoIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iLGIsYyxkKSB2YS4uLgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIERFTEVURXMKIGRlbGV0ZSBmcm9tIGF0 YWNjMSB3aGVyZSBhID0gMzsKLUVSUk9SOiAgY29sdW1uICJhIiBkb2VzIG5vdCBleGlzdAorRVJS T1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgImEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IGRlbGV0 ZSBmcm9tIGF0YWNjMSB3aGVyZSBhID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KIGRlbGV0ZSBmcm9tIGF0YWNjMSB3aGVyZSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4u Li4uLiIgPSAzOwotRVJST1I6ICBjb2x1bW4gIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4i IGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiLi4uLi4uLi5wZy5k cm9wcGVkLjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogZGVsZXRlIGZyb20gYXRh Y2MxIHdoZXJlICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiA9IDM7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCiBkZWxldGUgZnJvbSBhdGFjYzE7CkBAIC0xNjk4LDcg KzE2OTgsNyBAQCBzZWxlY3QgZjEgZnJvbSBjMTsKIAogYWx0ZXIgdGFibGUgYzEgZHJvcCBjb2x1 bW4gZjE7CiBzZWxlY3QgZjEgZnJvbSBjMTsKLUVSUk9SOiAgY29sdW1uICJmMSIgZG9lcyBub3Qg ZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJmMSIgZG9lcyBub3QgZXhpc3QKIExJ TkUgMTogc2VsZWN0IGYxIGZyb20gYzE7CiAgICAgICAgICAgICAgICBeCiBISU5UOiAgUGVyaGFw cyB5b3UgbWVhbnQgdG8gcmVmZXJlbmNlIHRoZSBjb2x1bW4gImMxLmYyIi4KQEAgLTE3MTIsNyAr MTcxMiw3IEBAIEVSUk9SOiAgY2Fubm90IGRyb3AgaW5oZXJpdGVkIGNvbHVtbiAiZjEiCiBhbHRl ciB0YWJsZSBwMSBkcm9wIGNvbHVtbiBmMTsKIC0tIGMxLmYxIGlzIGRyb3BwZWQgbm93LCBzaW5j ZSB0aGVyZSBpcyBubyBsb2NhbCBkZWZpbml0aW9uIGZvciBpdAogc2VsZWN0IGYxIGZyb20gYzE7 Ci1FUlJPUjogIGNvbHVtbiAiZjEiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2 YXJpYWJsZSAiZjEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCBmMSBmcm9tIGMxOwog ICAgICAgICAgICAgICAgXgogSElOVDogIFBlcmhhcHMgeW91IG1lYW50IHRvIHJlZmVyZW5jZSB0 aGUgY29sdW1uICJjMS5mMiIuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CmluZGV4IDhl MzNlZWU3MTkuLjliMTFkODdmYzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CkBA IC0xMjIsNyArMTIyLDcgQEAgTElORSAxOiBDT1BZIHggVE8gc3Rkb3V0IFdIRVJFIGEgPSAxOwog Q09QWSB4IGZyb20gc3RkaW4gV0hFUkUgYSA9IDUwMDA0OwogQ09QWSB4IGZyb20gc3RkaW4gV0hF UkUgYSA+IDYwMDAzOwogQ09QWSB4IGZyb20gc3RkaW4gV0hFUkUgZiA+IDYwMDAzOwotRVJST1I6 ICBjb2x1bW4gImYiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAi ZiIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gV0hFUkUgZiA+IDYw MDAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRp biBXSEVSRSBhID0gbWF4KHguYik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2Vycm9ycy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Vycm9ycy5vdXQKaW5k ZXggOGM1Mjc0NzRkYS4uZTUzYWU0NTFkZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9lcnJvcnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXJyb3Jz Lm91dApAQCAtMjcsNyArMjcsNyBAQCBMSU5FIDE6IHNlbGVjdCAqIGZyb20gbm9uZXN1Y2g7CiAg ICAgICAgICAgICAgICAgICAgICAgXgogLS0gYmFkIG5hbWUgaW4gdGFyZ2V0IGxpc3QKIHNlbGVj dCBub25lc3VjaCBmcm9tIHBnX2RhdGFiYXNlOwotRVJST1I6ICBjb2x1bW4gIm5vbmVzdWNoIiBk b2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgIm5vbmVzdWNoIiBkb2Vz IG5vdCBleGlzdAogTElORSAxOiBzZWxlY3Qgbm9uZXN1Y2ggZnJvbSBwZ19kYXRhYmFzZTsKICAg ICAgICAgICAgICAgIF4KIC0tIGVtcHR5IGRpc3RpbmN0IGxpc3QgaXNuJ3QgT0sKQEAgLTM3LDE3 ICszNywxNyBAQCBMSU5FIDE6IHNlbGVjdCBkaXN0aW5jdCBmcm9tIHBnX2RhdGFiYXNlOwogICAg ICAgICAgICAgICAgICAgICAgICAgXgogLS0gYmFkIGF0dHJpYnV0ZSBuYW1lIG9uIGxocyBvZiBv cGVyYXRvcgogc2VsZWN0ICogZnJvbSBwZ19kYXRhYmFzZSB3aGVyZSBub25lc3VjaCA9IHBnX2Rh dGFiYXNlLmRhdG5hbWU7Ci1FUlJPUjogIGNvbHVtbiAibm9uZXN1Y2giIGRvZXMgbm90IGV4aXN0 CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAibm9uZXN1Y2giIGRvZXMgbm90IGV4aXN0CiBM SU5FIDE6IHNlbGVjdCAqIGZyb20gcGdfZGF0YWJhc2Ugd2hlcmUgbm9uZXN1Y2ggPSBwZ19kYXRh YmFzZS5kYXRuYS4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K IC0tIGJhZCBhdHRyaWJ1dGUgbmFtZSBvbiByaHMgb2Ygb3BlcmF0b3IKIHNlbGVjdCAqIGZyb20g cGdfZGF0YWJhc2Ugd2hlcmUgcGdfZGF0YWJhc2UuZGF0bmFtZSA9IG5vbmVzdWNoOwotRVJST1I6 ICBjb2x1bW4gIm5vbmVzdWNoIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFy aWFibGUgIm5vbmVzdWNoIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiAuLi5lY3QgKiBmcm9tIHBn X2RhdGFiYXNlIHdoZXJlIHBnX2RhdGFiYXNlLmRhdG5hbWUgPSBub25lc3VjaDsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgog LS0gYmFkIGF0dHJpYnV0ZSBuYW1lIGluIHNlbGVjdCBkaXN0aW5jdCBvbgogc2VsZWN0IGRpc3Rp bmN0IG9uIChmb29iYXIpICogZnJvbSBwZ19kYXRhYmFzZTsKLUVSUk9SOiAgY29sdW1uICJmb29i YXIiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiZm9vYmFyIiBk b2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxlY3QgZGlzdGluY3Qgb24gKGZvb2JhcikgKiBmcm9t IHBnX2RhdGFiYXNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIGdyb3VwaW5n IHdpdGggRk9SIFVQREFURQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKaW5kZXggYjVmNDQw ZTQzZS4uNTFkMTQ1ZWRmMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CkBAIC01Njc4 LDEzICs1Njc4LDEzIEBAIExJTkUgMTogc2VsZWN0IHQyLnV1bmlxdWUxIGZyb20KIEhJTlQ6ICBQ ZXJoYXBzIHlvdSBtZWFudCB0byByZWZlcmVuY2UgdGhlIGNvbHVtbiAidDIudW5pcXVlMSIuCiBz ZWxlY3QgdXVuaXF1ZTEgZnJvbQogICB0ZW5rMSB0MSBqb2luIHRlbmsyIHQyIG9uIHQxLnR3byA9 IHQyLnR3bzsgLS0gZXJyb3IsIHN1Z2dlc3QgYm90aCBhdCBvbmNlCi1FUlJPUjogIGNvbHVtbiAi dXVuaXF1ZTEiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAidXVu aXF1ZTEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCB1dW5pcXVlMSBmcm9tCiAgICAg ICAgICAgICAgICBeCiBISU5UOiAgUGVyaGFwcyB5b3UgbWVhbnQgdG8gcmVmZXJlbmNlIHRoZSBj b2x1bW4gInQxLnVuaXF1ZTEiIG9yIHRoZSBjb2x1bW4gInQyLnVuaXF1ZTEiLgogc2VsZWN0IGN0 aWQgZnJvbQogICB0ZW5rMSB0MSBqb2luIHRlbmsyIHQyIG9uIHQxLnR3byA9IHQyLnR3bzsgLS0g ZXJyb3IsIG5lZWQgcXVhbGlmaWNhdGlvbgotRVJST1I6ICBjb2x1bW4gImN0aWQiIGRvZXMgbm90 IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiY3RpZCIgZG9lcyBub3QgZXhpc3QK IExJTkUgMTogc2VsZWN0IGN0aWQgZnJvbQogICAgICAgICAgICAgICAgXgogREVUQUlMOiAgVGhl cmUgYXJlIGNvbHVtbnMgbmFtZWQgImN0aWQiLCBidXQgdGhleSBhcmUgaW4gdGFibGVzIHRoYXQg Y2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSB0aGlzIHBhcnQgb2YgdGhlIHF1ZXJ5LgpAQCAtNjc1 NCw3ICs2NzU0LDcgQEAgbGF0ZXJhbCAoc2VsZWN0ICogZnJvbSBpbnQ4X3RibCB0MSwKIAogLS0g dGVzdCBzb21lIGVycm9yIGNhc2VzIHdoZXJlIExBVEVSQUwgc2hvdWxkIGhhdmUgYmVlbiB1c2Vk IGJ1dCB3YXNuJ3QKIHNlbGVjdCBmMSxnIGZyb20gaW50NF90YmwgYSwgKHNlbGVjdCBmMSBhcyBn KSBzczsKLUVSUk9SOiAgY29sdW1uICJmMSIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1u IG9yIHZhcmlhYmxlICJmMSIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogc2VsZWN0IGYxLGcgZnJv bSBpbnQ0X3RibCBhLCAoc2VsZWN0IGYxIGFzIGcpIHNzOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgogREVUQUlMOiAgVGhlcmUgaXMgYSBjb2x1bW4gbmFt ZWQgImYxIiBpbiB0YWJsZSAiYSIsIGJ1dCBpdCBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9tIHRo aXMgcGFydCBvZiB0aGUgcXVlcnkuCkBAIC02NzY2LDcgKzY3NjYsNyBAQCBMSU5FIDE6IHNlbGVj dCBmMSxnIGZyb20gaW50NF90YmwgYSwgKHNlbGVjdCBhLmYxIGFzIGcpIHNzOwogREVUQUlMOiAg VGhlcmUgaXMgYW4gZW50cnkgZm9yIHRhYmxlICJhIiwgYnV0IGl0IGNhbm5vdCBiZSByZWZlcmVu Y2VkIGZyb20gdGhpcyBwYXJ0IG9mIHRoZSBxdWVyeS4KIEhJTlQ6ICBUbyByZWZlcmVuY2UgdGhh dCB0YWJsZSwgeW91IG11c3QgbWFyayB0aGlzIHN1YnF1ZXJ5IHdpdGggTEFURVJBTC4KIHNlbGVj dCBmMSxnIGZyb20gaW50NF90YmwgYSBjcm9zcyBqb2luIChzZWxlY3QgZjEgYXMgZykgc3M7Ci1F UlJPUjogIGNvbHVtbiAiZjEiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJp YWJsZSAiZjEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCBmMSxnIGZyb20gaW50NF90 YmwgYSBjcm9zcyBqb2luIChzZWxlY3QgZjEgYXMgZykgc3M7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogREVUQUlMOiAgVGhlcmUgaXMg YSBjb2x1bW4gbmFtZWQgImYxIiBpbiB0YWJsZSAiYSIsIGJ1dCBpdCBjYW5ub3QgYmUgcmVmZXJl bmNlZCBmcm9tIHRoaXMgcGFydCBvZiB0aGUgcXVlcnkuCkBAIC02ODAzLDcgKzY4MDMsNyBAQCBM SU5FIDE6IHNlbGVjdCAxIGZyb20gdGVuazEgYSwgbGF0ZXJhbCAoc2VsZWN0IG1heChhLnVuaXF1 ZTEpIGZyb20gaS4uLgogY3JlYXRlIHRlbXAgdGFibGUgeHgxIGFzIHNlbGVjdCBmMSBhcyB4MSwg LWYxIGFzIHgyIGZyb20gaW50NF90Ymw7CiAtLSBlcnJvciwgY2FuJ3QgZG8gdGhpczoKIHVwZGF0 ZSB4eDEgc2V0IHgyID0gZjEgZnJvbSAoc2VsZWN0ICogZnJvbSBpbnQ0X3RibCB3aGVyZSBmMSA9 IHgxKSBzczsKLUVSUk9SOiAgY29sdW1uICJ4MSIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29s dW1uIG9yIHZhcmlhYmxlICJ4MSIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogLi4uIHNldCB4MiA9 IGYxIGZyb20gKHNlbGVjdCAqIGZyb20gaW50NF90Ymwgd2hlcmUgZjEgPSB4MSkgc3M7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgogREVUQUlMOiAgVGhlcmUgaXMgYSBjb2x1bW4gbmFtZWQgIngxIiBpbiB0YWJsZSAieHgx IiwgYnV0IGl0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gdGhpcyBwYXJ0IG9mIHRoZSBxdWVy eS4KQEAgLTY4MjMsNyArNjgyMyw3IEBAIHVwZGF0ZSB4eDEgc2V0IHgyID0gZjEgZnJvbSB4eDEs IGxhdGVyYWwgKHNlbGVjdCAqIGZyb20gaW50NF90Ymwgd2hlcmUgZjEgPSB4MSkKIEVSUk9SOiAg dGFibGUgbmFtZSAieHgxIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UKIC0tIGFsc28gZXJyb3Jz OgogZGVsZXRlIGZyb20geHgxIHVzaW5nIChzZWxlY3QgKiBmcm9tIGludDRfdGJsIHdoZXJlIGYx ID0geDEpIHNzOwotRVJST1I6ICBjb2x1bW4gIngxIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBj b2x1bW4gb3IgdmFyaWFibGUgIngxIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiAuLi50ZSBmcm9t IHh4MSB1c2luZyAoc2VsZWN0ICogZnJvbSBpbnQ0X3RibCB3aGVyZSBmMSA9IHgxKSBzczsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCiBERVRBSUw6ICBUaGVyZSBpcyBhIGNvbHVtbiBuYW1lZCAieDEiIGluIHRhYmxlICJ4 eDEiLCBidXQgaXQgY2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSB0aGlzIHBhcnQgb2YgdGhlIHF1 ZXJ5LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9uYW1lc3BhY2Uub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9uYW1lc3BhY2Uub3V0CmluZGV4IGE2MmZkOGRl ZDAuLjE5NjZiNTVmZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbmFt ZXNwYWNlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL25hbWVzcGFjZS5vdXQK QEAgLTIzLDcgKzIzLDcgQEAgQkVHSU47CiBTRVQgc2VhcmNoX3BhdGggdG8gcHVibGljLCB0ZXN0 X25zX3NjaGVtYV8xOwogQ1JFQVRFIFNDSEVNQSB0ZXN0X25zX3NjaGVtYV8yCiAgICAgICAgQ1JF QVRFIFZJRVcgYWJjX3ZpZXcgQVMgU0VMRUNUIGMgRlJPTSBhYmM7Ci1FUlJPUjogIGNvbHVtbiAi YyIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJjIiBkb2VzIG5v dCBleGlzdAogTElORSAyOiAgICAgICAgQ1JFQVRFIFZJRVcgYWJjX3ZpZXcgQVMgU0VMRUNUIGMg RlJPTSBhYmM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgogQ09NTUlUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9udW1lcm9s b2d5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbnVtZXJvbG9neS5vdXQKaW5kZXgg ZjY2MmE1MDUwYS4uZmQ4OWRlZjk1OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9udW1lcm9sb2d5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL251bWVy b2xvZ3kub3V0CkBAIC0yOTksNyArMjk5LDcgQEAgU0VMRUNUIDFfMDAwLjVlMF8xOwogCiAtLSBl cnJvciBjYXNlcwogU0VMRUNUIF8xMDA7Ci1FUlJPUjogIGNvbHVtbiAiXzEwMCIgZG9lcyBub3Qg ZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJfMTAwIiBkb2VzIG5vdCBleGlzdAog TElORSAxOiBTRUxFQ1QgXzEwMDsKICAgICAgICAgICAgICAgIF4KIFNFTEVDVCAxMDBfOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbHBnc3FsLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxwZ3NxbC5vdXQKaW5kZXggMjcyZjVkMjExMS4uNDRjM2EzNTQ2 MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbHBnc3FsLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BscGdzcWwub3V0CkBAIC0yNjAwLDcgKzI2MDAs NyBAQCBlbmQ7ICQkIGxhbmd1YWdlIHBscGdzcWw7CiAtLSBzaG91bGQgZmFpbDogU1FMU1RBVEUg YW5kIFNRTEVSUk0gYXJlIG9ubHkgaW4gZGVmaW5lZCBFWENFUFRJT04KIC0tIGJsb2Nrcwogc2Vs ZWN0IGV4Y3B0X3Rlc3QxKCk7Ci1FUlJPUjogIGNvbHVtbiAic3Fsc3RhdGUiIGRvZXMgbm90IGV4 aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAic3Fsc3RhdGUiIGRvZXMgbm90IGV4aXN0 CiBMSU5FIDE6IHNxbHN0YXRlCiAgICAgICAgIF4KIFFVRVJZOiAgc3Fsc3RhdGUKQEAgLTI2MTUs NyArMjYxNSw3IEBAIGJlZ2luCiBlbmQ7ICQkIGxhbmd1YWdlIHBscGdzcWw7CiAtLSBzaG91bGQg ZmFpbAogc2VsZWN0IGV4Y3B0X3Rlc3QyKCk7Ci1FUlJPUjogIGNvbHVtbiAic3Fsc3RhdGUiIGRv ZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAic3Fsc3RhdGUiIGRvZXMg bm90IGV4aXN0CiBMSU5FIDE6IHNxbHN0YXRlCiAgICAgICAgIF4KIFFVRVJZOiAgc3Fsc3RhdGUK QEAgLTQ2NDgsNyArNDY0OCw3IEBAIEJFR0lOCiAgICAgICAgIFJBSVNFIE5PVElDRSAnJSwgJScs IHIucm9vbW5vLCByLmNvbW1lbnQ7CiAgICAgRU5EIExPT1A7CiBFTkQkJDsKLUVSUk9SOiAgY29s dW1uICJmb28iIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiZm9v IiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBTRUxFQ1QgcnRyaW0ocm9vbW5vKSBBUyByb29tbm8s IGZvbyBGUk9NIFJvb20gT1JERVIgQlkgcm9vbW4uLi4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCiBRVUVSWTogIFNFTEVDVCBydHJpbShyb29tbm8pIEFTIHJvb21u bywgZm9vIEZST00gUm9vbSBPUkRFUiBCWSByb29tbm8KQEAgLTQ2OTAsNyArNDY5MCw3IEBAIGJl Z2luCiAgIHJhaXNlIG5vdGljZSAneCA9ICUnLCB4OwogZW5kOwogJCQ7Ci1FUlJPUjogIGNvbHVt biAieCIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJ4IiBkb2Vz IG5vdCBleGlzdAogTElORSAxOiB4ICsgMQogICAgICAgICBeCiBRVUVSWTogIHggKyAxCkBAIC00 NzAyLDcgKzQ3MDIsNyBAQCBiZWdpbgogICByYWlzZSBub3RpY2UgJ3ggPSAlLCB5ID0gJScsIHgs IHk7CiBlbmQ7CiAkJDsKLUVSUk9SOiAgY29sdW1uICJ4IiBkb2VzIG5vdCBleGlzdAorRVJST1I6 ICBjb2x1bW4gb3IgdmFyaWFibGUgIngiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHggKyAxCiAg ICAgICAgIF4KIFFVRVJZOiAgeCArIDEKQEAgLTU3NDIsNyArNTc0Miw3IEBAIEFMVEVSIFRBQkxF IGFsdGVyX3RhYmxlX3VuZGVyX3RyYW5zaXRpb25fdGFibGVzCiAgIERST1AgY29sdW1uIG5hbWU7 CiBVUERBVEUgYWx0ZXJfdGFibGVfdW5kZXJfdHJhbnNpdGlvbl90YWJsZXMKICAgU0VUIGlkID0g aWQ7Ci1FUlJPUjogIGNvbHVtbiAibmFtZSIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1u IG9yIHZhcmlhYmxlICJuYW1lIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiAoU0VMRUNUIHN0cmlu Z19hZ2coaWQgfHwgJz0nIHx8IG5hbWUsICcsJykgRlJPTSBkKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KIFFVRVJZOiAgKFNFTEVDVCBzdHJpbmdfYWdnKGlkIHx8 ICc9JyB8fCBuYW1lLCAnLCcpIEZST00gZCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0Cmlu ZGV4IDk1NmU0NzU0NDcuLjFmZDcwNmE2ZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91 dApAQCAtMTIwLDcgKzEyMCw3IEBAIFNFTEVDVCAkMSwgJDIgXGJpbmQgJ2ZvbycgJ2JhcicgXGcK IC0tIGVycm9ycwogLS0gcGFyc2UgZXJyb3IKIFNFTEVDVCBmb28gXGJpbmQgXGcKLUVSUk9SOiAg Y29sdW1uICJmb28iIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAi Zm9vIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBTRUxFQ1QgZm9vIAogICAgICAgICAgICAgICAg XgogLS0gdGNvcCBlcnJvcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCA3NjRi ODI3MzcyLi4yMmQ4MjMzM2I0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAt MTE5MSw3ICsxMTkxLDcgQEAgZHJvcCBydWxlIHJ1bGVzX2Zvb3J1bGUgb24gcnVsZXNfZm9vOwog LS0gdGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIGYxIGlzIG5vdCBleHBvc2VkIGZvciB1bnF1YWxp ZmllZCByZWZlcmVuY2U6CiBjcmVhdGUgcnVsZSBydWxlc19mb29ydWxlIGFzIG9uIGluc2VydCB0 byBydWxlc19mb28gd2hlcmUgZjEgPCAxMDAKIGRvIGluc3RlYWQgaW5zZXJ0IGludG8gcnVsZXNf Zm9vMiB2YWx1ZXMgKGYxKTsKLUVSUk9SOiAgY29sdW1uICJmMSIgZG9lcyBub3QgZXhpc3QKK0VS Uk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJmMSIgZG9lcyBub3QgZXhpc3QKIExJTkUgMjogZG8g aW5zdGVhZCBpbnNlcnQgaW50byBydWxlc19mb28yIHZhbHVlcyAoZjEpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBERVRBSUw6ICBUaGVyZSBh cmUgY29sdW1ucyBuYW1lZCAiZjEiLCBidXQgdGhleSBhcmUgaW4gdGFibGVzIHRoYXQgY2Fubm90 IGJlIHJlZmVyZW5jZWQgZnJvbSB0aGlzIHBhcnQgb2YgdGhlIHF1ZXJ5LgpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Nlc3Npb25fdmFyaWFibGVzLm91dAppbmRleCA0NjNiMmM5NmY2 Li4wMWMyMzRjNmY0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nlc3Np b25fdmFyaWFibGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nlc3Npb25f dmFyaWFibGVzLm91dApAQCAtMjczLDcgKzI3Myw3IEBAIFNFTEVDVCB2MTsKIAogLS0gc2hvdWxk IGZhaWwKIExFVCB2MS54ID0gMTA7Ci1FUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgIngi IG9mIGNvbHVtbiAidjEiIGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0YSB0 eXBlIHQxCitFUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgIngiIG9mIGNvbHVtbiBvciB2 YXJpYWJsZSAidjEiIGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0YSB0eXBl IHQxCiBMSU5FIDE6IExFVCB2MS54ID0gMTA7CiAgICAgICAgICAgICBeCiBEUk9QIFZBUklBQkxF IHYxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0CmluZGV4IDJi MmNmZjdkOTEuLjYwYzA5NmI4NTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdHJhbnNhY3Rpb25zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5z YWN0aW9ucy5vdXQKQEAgLTI1Niw3ICsyNTYsNyBAQCBTRUxFQ1QgKiBGUk9NIHRyYW5zX2JhcmJh ejsJLS0gc2hvdWxkIGhhdmUgMQogQkVHSU47CiAJU0FWRVBPSU5UIG9uZTsKIAkJU0VMRUNUIHRy YW5zX2ZvbzsKLUVSUk9SOiAgY29sdW1uICJ0cmFuc19mb28iIGRvZXMgbm90IGV4aXN0CitFUlJP UjogIGNvbHVtbiBvciB2YXJpYWJsZSAidHJhbnNfZm9vIiBkb2VzIG5vdCBleGlzdAogTElORSAx OiBTRUxFQ1QgdHJhbnNfZm9vOwogICAgICAgICAgICAgICAgXgogCVJPTExCQUNLIFRPIFNBVkVQ T0lOVCBvbmU7CkBAIC0zMDUsNyArMzA1LDcgQEAgQkVHSU47CiAJU0FWRVBPSU5UIG9uZTsKIAkJ SU5TRVJUIElOVE8gc2F2ZXBvaW50cyBWQUxVRVMgKDUpOwogCQlTRUxFQ1QgdHJhbnNfZm9vOwot RVJST1I6ICBjb2x1bW4gInRyYW5zX2ZvbyIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1u IG9yIHZhcmlhYmxlICJ0cmFuc19mb28iIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IFNFTEVDVCB0 cmFuc19mb287CiAgICAgICAgICAgICAgICBeCiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3VuaW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv dW5pb24ub3V0CmluZGV4IGUyNjEzZDY3NzcuLjBhNjYxM2M0MzAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdW5pb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvdW5pb24ub3V0CkBAIC05MDcsNyArOTA3LDcgQEAgT1JERVIgQlkgcTIscTE7CiAKIC0t IFRoaXMgc2hvdWxkIGZhaWwsIGJlY2F1c2UgcTIgaXNuJ3QgYSBuYW1lIG9mIGFuIEVYQ0VQVCBv dXRwdXQgY29sdW1uCiBTRUxFQ1QgcTEgRlJPTSBpbnQ4X3RibCBFWENFUFQgU0VMRUNUIHEyIEZS T00gaW50OF90YmwgT1JERVIgQlkgcTIgTElNSVQgMTsKLUVSUk9SOiAgY29sdW1uICJxMiIgZG9l cyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJxMiIgZG9lcyBub3QgZXhp c3QKIExJTkUgMTogLi4uIGludDhfdGJsIEVYQ0VQVCBTRUxFQ1QgcTIgRlJPTSBpbnQ4X3RibCBP UkRFUiBCWSBxMiBMSU1JVCAxLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogREVUQUlMOiAgVGhlcmUgaXMgYSBjb2x1bW4g bmFtZWQgInEyIiBpbiB0YWJsZSAiKlNFTEVDVCogMiIsIGJ1dCBpdCBjYW5ub3QgYmUgcmVmZXJl bmNlZCBmcm9tIHRoaXMgcGFydCBvZiB0aGUgcXVlcnkuCi0tIAoyLjQwLjEKCg== --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0006-enhancing-psql-for-session-variables.patch" Content-Disposition: attachment; filename="v20230517-1-0006-enhancing-psql-for-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xerw4 RnJvbSA2ZjQ3Mjg2NjAxODMyYzA2MjNkNWVlMzg0ZTE1YWFkMmQ1YjA3MWIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMjo0MDoxMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDYv MTBdIGVuaGFuY2luZyBwc3FsIGZvciBzZXNzaW9uIHZhcmlhYmxlcwoKXGRWIGFuZCB0YWIgY29t cGxldGUgZm9yIHNlc3Npb24gdmFyaWFibGVzIHJlbGF0ZWQgY29tbWFuZHMKLS0tCiBzcmMvYmlu L3BzcWwvY29tbWFuZC5jICAgICAgfCAgMyArKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAg IHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmggICAgIHwgIDMgKysKIHNyYy9iaW4vcHNxbC9oZWxwLmMgICAgICAgICB8ICAx ICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyB8IDY0ICsrKysrKysrKysrKysrKysrKysr Ky0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29t bWFuZC5jCmluZGV4IDYwN2E1NzcxNWEuLmY1MzI0NGFkYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtOTgxLDYgKzk4 MSw5IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJYnJl YWs7CisJCQljYXNlICdWJzoJCQkvKiBWYXJpYWJsZXMgKi8KKwkJCQlzdWNjZXNzID0gbGlzdFZh cmlhYmxlcyhwYXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJCWJyZWFrOwogCQkJY2FzZSAneCc6 CQkJLyogRXh0ZW5zaW9ucyAqLwogCQkJCWlmIChzaG93X3ZlcmJvc2UpCiAJCQkJCXN1Y2Nlc3Mg PSBsaXN0RXh0ZW5zaW9uQ29udGVudHMocGF0dGVybik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDUwZjM5YTJlNTAu LjgyYTdlMjBmMzggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC01MDg5LDYgKzUwODksMTAyIEBAIGVycm9yX3JldHVy bjoKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBcZFYKKyAqCisgKiBsaXN0VmFyaWFibGVz KCkKKyAqLworYm9vbAorbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJcHJp bnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xh dGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIo JmJ1Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1Qgbi5uc3Bu YW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICB2LnZhcm5hbWUgYXMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMg XCIlc1wiLFxuIgorCQkJCQkgICIgIChTRUxFQ1QgYy5jb2xsbmFtZSBGUk9NIHBnX2NhdGFsb2cu cGdfY29sbGF0aW9uIGMsIHBnX2NhdGFsb2cucGdfdHlwZSBidFxuIgorCQkJCQkgICIgICBXSEVS RSBjLm9pZCA9IHYudmFyY29sbGF0aW9uIEFORCBidC5vaWQgPSB2LnZhcnR5cGUgQU5EIHYudmFy Y29sbGF0aW9uIDw+IGJ0LnR5cGNvbGxhdGlvbikgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIE5P VCB2LnZhcmlzbm90bnVsbCBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgTk9UIHYudmFyaXNpbW11 dGFibGUgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52 YXJkZWZleHByLCAwKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRf dXNlcmJ5aWQodi52YXJvd25lcikgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIENBU0Ugdi52YXJl b3hhY3Rpb25cbiIKKwkJCQkJICAiICAgIFdIRU4gJ2QnIFRIRU4gJ09OIENPTU1JVCBEUk9QJ1xu IgorCQkJCQkgICIgICAgV0hFTiAncicgVEhFTiAnT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUJyBF TkQgYXMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2NoZW1hIiksCisJCQkJCSAg Z2V0dGV4dF9ub29wKCJOYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJUeXBlIiksCisJCQkJ CSAgZ2V0dGV4dF9ub29wKCJDb2xsYXRpb24iKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk51bGxh YmxlIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJNdXRhYmxlIiksCisJCQkJCSAgZ2V0dGV4dF9u b29wKCJEZWZhdWx0IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpLAorCQkJCQkgIGdl dHRleHRfbm9vcCgiVHJhbnNhY3Rpb25hbCBlbmQgYWN0aW9uIikpOworCisJaWYgKHZlcmJvc2Up CisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICAiKTsKKwkJcHJpbnRBQ0xD b2x1bW4oJmJ1ZiwgInYudmFyYWNsIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJ CQkgICIsXG4gIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKHYub2lkLCAncGdfdmFyaWFibGUn KSBBUyBcIiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkRlc2NyaXB0aW9uIikpOworCX0K KworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9n LnBnX3ZhcmlhYmxlIHYiCisJCQkJCQkgIlxuICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19u YW1lc3BhY2UgbiBPTiBuLm9pZCA9IHYudmFybmFtZXNwYWNlIik7CisKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmYnVmLCAiXG5XSEVSRSB0cnVlXG4iKTsKKwlpZiAoIXBhdHRlcm4pCisJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgICAgICBBTkQgbi5uc3BuYW1lIDw+ICdwZ19jYXRhbG9n J1xuIgorCQkJCQkJCSAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRpb25fc2NoZW1h J1xuIik7CisKKwlpZiAoIXZhbGlkYXRlU1FMTmFtZVBhdHRlcm4oJmJ1ZiwgcGF0dGVybiwgdHJ1 ZSwgZmFsc2UsCisJCQkJCQkJCSJuLm5zcG5hbWUiLCAidi52YXJuYW1lIiwgTlVMTCwKKwkJCQkJ CQkJInBnX2NhdGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiLAorCQkJCQkJCQlO VUxMLCAzKSkKKwkJcmV0dXJuIGZhbHNlOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1Ziwg Ik9SREVSIEJZIDEsMjsiKTsKKworCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwl0ZXJtUFFF eHBCdWZmZXIoJmJ1Zik7CisJaWYgKCFyZXMpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICog TW9zdCBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBjb250ZW50IHRvIHByaW50IGFuIGVtcHR5 IHRhYmxlIHdoZW4KKwkgKiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgb2JqZWN0cy4gIFdlIGludGVu dGlvbmFsbHkgZGV2aWF0ZSBmcm9tIHRoYXQKKwkgKiBoZXJlLCBidXQgb25seSBpbiAhcXVpZXQg bW9kZSwgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4KKwkgKi8KKwlpZiAoUFFudHVwbGVzKHJlcykg PT0gMCAmJiAhcHNldC5xdWlldCkKKwl7CisJCWlmIChwYXR0ZXJuKQorCQkJcGdfbG9nX2Vycm9y KCJEaWQgbm90IGZpbmQgYW55IHNlc3Npb24gdmFyaWFibGUgbmFtZWQgXCIlc1wiLiIsCisJCQkJ CQkgcGF0dGVybik7CisJCWVsc2UKKwkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBz ZXNzaW9uIHZhcmlhYmxlcy4iKTsKKwl9CisJZWxzZQorCXsKKwkJbXlvcHQubnVsbFByaW50ID0g TlVMTDsKKwkJbXlvcHQudGl0bGUgPSBfKCJMaXN0IG9mIHZhcmlhYmxlcyIpOworCQlteW9wdC50 cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwkJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFu c2xhdGVfY29sdW1uczsKKwkJbXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9IGxlbmd0aG9mKHRy YW5zbGF0ZV9jb2x1bW5zKTsKKworCQlwcmludFF1ZXJ5KHJlcywgJm15b3B0LCBwc2V0LnF1ZXJ5 Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisJfQorCisJUFFjbGVhcihyZXMpOworCXJldHVy biB0cnVlOworfQogCiAvKgogICogXGRGcApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCA1NTRmZTg2NzI1Li41NWFlMjM4 YWIyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuaApAQCAtMTQ2LDQgKzE0Niw3IEBAIGV4dGVybiBib29sIGxpc3RPcEZhbWls eUZ1bmN0aW9ucyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sCiAvKiBcZGwgb3Ig XGxvX2xpc3QgKi8KIGV4dGVybiBib29sIGxpc3RMYXJnZU9iamVjdHMoYm9vbCB2ZXJib3NlKTsK IAorLyogXGRWICovCitleHRlcm4gYm9vbCBsaXN0VmFyaWFibGVzKGNvbnN0IGNoYXIgKnBhdHRl cm4sIGJvb2wgdmFyYm9zZSk7CisKICNlbmRpZgkJCQkJCQkvKiBERVNDUklCRV9IICovCmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwppbmRleCBl Y2ZiM2MwOTliLi43ZTJkNjVjODExIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvaGVscC5jCisr KyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTI4Nyw2ICsyODcsNyBAQCBzbGFzaFVzYWdlKHVu c2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlIRUxQMCgiICBcXGRUW1MrXSBbUEFUVEVSTl0gICAg ICBsaXN0IGRhdGEgdHlwZXNcbiIpOwogCUhFTFAwKCIgIFxcZHVbUytdIFtQQVRURVJOXSAgICAg IGxpc3Qgcm9sZXNcbiIpOwogCUhFTFAwKCIgIFxcZHZbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qg dmlld3NcbiIpOworCUhFTFAwKCIgIFxcZFYgICAgIFtQQVRURVJOXSAgICAgIGxpc3QgdmFyaWFi bGVzXG4iKTsKIAlIRUxQMCgiICBcXGR4WytdICBbUEFUVEVSTl0gICAgICBsaXN0IGV4dGVuc2lv bnNcbiIpOwogCUhFTFAwKCIgIFxcZFggICAgIFtQQVRURVJOXSAgICAgIGxpc3QgZXh0ZW5kZWQg c3RhdGlzdGljc1xuIik7CiAJSEVMUDAoIiAgXFxkeVsrXSAgW1BBVFRFUk5dICAgICAgbGlzdCBl dmVudCB0cmlnZ2Vyc1xuIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggYmQwNDI0NDk2OS4uZTdjYWEy ZWE3MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtOTYyLDYgKzk2MiwxMyBAQCBzdGF0aWMgY29uc3Qg U2NoZW1hUXVlcnkgUXVlcnlfZm9yX3RyaWdnZXJfb2ZfdGFibGUgPSB7CiAJLnJlZm5hbWVzcGFj ZSA9ICJjMS5yZWxuYW1lc3BhY2UiLAogfTsKIAorc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1 ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcyA9IHsKKwkubWluX3NlcnZlcl92ZXJzaW9uID0gMTUw MDAwLAorCS5jYXRuYW1lID0gInBnX2NhdGFsb2cucGdfdmFyaWFibGUgdiIsCisJLnZpc2NvbmRp dGlvbiA9ICJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlX2lzX3Zpc2libGUodi5vaWQpIiwKKwkubmFt ZXNwYWNlID0gInYudmFybmFtZXNwYWNlIiwKKwkucmVzdWx0ID0gInYudmFybmFtZSIsCit9Owog CiAvKgogICogUXVlcmllcyB0byBnZXQgbGlzdHMgb2YgbmFtZXMgb2YgdmFyaW91cyBraW5kcyBv ZiB0aGluZ3MsIHBvc3NpYmx5CkBAIC0xMjQwLDYgKzEyNDcsOCBAQCBzdGF0aWMgY29uc3QgcGdz cWxfdGhpbmdfdCB3b3Jkc19hZnRlcl9jcmVhdGVbXSA9IHsKIAl7IkZPUkVJR04gVEFCTEUiLCBO VUxMLCBOVUxMLCBOVUxMfSwKIAl7IkZVTkNUSU9OIiwgTlVMTCwgTlVMTCwgUXVlcnlfZm9yX2xp c3Rfb2ZfZnVuY3Rpb25zfSwKIAl7IkdST1VQIiwgUXVlcnlfZm9yX2xpc3Rfb2Zfcm9sZXN9LAor CXsiSU1NVVRBQkxFIFZBUklBQkxFIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgVEhJTkdfTk9f RFJPUCB8IFRISU5HX05PX0FMVEVSfSwgLyogZm9yIENSRUFURSBJTU1VVEFCTEUKKwkJCQkJCQkJ CQkJCQkJCQkJCQkJCSAqIFZBUklBQkxFIC4uLiAqLwogCXsiSU5ERVgiLCBOVUxMLCBOVUxMLCAm UXVlcnlfZm9yX2xpc3Rfb2ZfaW5kZXhlc30sCiAJeyJMQU5HVUFHRSIsIFF1ZXJ5X2Zvcl9saXN0 X29mX2xhbmd1YWdlc30sCiAJeyJMQVJHRSBPQkpFQ1QiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBUSElOR19OT19DUkVBVEUgfCBUSElOR19OT19EUk9QfSwKQEAgLTEyNzgsNiArMTI4Nyw3IEBA IHN0YXRpYyBjb25zdCBwZ3NxbF90aGluZ190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJ CQkJCQkJCQkJCQkJCQkJCSAqIFRBQkxFIC4uLiAqLwogCXsiVVNFUiIsIFF1ZXJ5X2Zvcl9saXN0 X29mX3JvbGVzLCBOVUxMLCBOVUxMLCBLZXl3b3Jkc19mb3JfdXNlcl90aGluZ30sCiAJeyJVU0VS IE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVMTCwgTlVMTH0sCisJeyJWQVJJQUJMRSIsIE5VTEwsIE5V TEwsICZRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXN9LAogCXsiVklFVyIsIE5VTEwsIE5VTEws ICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3c30sCiAJe05VTEx9CQkJCQkJLyogZW5kIG9mIGxpc3Qg Ki8KIH07CkBAIC0xNjg5LDggKzE2OTksOCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAq dGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJPUlQiLCAiQUxURVIiLCAiQU5BTFlaRSIs ICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAiQ0xPU0UiLCAiQ0xVU1RFUiIsCiAJCSJD T01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFURSIsICJERUFMTE9DQVRFIiwgIkRFQ0xB UkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIsICJETyIsICJEUk9QIiwgIkVORCIsICJF WEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAiR1JBTlQiLCAiSU1QT1JUIEZPUkVJR04g U0NIRU1BIiwgIklOU0VSVCBJTlRPIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAotCQkiTUVS R0UgSU5UTyIsICJNT1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKKwkJIkZFVENIIiwgIkdSQU5U IiwgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIsICJJTlNFUlQgSU5UTyIsICJMRVQiLAorCQkiTElT VEVOIiwgIkxPQUQiLCAiTE9DSyIsICJNRVJHRSBJTlRPIiwgIk1PVkUiLCAiTk9USUZZIiwgIlBS RVBBUkUiLAogCQkiUkVBU1NJR04iLCAiUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyIsICJSRUlO REVYIiwgIlJFTEVBU0UiLAogCQkiUkVTRVQiLCAiUkVWT0tFIiwgIlJPTExCQUNLIiwKIAkJIlNB VkVQT0lOVCIsICJTRUNVUklUWSBMQUJFTCIsICJTRUxFQ1QiLCAiU0VUIiwgIlNIT1ciLCAiU1RB UlQiLApAQCAtMTcxMCw3ICsxNzIwLDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRl eHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZEYiLCAiXFxkRmQiLCAiXFxkRnAiLCAiXFxk RnQiLCAiXFxkZyIsICJcXGRpIiwgIlxcZGwiLCAiXFxkTCIsCiAJCSJcXGRtIiwgIlxcZG4iLCAi XFxkbyIsICJcXGRPIiwgIlxcZHAiLCAiXFxkUCIsICJcXGRQaSIsICJcXGRQdCIsCiAJCSJcXGRy ZHMiLCAiXFxkUnMiLCAiXFxkUnAiLCAiXFxkcyIsCi0JCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIs ICJcXGR1IiwgIlxcZHgiLCAiXFxkWCIsICJcXGR5IiwKKwkJIlxcZHQiLCAiXFxkVCIsICJcXGR2 IiwgIlxcZHUiLCAiXFxkeCIsICJcXGRYIiwgIlxcZHkiLCAiXFxkViIsCiAJCSJcXGVjaG8iLCAi XFxlZGl0IiwgIlxcZWYiLCAiXFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5nIiwKIAkJIlxc ZW5kaWYiLCAiXFxlcnJ2ZXJib3NlIiwgIlxcZXYiLAogCQkiXFxmIiwKQEAgLTIyMDMsNiArMjIx Myw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCQkJCQkJCQkJICAiQUxMIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiU1lT VEVNIiwgIlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiVE8iKTsKKwkvKiBBTFRF UiBWQVJJQUJMRSA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJWQVJJQUJM RSIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwg IlNFVCBTQ0hFTUEiKTsKIAkvKiBBTFRFUiBWSUVXIDxuYW1lPiAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlZJRVciLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkFMVEVSIENP TFVNTiIsICJPV05FUiBUTyIsICJSRU5BTUUiLApAQCAtMjc0NSw3ICsyNzU4LDcgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCQkJICAi Uk9VVElORSIsICJSVUxFIiwgIlNDSEVNQSIsICJTRVFVRU5DRSIsICJTRVJWRVIiLAogCQkJCQkg ICJTVEFUSVNUSUNTIiwgIlNVQlNDUklQVElPTiIsICJUQUJMRSIsCiAJCQkJCSAgIlRBQkxFU1BB Q0UiLCAiVEVYVCBTRUFSQ0giLCAiVFJBTlNGT1JNIEZPUiIsCi0JCQkJCSAgIlRSSUdHRVIiLCAi VFlQRSIsICJWSUVXIik7CisJCQkJCSAgIlRSSUdHRVIiLCAiVFlQRSIsICJWQVJJQUJMRSIsICJW SUVXIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09NTUVOVCIsICJPTiIsICJBQ0NFU1MiLCAiTUVU SE9EIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21l dGhvZHMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPTU1FTlQiLCAiT04iLCAiQ09OU1RSQUlOVCIp KQpAQCAtMzE4NCw3ICszMTk3LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIC8qIENSRUFURSBUQUJMRSAtLS0gaXMgYWxsb3dlZCBpbnNp ZGUgQ1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVzICovCiAJLyogQ29tcGxldGUgIkNS RUFURSBURU1QL1RFTVBPUkFSWSIgd2l0aCB0aGUgcG9zc2libGUgdGVtcCBvYmplY3RzICovCiAJ ZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJURU1QfFRFTVBPUkFSWSIpKQotCQlDT01Q TEVURV9XSVRIKCJTRVFVRU5DRSIsICJUQUJMRSIsICJWSUVXIik7CisJCUNPTVBMRVRFX1dJVEgo IklNTVVUQUJMRSBWQVJJQUJMRSIsICJTRVFVRU5DRSIsICJUQUJMRSIsICJWSUVXIiwgIlZBUklB QkxFIik7CiAJLyogQ29tcGxldGUgIkNSRUFURSBVTkxPR0dFRCIgd2l0aCBUQUJMRSBvciBNQVRW SUVXICovCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJVTkxPR0dFRCIpKQogCQlD T01QTEVURV9XSVRIKCJUQUJMRSIsICJNQVRFUklBTElaRUQgVklFVyIpOwpAQCAtMzQ5Miw2ICsz NTA1LDE3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGlu dCBlbmQpCiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCI9IiwgTWF0Y2hBbnlFeGNlcHQoIiopIikp KQogCQkJQ09NUExFVEVfV0lUSCgiLCIsICIpIik7CiAJfQorLyogQ1JFQVRFIFZBUklBQkxFIC0t LSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8K KwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+IHdpdGggQVMgKi8KKwllbHNlIGlm IChUYWlsTWF0Y2hlcygiSU1NVVRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEgoIlZBUklBQkxFIik7 CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSB8 fAorCQkJIFRhaWxNYXRjaGVzKCJURU1QfFRFTVBPUkFSWSIsICJWQVJJQUJMRSIsIE1hdGNoQW55 KSB8fAorCQkJIFRhaWxNYXRjaGVzKCJJTU1VVEFCTEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkp CisJCUNPTVBMRVRFX1dJVEgoIkFTIik7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlZBUklBQkxF IiwgTWF0Y2hBbnksICJBUyIpKQorCQkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+ IHdpdGggQVMgdHlwZXMgKi8KKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfZGF0YXR5cGVzKTsKIAogLyogQ1JFQVRFIFZJRVcgLS0tIGlzIGFsbG93ZWQgaW5z aWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAqLwogCS8qIENvbXBsZXRlIENS RUFURSBbIE9SIFJFUExBQ0UgXSBWSUVXIDxuYW1lPiB3aXRoIEFTICovCkBAIC0zNjA3LDcgKzM2 MzEsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQg ZW5kKQogCiAvKiBESVNDQVJEICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiRElTQ0FSRCIpKQotCQlD T01QTEVURV9XSVRIKCJBTEwiLCAiUExBTlMiLCAiU0VRVUVOQ0VTIiwgIlRFTVAiKTsKKwkJQ09N UExFVEVfV0lUSCgiQUxMIiwgIlBMQU5TIiwgIlNFUVVFTkNFUyIsICJURU1QIiwgIlZBUklBQkxF UyIpOwogCiAvKiBETyAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkRPIikpCkBAIC0zNzM0LDYgKzM3 NTgsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzKCJEUk9QIiwgIlRSQU5TRk9STSIsICJGT1IiLCBNYXRj aEFueSwgIkxBTkdVQUdFIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJDQVNDQURFIiwg IlJFU1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlcygi RFJPUCIsICJWQVJJQUJMRSIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl92YXJpYWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkRST1AiLCAiVkFSSUFC TEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIkNBU0NBREUiLCAiUkVTVFJJQ1QiKTsK KwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkVYRUNVVEUiKSkKIAkJQ09NUExF VEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcmVwYXJlZF9zdGF0ZW1lbnRzKTsKQEAg LTM5MjUsNyArMzk1NSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQg c3RhcnQsIGludCBlbmQpCiAJCSAqIG9iamVjdHMgc3VwcG9ydGVkLgogCQkgKi8KIAkJaWYgKEhl YWRNYXRjaGVzKCJBTFRFUiIsICJERUZBVUxUIiwgIlBSSVZJTEVHRVMiKSkKLQkJCUNPTVBMRVRF X1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiLCAiRlVOQ1RJT05TIiwgIlBST0NFRFVSRVMiLCAi Uk9VVElORVMiLCAiVFlQRVMiLCAiU0NIRU1BUyIpOworCQkJQ09NUExFVEVfV0lUSCgiVEFCTEVT IiwgIlNFUVVFTkNFUyIsICJGVU5DVElPTlMiLCAiUFJPQ0VEVVJFUyIsICJST1VUSU5FUyIsICJU WVBFUyIsICJTQ0hFTUFTIiwgIlZBUklBQkxFUyIpOwogCQllbHNlCiAJCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX2dyYW50YWJsZXMsCiAJCQkJCQkJ CQkJCSJBTEwgRlVOQ1RJT05TIElOIFNDSEVNQSIsCkBAIC0zOTQ3LDcgKzM5NzcsOCBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJ CQkJCQkiU0VRVUVOQ0UiLAogCQkJCQkJCQkJCQkiVEFCTEUiLAogCQkJCQkJCQkJCQkiVEFCTEVT UEFDRSIsCi0JCQkJCQkJCQkJCSJUWVBFIik7CisJCQkJCQkJCQkJCSJUWVBFIiwKKwkJCQkJCQkJ CQkJIlZBUklBQkxFIik7CiAJfQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJHUkFOVHxSRVZPS0Ui LCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpIHx8CiAJCQkgVGFpbE1hdGNoZXMoIlJFVk9LRSIsICJH UkFOVCIsICJPUFRJT04iLCAiRk9SIiwgTWF0Y2hBbnksICJPTiIsICJBTEwiKSkKQEAgLTM5NTUs NyArMzk4Niw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQs IGludCBlbmQpCiAJCQkJCSAgIlBST0NFRFVSRVMgSU4gU0NIRU1BIiwKIAkJCQkJICAiUk9VVElO RVMgSU4gU0NIRU1BIiwKIAkJCQkJICAiU0VRVUVOQ0VTIElOIFNDSEVNQSIsCi0JCQkJCSAgIlRB QkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJICAiVEFCTEVTIElOIFNDSEVNQSIsCisJCQkJCSAgIlZB UklBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChUYWlsTWF0Y2hlcygiR1JBTlR8UkVWT0tF IiwgTWF0Y2hBbnksICJPTiIsICJGT1JFSUdOIikgfHwKIAkJCSBUYWlsTWF0Y2hlcygiUkVWT0tF IiwgIkdSQU5UIiwgIk9QVElPTiIsICJGT1IiLCBNYXRjaEFueSwgIk9OIiwgIkZPUkVJR04iKSkK IAkJQ09NUExFVEVfV0lUSCgiREFUQSBXUkFQUEVSIiwgIlNFUlZFUiIpOwpAQCAtMzk5MSw2ICs0 MDIzLDggQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFj ZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiVFlQRSIpKQogCQkJQ09NUExFVEVfV0lUSF9T Q0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5cGVzKTsKKwkJZWxzZSBpZiAoVGFp bE1hdGNoZXMoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiR1JBTlQi LCBNYXRjaEFueSwgTWF0Y2hBbnksIE1hdGNoQW55KSkKIAkJCUNPTVBMRVRFX1dJVEgoIlRPIik7 CiAJCWVsc2UKQEAgLTQyNzUsNyArNDMwOSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFy ICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFBSRVBBUkUgeHggQVMgKi8KIAllbHNl IGlmIChNYXRjaGVzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJBUyIpKQotCQlDT01QTEVURV9XSVRI KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCBJTlRPIiwgIkRFTEVURSBGUk9NIik7CisJCUNP TVBMRVRFX1dJVEgoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5TRVJUIElOVE8iLCAiREVMRVRFIEZS T00iLCAiTEVUIik7CiAKIC8qCiAgKiBQUkVQQVJFIFRSQU5TQUNUSU9OIGlzIG1pc3Npbmcgb24g cHVycG9zZS4gSXQncyBpbnRlbmRlZCBmb3IgdHJhbnNhY3Rpb24KQEAgLTQ1NjgsNiArNDYwMiwx NCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5k KQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJVUERBVEUiLCBNYXRjaEFueSwgIlNFVCIsIE1hdGNo QW55RXhjZXB0KCIqPSIpKSkKIAkJQ09NUExFVEVfV0lUSCgiPSIpOwogCisvKiBMRVQgLS0tIGNh biBiZSBpbnNpZGUgRVhQTEFJTiwgUFJFUEFSRSBldGMgKi8KKwkvKiBJZiBwcmV2LiB3b3JkIGlz IExFVCBzdWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hl cygiTEVUIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29m X3ZhcmlhYmxlcyk7CisJLyogQ29tcGxldGUgTEVUIDx2YXJpYWJsZT4gd2l0aCAiPSIgKi8KKwll bHNlIGlmIChUYWlsTWF0Y2hlcygiTEVUIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCI9 Iik7CisKIC8qIFVTRVIgTUFQUElORyAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSfENSRUFU RXxEUk9QIiwgIlVTRVIiLCAiTUFQUElORyIpKQogCQlDT01QTEVURV9XSVRIKCJGT1IiKTsKQEAg LTQ3MzksNiArNDc4MSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQg c3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zf cm9sZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZHYqIikpCiAJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzKTsKKwllbHNlIGlmIChUYWls TWF0Y2hlc0NTKCJcXGRWKiIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZHgqIikp CiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZXh0ZW5zaW9ucyk7CiAJ ZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkWCoiKSkKLS0gCjIuNDAuMQoK --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0007-possibility-to-dump-session-variables-by-pg_dump.patch" Content-Disposition: attachment; filename="v20230517-1-0007-possibility-to-dump-session-variables-by-pg_dump.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xers3 RnJvbSA0Y2U5M2UxYmIwYzRkM2ZiMzY1YmZjZWNhYWY3MmYzMThkMWRiOGZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDo0OToxMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDcv MTBdIHBvc3NpYmlsaXR5IHRvIGR1bXAgc2Vzc2lvbiB2YXJpYWJsZXMgYnkgcGdfZHVtcAoKRW5o YW5jaW5nIHBnX2R1bXAgYWJvdXQgc2Vzc2lvbiB2YXJpYWJsZXMgc3VwcG9ydAotLS0KIHNyYy9i aW4vcGdfZHVtcC9jb21tb24uYyAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2Jpbi9wZ19kdW1w L2R1bXB1dGlscy5jICAgICAgICAgIHwgICA2ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAu aCAgICAgICAgICB8ICAgMiArCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg fCAgIDkgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgIHwgMjM3ICsrKysr KysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAg ICAgIHwgIDI1ICsrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgIHwgICA2 ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMgICAgICAgICB8ICAgOSArLQogc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgIHwgIDgyICsrKysrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwgICAxICsKIDEwIGZpbGVzIGNoYW5nZWQsIDM3 NiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9jb21tb24uYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwppbmRleCA1ZDk4ODk4NmVk Li40ZGVmYzhjMjE2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCkBAIC0yNjQsNyArMjY0LDggQEAgZ2V0U2NoZW1hRGF0 YShBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlc1B0cikKIAlwZ19sb2dfaW5mbygicmVhZGlu ZyBzdWJzY3JpcHRpb25zIik7CiAJZ2V0U3Vic2NyaXB0aW9ucyhmb3V0KTsKIAotCWZyZWUoaW5o aW5mbyk7CQkJCS8qIG5vdCBuZWVkZWQgYW55IGxvbmdlciAqLworCXBnX2xvZ19pbmZvKCJyZWFk aW5nIHZhcmlhYmxlcyIpOworCWdldFZhcmlhYmxlcyhmb3V0KTsKIAogCSpudW1UYWJsZXNQdHIg PSBudW1UYWJsZXM7CiAJcmV0dXJuIHRibGluZm87CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvZHVtcHV0aWxzLmMgYi9zcmMvYmluL3BnX2R1bXAvZHVtcHV0aWxzLmMKaW5kZXggMDc5Njkz NTg1Yy4uYmY2Mjg4MzRlMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2R1bXB1dGlscy5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9kdW1wdXRpbHMuYwpAQCAtNTExLDYgKzUxMSwxMiBAQCBk byB7IFwKIAkJQ09OVkVSVF9QUklWKCdyJywgIlNFTEVDVCIpOwogCQlDT05WRVJUX1BSSVYoJ3cn LCAiVVBEQVRFIik7CiAJfQorCWVsc2UgaWYgKHN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9PSAw IHx8CisJCQkgc3RyY21wKHR5cGUsICJWQVJJQUJMRVMiKSA9PSAwKQorCXsKKwkJQ09OVkVSVF9Q UklWKCdyJywgIlNFTEVDVCIpOworCQlDT05WRVJUX1BSSVYoJ3cnLCAiVVBEQVRFIik7CisJfQog CWVsc2UKIAkJYWJvcnQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IGFiYTc4MGVmNGIuLmEwMjc0 YmZmY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAorKysgYi9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwLmgKQEAgLTEzMiwxMiArMTMyLDE0IEBAIHR5cGVkZWYgc3Ry dWN0IF9yZXN0b3JlT3B0aW9ucwogCWludAkJCXNlbEZ1bmN0aW9uOwogCWludAkJCXNlbFRyaWdn ZXI7CiAJaW50CQkJc2VsVGFibGU7CisJaW50CQkJc2VsVmFyaWFibGU7CiAJU2ltcGxlU3RyaW5n TGlzdCBpbmRleE5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3QgZnVuY3Rpb25OYW1lczsKIAlTaW1w bGVTdHJpbmdMaXN0IHNjaGVtYU5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3Qgc2NoZW1hRXhjbHVk ZU5hbWVzOwogCVNpbXBsZVN0cmluZ0xpc3QgdHJpZ2dlck5hbWVzOwogCVNpbXBsZVN0cmluZ0xp c3QgdGFibGVOYW1lczsKKwlTaW1wbGVTdHJpbmdMaXN0IHZhcmlhYmxlTmFtZXM7CiAKIAlpbnQJ CQl1c2VEQjsKIAlDb25uUGFyYW1zCWNwYXJhbXM7CQkvKiBwYXJhbWV0ZXJzIHRvIHVzZSBpZiB1 c2VEQiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IGQ1MTgzNDllMTAu LmZiYmRkYjZiZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTI5NzEs NiArMjk3MSwxNCBAQCBfdG9jRW50cnlSZXF1aXJlZChUb2NFbnRyeSAqdGUsIHRlU2VjdGlvbiBj dXJTZWN0aW9uLCBBcmNoaXZlSGFuZGxlICpBSCkKIAkJCQkJIXNpbXBsZV9zdHJpbmdfbGlzdF9t ZW1iZXIoJnJvcHQtPnRyaWdnZXJOYW1lcywgdGUtPnRhZykpCiAJCQkJCXJldHVybiAwOwogCQkJ fQorCQkJZWxzZSBpZiAoc3RyY21wKHRlLT5kZXNjLCAiVkFSSUFCTEUiKSA9PSAwKQorCQkJewor CQkJCWlmICghcm9wdC0+c2VsVmFyaWFibGUpCisJCQkJCXJldHVybiAwOworCQkJCWlmIChyb3B0 LT52YXJpYWJsZU5hbWVzLmhlYWQgIT0gTlVMTCAmJgorCQkJCQkhc2ltcGxlX3N0cmluZ19saXN0 X21lbWJlcigmcm9wdC0+dmFyaWFibGVOYW1lcywgdGUtPnRhZykpCisJCQkJCXJldHVybiAwOwor CQkJfQogCQkJZWxzZQogCQkJCXJldHVybiAwOwogCQl9CkBAIC0zNDU5LDYgKzM0NjcsNyBAQCBf Z2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBUb2NFbnRyeSAqdGUp CiAJCXN0cmNtcCh0eXBlLCAiVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIpID09IDAgfHwKIAkJc3Ry Y21wKHR5cGUsICJURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIikgPT0gMCB8fAogCQlzdHJjbXAo dHlwZSwgIlRZUEUiKSA9PSAwIHx8CisJCXN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9PSAwIHx8 CiAJCXN0cmNtcCh0eXBlLCAiVklFVyIpID09IDAgfHwKIAkvKiBub24tc2NoZW1hLXNwZWNpZmll ZCBvYmplY3RzICovCiAJCXN0cmNtcCh0eXBlLCAiREFUQUJBU0UiKSA9PSAwIHx8CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwppbmRleCA0MWE1MWVjNWNkLi5kZGRmNzQxNTA4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTI5Niw2ICsy OTYsNyBAQCBzdGF0aWMgdm9pZCBkdW1wUG9saWN5KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFBvbGlj eUluZm8gKnBvbGluZm8pOwogc3RhdGljIHZvaWQgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZv dXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wUHVi bGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKnB1 YnJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29u c3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbyk7CitzdGF0aWMgdm9pZCBkdW1wVmFyaWFibGUo QXJjaGl2ZSAqZm91dCwgY29uc3QgVmFyaWFibGVJbmZvICp2YXJpbmZvKTsKIHN0YXRpYyB2b2lk IGR1bXBEYXRhYmFzZShBcmNoaXZlICpmb3V0KTsKIHN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZUNv bmZpZyhBcmNoaXZlICpBSCwgUFFFeHBCdWZmZXIgb3V0YnVmLAogCQkJCQkJCSAgIGNvbnN0IGNo YXIgKmRibmFtZSwgT2lkIGRib2lkKTsKQEAgLTQ5MjMsNiArNDkyNCwyMzIgQEAgZ2V0X25leHRf cG9zc2libGVfZnJlZV9wZ190eXBlX29pZChBcmNoaXZlICpmb3V0LCBQUUV4cEJ1ZmZlciB1cGdy YWRlX3F1ZXJ5KQogCXJldHVybiBuZXh0X3Bvc3NpYmxlX2ZyZWVfb2lkOwogfQogCisvKgorICog Z2V0VmFyaWFibGVzCisgKgkgIGdldCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJsZXMKKyAqLwor dm9pZAorZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpCit7CisJUFFFeHBCdWZmZXIgcXVlcnk7 CisJUEdyZXN1bHQgICAqcmVzOworCVZhcmlhYmxlSW5mbyAqdmFyaW5mbzsKKwlpbnQJCQlpX3Rh Ymxlb2lkOworCWludAkJCWlfb2lkOworCWludAkJCWlfdmFybmFtZTsKKwlpbnQJCQlpX3Zhcm5h bWVzcGFjZTsKKwlpbnQJCQlpX3ZhcnR5cGU7CisJaW50CQkJaV92YXJ0eXBuYW1lOworCWludAkJ CWlfdmFyZGVmZXhwcjsKKwlpbnQJCQlpX3ZhcmVveGFjdGlvbjsKKwlpbnQJCQlpX3Zhcmlzbm90 bnVsbDsKKwlpbnQJCQlpX3ZhcmlzaW1tdXRhYmxlOworCWludAkJCWlfdmFyb3duZXI7CisJaW50 CQkJaV92YXJjb2xsYXRpb247CisJaW50CQkJaV92YXJhY2w7CisJaW50CQkJaV9hY2xkZWZhdWx0 OworCWludAkJCWksCisJCQkJbnR1cHM7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA8IDE2 MDAwMCkKKwkJcmV0dXJuOworCisJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJcmVz ZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisKKwkvKiBHZXQgdGhlIHZhcmlhYmxlcyBpbiBjdXJyZW50 IGRhdGFiYXNlLiAqLworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkgICJTRUxFQ1Qg di50YWJsZW9pZCwgdi5vaWQsIHYudmFybmFtZSxcbiIKKwkJCQkJICAidi52YXJlb3hhY3Rpb24s XG4iCisJCQkJCSAgInYudmFybmFtZXNwYWNlLFxuIgorCQkJCQkgICJ2LnZhcnR5cGUsXG4iCisJ CQkJCSAgInBnX2NhdGFsb2cuZm9ybWF0X3R5cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMg dmFydHlwbmFtZSxcbiIKKwkJCQkJICAidi52YXJpc25vdG51bGwsXG4iCisJCQkJCSAgInYudmFy aXNpbW11dGFibGUsXG4iCisJCQkJCSAgIkNBU0UgV0hFTiB2LnZhcmNvbGxhdGlvbiA8PiB0LnR5 cGNvbGxhdGlvbiAiCisJCQkJCSAgIlRIRU4gdi52YXJjb2xsYXRpb24gRUxTRSAwIEVORCBBUyB2 YXJjb2xsYXRpb24sXG4iCisJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52YXJkZWZl eHByLDApIGFzIHZhcmRlZmV4cHIsXG4iCisJCQkJCSAgInYudmFyb3duZXIsXG4iCisJCQkJCSAg InYudmFyYWNsLFxuIgorCQkJCQkgICJhY2xkZWZhdWx0KCdWJywgdi52YXJvd25lcikgQVMgYWNs ZGVmYXVsdFxuIgorCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfdmFyaWFibGUgdlxuIgorCQkJ CQkgICJKT0lOIHBnX2NhdGFsb2cucGdfdHlwZSB0ICIKKwkJCQkJICAiT04gKHYudmFydHlwZSA9 IHQub2lkKSIpOworCisJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQ R1JFU19UVVBMRVNfT0spOworCisJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKKworCWlfdGFibGVv aWQgPSBQUWZudW1iZXIocmVzLCAidGFibGVvaWQiKTsKKwlpX29pZCA9IFBRZm51bWJlcihyZXMs ICJvaWQiKTsKKwlpX3Zhcm5hbWUgPSBQUWZudW1iZXIocmVzLCAidmFybmFtZSIpOworCWlfdmFy bmFtZXNwYWNlID0gUFFmbnVtYmVyKHJlcywgInZhcm5hbWVzcGFjZSIpOworCWlfdmFydHlwZSA9 IFBRZm51bWJlcihyZXMsICJ2YXJ0eXBlIik7CisJaV92YXJ0eXBuYW1lID0gUFFmbnVtYmVyKHJl cywgInZhcnR5cG5hbWUiKTsKKwlpX3ZhcmVveGFjdGlvbiA9IFBRZm51bWJlcihyZXMsICJ2YXJl b3hhY3Rpb24iKTsKKwlpX3ZhcmRlZmV4cHIgPSBQUWZudW1iZXIocmVzLCAidmFyZGVmZXhwciIp OworCWlfdmFyaXNub3RudWxsID0gUFFmbnVtYmVyKHJlcywgInZhcmlzbm90bnVsbCIpOworCWlf dmFyaXNpbW11dGFibGUgPSBQUWZudW1iZXIocmVzLCAidmFyaXNpbW11dGFibGUiKTsKKwlpX3Zh cmNvbGxhdGlvbiA9IFBRZm51bWJlcihyZXMsICJ2YXJjb2xsYXRpb24iKTsKKworCWlfdmFyb3du ZXIgPSBQUWZudW1iZXIocmVzLCAidmFyb3duZXIiKTsKKwlpX3ZhcmFjbCA9IFBRZm51bWJlcihy ZXMsICJ2YXJhY2wiKTsKKwlpX2FjbGRlZmF1bHQgPSBQUWZudW1iZXIocmVzLCAiYWNsZGVmYXVs dCIpOworCisJdmFyaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihWYXJpYWJsZUluZm8p KTsKKworCWZvciAoaSA9IDA7IGkgPCBudHVwczsgaSsrKQorCXsKKwkJVHlwZUluZm8gICAqdnR5 cGU7CisKKwkJdmFyaW5mb1tpXS5kb2JqLm9ialR5cGUgPSBET19WQVJJQUJMRTsKKwkJdmFyaW5m b1tpXS5kb2JqLmNhdElkLnRhYmxlb2lkID0KKwkJCWF0b29pZChQUWdldHZhbHVlKHJlcywgaSwg aV90YWJsZW9pZCkpOworCQl2YXJpbmZvW2ldLmRvYmouY2F0SWQub2lkID0gYXRvb2lkKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX29pZCkpOworCQlBc3NpZ25EdW1wSWQoJnZhcmluZm9baV0uZG9iaik7 CisJCXZhcmluZm9baV0uZG9iai5uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBp X3Zhcm5hbWUpKTsKKwkJdmFyaW5mb1tpXS5kb2JqLm5hbWVzcGFjZSA9CisJCQlmaW5kTmFtZXNw YWNlKGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJuYW1lc3BhY2UpKSk7CisKKwkJdmFy aW5mb1tpXS52YXJ0eXBlID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcnR5cGUpKTsK KwkJdmFyaW5mb1tpXS52YXJ0eXBuYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBp X3ZhcnR5cG5hbWUpKTsKKwkJdmFyaW5mb1tpXS52YXJlb3hhY3Rpb24gPSBwZ19zdHJkdXAoUFFn ZXR2YWx1ZShyZXMsIGksIGlfdmFyZW94YWN0aW9uKSk7CisJCXZhcmluZm9baV0udmFyaXNub3Ru dWxsID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV92YXJpc25vdG51bGwpKSA9PSAndCc7CisJCXZh cmluZm9baV0udmFyaXNpbW11dGFibGUgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmlzaW1t dXRhYmxlKSkgPT0gJ3QnOworCQl2YXJpbmZvW2ldLnZhcmNvbGxhdGlvbiA9IGF0b29pZChQUWdl dHZhbHVlKHJlcywgaSwgaV92YXJjb2xsYXRpb24pKTsKKworCQl2YXJpbmZvW2ldLmRhY2wuYWNs ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmFjbCkpOworCQl2YXJpbmZvW2ld LmRhY2wuYWNsZGVmYXVsdCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9hY2xkZWZh dWx0KSk7CisJCXZhcmluZm9baV0uZGFjbC5wcml2dHlwZSA9IDA7CisJCXZhcmluZm9baV0uZGFj bC5pbml0cHJpdnMgPSBOVUxMOworCQl2YXJpbmZvW2ldLnJvbG5hbWUgPSBnZXRSb2xlTmFtZShQ UWdldHZhbHVlKHJlcywgaSwgaV92YXJvd25lcikpOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdl IHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHZhcmluZm9baV0u ZG9iaiksIGZvdXQpOworCisJCS8qIERvIG5vdCB0cnkgdG8gZHVtcCBBQ0wgaWYgbm8gQUNMIGV4 aXN0cy4gKi8KKwkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIGlfdmFyYWNsKSkKKwkJCXZhcmlu Zm9baV0uZG9iai5jb21wb25lbnRzIHw9IERVTVBfQ09NUE9ORU5UX0FDTDsKKworCQlpZiAoUFFn ZXRpc251bGwocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKQorCQkJdmFyaW5mb1tpXS52YXJkZWZleHBy ID0gTlVMTDsKKwkJZWxzZQorCQkJdmFyaW5mb1tpXS52YXJkZWZleHByID0gcGdfc3RyZHVwKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKTsKKworCQlpZiAoc3RybGVuKHZhcmluZm9b aV0ucm9sbmFtZSkgPT0gMCkKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiB2YXJpYWJsZSBc IiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKKwkJCQkJCSAgIHZhcmluZm9baV0uZG9iai5u YW1lKTsKKworCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KKwkJc2Vs ZWN0RHVtcGFibGVPYmplY3QoJih2YXJpbmZvW2ldLmRvYmopLCBmb3V0KTsKKworCQl2dHlwZSA9 IGZpbmRUeXBlQnlPaWQodmFyaW5mb1tpXS52YXJ0eXBlKTsKKwkJYWRkT2JqZWN0RGVwZW5kZW5j eSgmdmFyaW5mb1tpXS5kb2JqLCB2dHlwZS0+ZG9iai5kdW1wSWQpOworCX0KKwlQUWNsZWFyKHJl cyk7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOworfQorCisvKgorICogZHVtcFZhcmlh YmxlCisgKgkgIGR1bXAgdGhlIGRlZmluaXRpb24gb2YgdGhlIGdpdmVuIHNlc3Npb24gdmFyaWFi bGUKKyAqLworc3RhdGljIHZvaWQKK2R1bXBWYXJpYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBW YXJpYWJsZUluZm8gKnZhcmluZm8pCit7CisJRHVtcE9wdGlvbnMgKmRvcHQgPSBmb3V0LT5kb3B0 OworCisJUFFFeHBCdWZmZXIgZGVscTsKKwlQUUV4cEJ1ZmZlciBxdWVyeTsKKwljaGFyCSAgICpx dWFsdmFybmFtZTsKKwljb25zdCBjaGFyICp2YXJ0eXBuYW1lOworCWNvbnN0IGNoYXIgKnZhcmRl ZmV4cHI7CisJY29uc3QgY2hhciAqdmFyZW94YWN0aW9uOworCWNvbnN0IGNoYXIgKnZhcmlzaW1t dXRhYmxlOworCU9pZAkJCXZhcmNvbGxhdGlvbjsKKwlib29sCQl2YXJpc25vdG51bGw7CisKKwkv KiBTa2lwIGlmIG5vdCB0byBiZSBkdW1wZWQgKi8KKwlpZiAoIXZhcmluZm8tPmRvYmouZHVtcCB8 fCBkb3B0LT5kYXRhT25seSkKKwkJcmV0dXJuOworCisJZGVscSA9IGNyZWF0ZVBRRXhwQnVmZmVy KCk7CisJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJcXVhbHZhcm5hbWUgPSBwZ19z dHJkdXAoZm10UXVhbGlmaWVkRHVtcGFibGUodmFyaW5mbykpOworCXZhcnR5cG5hbWUgPSB2YXJp bmZvLT52YXJ0eXBuYW1lOworCXZhcmRlZmV4cHIgPSB2YXJpbmZvLT52YXJkZWZleHByOworCXZh cmVveGFjdGlvbiA9IHZhcmluZm8tPnZhcmVveGFjdGlvbjsKKwl2YXJpc25vdG51bGwgPSB2YXJp bmZvLT52YXJpc25vdG51bGw7CisJdmFyaXNpbW11dGFibGUgPSB2YXJpbmZvLT52YXJpc2ltbXV0 YWJsZSA/ICJJTU1VVEFCTEUgIiA6ICIiOworCXZhcmNvbGxhdGlvbiA9IHZhcmluZm8tPnZhcmNv bGxhdGlvbjsKKworCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHEsICJEUk9QIFZBUklBQkxFICVzO1xu IiwKKwkJCQkJICBxdWFsdmFybmFtZSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkNS RUFURSAlc1ZBUklBQkxFICVzIEFTICVzIiwKKwkJCQkJICB2YXJpc2ltbXV0YWJsZSwgcXVhbHZh cm5hbWUsIHZhcnR5cG5hbWUpOworCisJaWYgKE9pZElzVmFsaWQodmFyY29sbGF0aW9uKSkKKwl7 CisJCUNvbGxJbmZvICAgKmNvbGw7CisKKwkJY29sbCA9IGZpbmRDb2xsYXRpb25CeU9pZCh2YXJj b2xsYXRpb24pOworCQlpZiAoY29sbCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIENP TExBVEUgJXMiLAorCQkJCQkJCSAgZm10UXVhbGlmaWVkRHVtcGFibGUoY29sbCkpOworCX0KKwor CWlmICh2YXJpc25vdG51bGwpCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIE5PVCBOVUxM Iik7CisKKwlpZiAodmFyZGVmZXhwcikKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgREVG QVVMVCAlcyIsCisJCQkJCQkgIHZhcmRlZmV4cHIpOworCisJaWYgKHN0cmNtcCh2YXJlb3hhY3Rp b24sICJkIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgT04gQ09NTUlUIERS T1AiKTsKKwllbHNlIGlmIChzdHJjbXAodmFyZW94YWN0aW9uLCAiciIpID09IDApCisJCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCIpOworCisJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksICI7XG4iKTsKKworCWlmICh2YXJpbmZvLT5kb2JqLmR1bXAg JiBEVU1QX0NPTVBPTkVOVF9ERUZJTklUSU9OKQorCQlBcmNoaXZlRW50cnkoZm91dCwgdmFyaW5m by0+ZG9iai5jYXRJZCwgdmFyaW5mby0+ZG9iai5kdW1wSWQsCisJCQkJCSBBUkNISVZFX09QVFMo LnRhZyA9IHZhcmluZm8tPmRvYmoubmFtZSwKKwkJCQkJCQkJICAubmFtZXNwYWNlID0gdmFyaW5m by0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCQkJICAub3duZXIgPSB2YXJpbmZv LT5yb2xuYW1lLAorCQkJCQkJCQkgIC5kZXNjcmlwdGlvbiA9ICJWQVJJQUJMRSIsCisJCQkJCQkJ CSAgLnNlY3Rpb24gPSBTRUNUSU9OX1BSRV9EQVRBLAorCQkJCQkJCQkgIC5jcmVhdGVTdG10ID0g cXVlcnktPmRhdGEsCisJCQkJCQkJCSAgLmRyb3BTdG10ID0gZGVscS0+ZGF0YSkpOworCisJLyog RHVtcCBjb21tZW50IGlmIGFueSAqLworCWlmICh2YXJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NP TVBPTkVOVF9DT01NRU5UKQorCQlkdW1wQ29tbWVudChmb3V0LCAiVkFSSUFCTEUiLCBxdWFsdmFy bmFtZSwKKwkJCQkJTlVMTCwgdmFyaW5mby0+cm9sbmFtZSwKKwkJCQkJdmFyaW5mby0+ZG9iai5j YXRJZCwgMCwgdmFyaW5mby0+ZG9iai5kdW1wSWQpOworCisJLyogRHVtcCBBQ0wgaWYgYW55ICov CisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0FDTCkKKwl7CisJCWNo YXIJICAgKnF2YXJuYW1lID0gcGdfc3RyZHVwKGZtdElkKHZhcmluZm8tPmRvYmoubmFtZSkpOwor CisJCWR1bXBBQ0woZm91dCwgdmFyaW5mby0+ZG9iai5kdW1wSWQsIEludmFsaWREdW1wSWQsICJW QVJJQUJMRSIsCisJCQkJcXZhcm5hbWUsIE5VTEwsCisJCQkJdmFyaW5mby0+ZG9iai5uYW1lc3Bh Y2UtPmRvYmoubmFtZSwgdmFyaW5mby0+cm9sbmFtZSwgJnZhcmluZm8tPmRhY2wpOworCisJCWZy ZWUocXZhcm5hbWUpOworCX0KKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihkZWxxKTsKKwlkZXN0cm95 UFFFeHBCdWZmZXIocXVlcnkpOworCisJZnJlZShxdWFsdmFybmFtZSk7Cit9CisKIHN0YXRpYyB2 b2lkCiBiaW5hcnlfdXBncmFkZV9zZXRfdHlwZV9vaWRzX2J5X3R5cGVfb2lkKEFyY2hpdmUgKmZv dXQsCiAJCQkJCQkJCQkJIFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVyLApAQCAtOTY2Miw3ICs5 ODg5LDggQEAgZ2V0QWRkaXRpb25hbEFDTHMoQXJjaGl2ZSAqZm91dCkKIAkJCQkJZG9iai0+b2Jq VHlwZSA9PSBET19UQUJMRSB8fAogCQkJCQlkb2JqLT5vYmpUeXBlID09IERPX1BST0NMQU5HIHx8 CiAJCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fRkRXIHx8Ci0JCQkJCWRvYmotPm9ialR5cGUgPT0g RE9fRk9SRUlHTl9TRVJWRVIpCisJCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fRk9SRUlHTl9TRVJW RVIgfHwKKwkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19WQVJJQUJMRSkKIAkJCQl7CiAJCQkJCUR1 bXBhYmxlT2JqZWN0V2l0aEFjbCAqZGFvYmogPSAoRHVtcGFibGVPYmplY3RXaXRoQWNsICopIGRv Ymo7CiAKQEAgLTEwMjUyLDYgKzEwNDgwLDkgQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUg KmZvdXQsIER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQljYXNlIERPX1NVQlNDUklQVElPTjoKIAkJ CWR1bXBTdWJzY3JpcHRpb24oZm91dCwgKGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKikgZG9iaik7 CiAJCQlicmVhazsKKwkJY2FzZSBET19WQVJJQUJMRToKKwkJCWR1bXBWYXJpYWJsZShmb3V0LCAo VmFyaWFibGVJbmZvICopIGRvYmopOworCQkJYnJlYWs7CiAJCWNhc2UgRE9fUFJFX0RBVEFfQk9V TkRBUlk6CiAJCWNhc2UgRE9fUE9TVF9EQVRBX0JPVU5EQVJZOgogCQkJLyogbmV2ZXIgZHVtcGVk LCBub3RoaW5nIHRvIGRvICovCkBAIC0xNDY0OSw2ICsxNDg4MCw5IEBAIGR1bXBEZWZhdWx0QUNM KEFyY2hpdmUgKmZvdXQsIGNvbnN0IERlZmF1bHRBQ0xJbmZvICpkYWNsaW5mbykKIAkJY2FzZSBE RUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJdHlwZSA9ICJTQ0hFTUFTIjsKIAkJCWJyZWFrOworCQlj YXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCXR5cGUgPSAiVkFSSUFCTEVTIjsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgogCQkJLyogc2hvdWxkbid0IGdldCBoZXJlICovCiAJCQlwZ19mYXRhbCgi dW5yZWNvZ25pemVkIG9iamVjdCB0eXBlIGluIGRlZmF1bHQgcHJpdmlsZWdlczogJWQiLApAQCAt MTgxOTMsNiArMTg0MjcsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhEdW1wYWJsZU9iamVj dCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fQ09OVkVSU0lPTjoKIAkJCWNhc2Ug RE9fVEFCTEU6CiAJCQljYXNlIERPX1RBQkxFX0FUVEFDSDoKKwkJCWNhc2UgRE9fVkFSSUFCTEU6 CiAJCQljYXNlIERPX0FUVFJERUY6CiAJCQljYXNlIERPX1BST0NMQU5HOgogCQkJY2FzZSBET19D QVNUOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmgKaW5kZXggZWQ2Y2U0MWFkNy4uYWI5ZDIyMTVmYiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o CkBAIC01Miw2ICs1Miw3IEBAIHR5cGVkZWYgZW51bQogCURPX1RBQkxFLAogCURPX1RBQkxFX0FU VEFDSCwKIAlET19BVFRSREVGLAorCURPX1ZBUklBQkxFLAogCURPX0lOREVYLAogCURPX0lOREVY X0FUVEFDSCwKIAlET19TVEFUU0VYVCwKQEAgLTgyLDcgKzgzLDcgQEAgdHlwZWRlZiBlbnVtCiAJ RE9fUFVCTElDQVRJT04sCiAJRE9fUFVCTElDQVRJT05fUkVMLAogCURPX1BVQkxJQ0FUSU9OX1RB QkxFX0lOX1NDSEVNQSwKLQlET19TVUJTQ1JJUFRJT04KKwlET19TVUJTQ1JJUFRJT04sCiB9IER1 bXBhYmxlT2JqZWN0VHlwZTsKIAogLyoKQEAgLTY2Niw2ICs2NjcsMjcgQEAgdHlwZWRlZiBzdHJ1 Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAljaGFyCSAgICpzdWJwYXNzd29yZHJlcXVpcmVkOwogfSBT dWJzY3JpcHRpb25JbmZvOwogCisvKgorICogVGhlIFZhcmlhYmxlSW5mbyBzdHJ1Y3QgaXMgdXNl ZCB0byByZXByZXNlbnQgc2Vzc2lvbiB2YXJpYWJsZXMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX1Zh cmlhYmxlSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJRHVtcGFibGVBY2wgZGFjbDsK KwlPaWQJCQl2YXJ0eXBlOworCWNoYXIJICAgKnZhcnR5cG5hbWU7CisJY2hhcgkgICAqdmFyZW94 YWN0aW9uOworCWNoYXIJICAgKnZhcmRlZmV4cHI7CisJY2hhcgkgICAqdmFyYWNsOworCWNoYXIJ ICAgKnJ2YXJhY2w7CisJY2hhcgkgICAqaW5pdHZhcmFjbDsKKwljaGFyCSAgICppbml0cnZhcmFj bDsKKwlib29sCQl2YXJpc25vdG51bGw7CisJYm9vbAkJdmFyaXNpbW11dGFibGU7CisJT2lkCQkJ dmFyY29sbGF0aW9uOworCWNvbnN0IGNoYXIgKnJvbG5hbWU7CQkvKiBuYW1lIG9mIG93bmVyLCBv ciBlbXB0eSBzdHJpbmcgKi8KK30gVmFyaWFibGVJbmZvOworCiAvKgogICoJY29tbW9uIHV0aWxp dHkgZnVuY3Rpb25zCiAgKi8KQEAgLTc0OSw1ICs3NzEsNiBAQCBleHRlcm4gdm9pZCBnZXRQdWJs aWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2ZSAqZm91dCk7CiBleHRlcm4gdm9pZCBnZXRQdWJsaWNh dGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLAogCQkJCQkJCQkg aW50IG51bVRhYmxlcyk7CiBleHRlcm4gdm9pZCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZv dXQpOworZXh0ZXJuIHZvaWQgZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpOwogCiAjZW5kaWYJ CQkJCQkJLyogUEdfRFVNUF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5kZXggNzQ1NTc4ZDg1 NS4uYjFkY2Y5OGU2NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwpAQCAtNzYsNiArNzYsNyBAQCBl bnVtIGRiT2JqZWN0VHlwZVByaW9yaXRpZXMKIAlQUklPX0RVTU1ZX1RZUEUsCiAJUFJJT19BVFRS REVGLAogCVBSSU9fTEFSR0VfT0JKRUNULAorCVBSSU9fVkFSSUFCTEUsCiAJUFJJT19QUkVfREFU QV9CT1VOREFSWSwJCS8qIGJvdW5kYXJ5ISAqLwogCVBSSU9fVEFCTEVfREFUQSwKIAlQUklPX1NF UVVFTkNFX1NFVCwKQEAgLTExNiw2ICsxMTcsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0 VHlwZVByaW9yaXR5W10gPQogCVBSSU9fVEFCTEUsCQkJCQkvKiBET19UQUJMRSAqLwogCVBSSU9f VEFCTEVfQVRUQUNILAkJCS8qIERPX1RBQkxFX0FUVEFDSCAqLwogCVBSSU9fQVRUUkRFRiwJCQkJ LyogRE9fQVRUUkRFRiAqLworCVBSSU9fVkFSSUFCTEUsCQkJCS8qIERPX1ZBUklBQkxFICovCiAJ UFJJT19JTkRFWCwJCQkJCS8qIERPX0lOREVYICovCiAJUFJJT19JTkRFWF9BVFRBQ0gsCQkJLyog RE9fSU5ERVhfQVRUQUNIICovCiAJUFJJT19TVEFUU0VYVCwJCQkJLyogRE9fU1RBVFNFWFQgKi8K QEAgLTE1MDgsNiArMTUxMCwxMCBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1bXBhYmxlT2Jq ZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiUE9TVC1EQVRBIEJPVU5E QVJZICAoSUQgJWQpIiwKIAkJCQkJIG9iai0+ZHVtcElkKTsKIAkJCXJldHVybjsKKwkJY2FzZSBE T19WQVJJQUJMRToKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJWQVJJQUJMRSAl cyAgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5j YXRJZC5vaWQpOwogCX0KIAkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAlzbnByaW50ZihidWYs IGJ1ZnNpemUsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwppbmRleCAwNDlhMTAwNjM0Li44MzBjZGU1NDIxIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19yZXN0b3JlLmMKQEAgLTEwMyw2ICsxMDMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkJeyJ0cmlnZ2VyIiwgMSwgTlVMTCwgJ1QnfSwKIAkJeyJ1c2UtbGlzdCIsIDEs IE5VTEwsICdMJ30sCiAJCXsidXNlcm5hbWUiLCAxLCBOVUxMLCAnVSd9LAorCQl7InZhcmlhYmxl IiwgMSwgTlVMTCwgJ0EnfSwKIAkJeyJ2ZXJib3NlIiwgMCwgTlVMTCwgJ3YnfSwKIAkJeyJzaW5n bGUtdHJhbnNhY3Rpb24iLCAwLCBOVUxMLCAnMSd9LAogCkBAIC0xNTEsNyArMTUyLDcgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCX0KIAl9CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRf bG9uZyhhcmdjLCBhcmd2LCAiYWNDZDplZjpGOmg6STpqOmxMOm46TjpPcDpQOlJzUzp0OlQ6VTp2 d1d4MSIsCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIkE6YWNDZDplZjpG Omg6STpqOmxMOm46TjpPcDpQOlJzUzp0OlQ6VTp2d1d4MSIsCiAJCQkJCQkJY21kb3B0cywgTlVM TCkpICE9IC0xKQogCXsKIAkJc3dpdGNoIChjKQpAQCAtMTU5LDYgKzE2MCwxMSBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ2EnOgkJCS8qIER1bXAgZGF0YSBvbmx5ICov CiAJCQkJb3B0cy0+ZGF0YU9ubHkgPSAxOwogCQkJCWJyZWFrOworCQkJY2FzZSAnQSc6CQkJLyog dkFyaWFibGUgKi8KKwkJCQlvcHRzLT5zZWxUeXBlcyA9IDE7CisJCQkJb3B0cy0+c2VsVmFyaWFi bGUgPSAxOworCQkJCXNpbXBsZV9zdHJpbmdfbGlzdF9hcHBlbmQoJm9wdHMtPnZhcmlhYmxlTmFt ZXMsIG9wdGFyZyk7CisJCQkJYnJlYWs7CiAJCQljYXNlICdjJzoJCQkvKiBjbGVhbiAoaS5lLiwg ZHJvcCkgc2NoZW1hIHByaW9yIHRvIGNyZWF0ZSAqLwogCQkJCW9wdHMtPmRyb3BTY2hlbWEgPSAx OwogCQkJCWJyZWFrOwpAQCAtNDQ0LDYgKzQ1MCw3IEBAIHVzYWdlKGNvbnN0IGNoYXIgKnByb2du YW1lKQogCiAJcHJpbnRmKF8oIlxuT3B0aW9ucyBjb250cm9sbGluZyB0aGUgcmVzdG9yZTpcbiIp KTsKIAlwcmludGYoXygiICAtYSwgLS1kYXRhLW9ubHkgICAgICAgICAgICAgIHJlc3RvcmUgb25s eSB0aGUgZGF0YSwgbm8gc2NoZW1hXG4iKSk7CisJcHJpbnRmKF8oIiAgLUEsIC0tdmFyaWFibGU9 TkFNRSAgICAgICAgICByZXN0b3JlIG5hbWVkIHNlc3Npb24gdmFyaWFibGVcbiIpKTsKIAlwcmlu dGYoXygiICAtYywgLS1jbGVhbiAgICAgICAgICAgICAgICAgIGNsZWFuIChkcm9wKSBkYXRhYmFz ZSBvYmplY3RzIGJlZm9yZSByZWNyZWF0aW5nXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUMsIC0tY3Jl YXRlICAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIHRhcmdldCBkYXRhYmFzZVxuIikpOwogCXBy aW50ZihfKCIgIC1lLCAtLWV4aXQtb24tZXJyb3IgICAgICAgICAgZXhpdCBvbiBlcnJvciwgZGVm YXVsdCBpcyB0byBjb250aW51ZVxuIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCA5 M2UyNGQ1MTQ1Li5mNjBhMTE3OTk1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtODA1 LDYgKzgwNSwxNiBAQCBteSAldGVzdHMgPSAoCiAJCXVubGlrZSA9PiB7IG5vX3ByaXZzID0+IDEs IH0sCiAJICB9LAogCisJJ0FMVEVSIERFRkFVTFQgUFJJVklMRUdFUyBGT1IgUk9MRSByZWdyZXNz X2R1bXBfdGVzdF9yb2xlIEdSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRVMgVE8gUFVCTElDJworCSAg PT4geworCQljcmVhdGVfb3JkZXIgPT4gNTYsCisJCWNyZWF0ZV9zcWwgICA9PiAnQUxURVIgREVG QVVMVCBQUklWSUxFR0VTIEZPUiBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUgR1JBTlQgU0VM RUNUIE9OIFZBUklBQkxFUyBUTyBQVUJMSUM7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxU RVIgREVGQVVMVCBQUklWSUxFR0VTIEZPUiBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUgR1JB TlQgU0VMRUNUIE9OIFZBUklBQkxFUyBUTyBQVUJMSUM7XEUveG0sCisJCWxpa2UgPT4geyAlZnVs bF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geyBub19wcml2 cyA9PiAxLCB9LAorCSAgfSwKKwogCSdBTFRFUiBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUn ID0+IHsKIAkJcmVnZXhwID0+IHFyL14KIAkJCVxRQUxURVIgUk9MRSByZWdyZXNzX2R1bXBfdGVz dF9yb2xlIFdJVEggXEUKQEAgLTE2NTgsNiArMTY2OCwyMyBAQCBteSAldGVzdHMgPSAoCiAJCX0s CiAJfSwKIAorCSdDT01NRU5UIE9OIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTEnID0+IHsK KwkJY3JlYXRlX29yZGVyID0+IDcxLAorCQljcmVhdGVfc3FsICAgPT4gJ0NPTU1FTlQgT04gVkFS SUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMQorCQkJCQkgICBJUyBcJ2NvbW1lbnQgb24gdmFyaWFi bGVcJzsnLAorCQlyZWdleHAgPT4KKwkJICBxci9eXFFDT01NRU5UIE9OIFZBUklBQkxFIGR1bXBf dGVzdC52YXJpYWJsZTEgSVMgJ2NvbW1lbnQgb24gdmFyaWFibGUnO1xFL20sCisJCWxpa2UgPT4g eworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0aW9u X3ByZV9kYXRhICAgICA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1w X3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJ fSwKKwl9LAorCiAJJ0NPUFkgdGVzdF90YWJsZScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNCwK IAkJY3JlYXRlX3NxbCAgID0+ICdJTlNFUlQgSU5UTyBkdW1wX3Rlc3QudGVzdF90YWJsZSAoY29s MSkgJwpAQCAtMzg1Miw2ICszODc5LDQyIEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJ J0NSRUFURSBWQVJJQUJMRSB0ZXN0X3ZhcmlhYmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAx LAorCQljYXRjaF9hbGwgICAgPT4gJ0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3Jk ZXIgPT4gNjEsCisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52 YXJpYWJsZTEgQVMgaW50ZWdlciBERUZBVUxUIDA7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxR Q1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTEgQVMgaW50ZWdlciBERUZBVUxUIDA7 XEUveG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1h X3J1bnMsCisJCQlzZWN0aW9uX3ByZV9kYXRhID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJ CQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJlbWVu dCAgICA9PiAxLAorCQl9LAorCX0sCisKKwknQ1JFQVRFIElNTVVUQUJMRSBWQVJJQUJMRSB0ZXN0 X3ZhcmlhYmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRjaF9hbGwgICAgPT4g J0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEsCisJCWNyZWF0ZV9z cWwgICA9PiAnQ1JFQVRFIElNTVVUQUJMRSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUyIEFT IGludGVnZXIgREVGQVVMVCAwOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBJTU1V VEFCTEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMiBBUyBpbnRlZ2VyIERFRkFVTFQgMDtc RS94bSwKKwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFf cnVucywKKwkJCXNlY3Rpb25fcHJlX2RhdGEgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJ CWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX21lYXN1cmVtZW50 ICAgID0+IDEsCisJCX0sCisJfSwKKwogCSdDUkVBVEUgVklFVyB0ZXN0X3ZpZXcnID0+IHsKIAkJ Y3JlYXRlX29yZGVyID0+IDYxLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBWSUVXIGR1bXBf dGVzdC50ZXN0X3ZpZXcKQEAgLTQzMTIsNiArNDM3NSwyNSBAQCBteSAldGVzdHMgPSAoCiAJCWxp a2UgPT4ge30sCiAJfSwKIAorCSdHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZh cmlhYmxlMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNzMsCisJCWNyZWF0ZV9zcWwgPT4KKwkJ ICAnR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTEgVE8gcmVncmVz c19kdW1wX3Rlc3Rfcm9sZTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFHUkFOVCBTRUxFQ1Qg T04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMSBUTyByZWdyZXNzX2R1bXBfdGVzdF9yb2xl O1xFCisJCQkveG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rf c2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3ByZV9kYXRhID0+IDEsCisJCX0sCisJCXVubGlrZSA9 PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW5vX3ByaXZzICAgICAg ICAgICAgICAgICA9PiAxLAorCQkJb25seV9kdW1wX21lYXN1cmVtZW50ICAgID0+IDEsCisJCX0s CisJfSwKKwogCSdSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIG1hdHZpZXcnID0+IHsKIAkJcmVn ZXhwID0+IHFyL15cUVJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgZHVtcF90ZXN0Lm1hdHZpZXc7 XEUvbSwKIAkJbGlrZSA9PgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA0MjlmYjhjZGNm Li5mYWM4NjJjYTM4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjk0NCw2ICsyOTQ0 LDcgQEAgVmFyaWFibGUKIFZhcmlhYmxlQXNzaWduSG9vawogVmFyaWFibGVDYWNoZQogVmFyaWFi bGVDYWNoZURhdGEKK1ZhcmlhYmxlSW5mbwogVmFyaWFibGVTZXRLaW5kCiBWYXJpYWJsZVNldFN0 bXQKIFZhcmlhYmxlU2hvd1N0bXQKLS0gCjIuNDAuMQoK --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0010-documentation.patch" Content-Disposition: attachment; filename="v20230517-1-0010-documentation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xer70 RnJvbSA5Y2I4M2M5ZjM2OTZlMDFiYjBlOWEzMDQzNTY2NWQ1YzhhMGNmNmMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDoyMzo1NCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTAv MTBdIGRvY3VtZW50YXRpb24KCkRvY3VtZW50YXRpb24gZm9yIENSRUFURSBWQVJJQUJMRSwgRFJP UCBWQVJJQUJMRSBhbmQgTEVUIGNvbW1hbmRzLiBVcGRhdGUgb2YKR1JBTlQsIFJFVk9LRSwgRElT Q0FSRCwgQUxURVIgY29tbWFuZHMgcmVsYXRlZCB0byBzdXBwb3J0IG9mIHNlc3Npb24gdmFyaWFi bGVzLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8 IDE3MCArKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAg ICAgICAgICAgfCAgNjAgKysrKysKIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA2NCArKysrKwogZG9jL3NyYy9zZ21sL2V2ZW50LXRyaWdnZXIuc2dtbCAg ICAgICAgICAgICAgIHwgIDI0ICsrCiBkb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbCAgICAgICAg ICAgICAgICAgICAgfCAgMTYgKysKIGRvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwgICAgICAgICAg ICAgICAgICAgICB8ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwgICAgICAg ICAgICAgICAgfCAgIDQgKwogLi4uL3NnbWwvcmVmL2FsdGVyX2RlZmF1bHRfcHJpdmlsZWdlcy5z Z21sICAgIHwgIDI2ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwgICAg ICAgICAgfCAxNzkgKysrKysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21s ICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zY2hlbWEu c2dtbCAgICAgICAgICAgfCAgIDcgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxl LnNnbWwgICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYv ZGlzY2FyZC5zZ21sICAgICAgICAgICAgICAgICB8ICAxNCArLQogZG9jL3NyYy9zZ21sL3JlZi9k cm9wX3ZhcmlhYmxlLnNnbWwgICAgICAgICAgIHwgMTE4ICsrKysrKysrKwogZG9jL3NyYy9zZ21s L3JlZi9ncmFudC5zZ21sICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGRvYy9zcmMvc2dtbC9y ZWYvbGV0LnNnbWwgICAgICAgICAgICAgICAgICAgICB8IDEwOSArKysrKysrKysKIGRvYy9zcmMv c2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sICAgICAgICAgICAgICB8ICAxMSArCiBkb2Mvc3JjL3Nn bWwvcmVmL3Jldm9rZS5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDcgKwogZG9jL3NyYy9zZ21s L3JlZmVyZW5jZS5zZ21sICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIDE5IGZpbGVzIGNoYW5n ZWQsIDEwNDMgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbAogY3JlYXRlIG1vZGUgMTAw NjQ0IGRvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNTI0MDg0MDU1 Mi4uNDU5ODkwNjBmMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTM2OSw2ICszNjksMTEgQEAKICAgICAg IDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5h bWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVu dHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVpZ24gc2VydmVyczwvZW50cnk+CiAgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1w Zy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwv ZW50cnk+CisgICAgICA8ZW50cnk+c2Vzc2lvbiB2YXJpYWJsZXM8L2VudHJ5PgorICAgICA8L3Jv dz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CkBAIC05Njc3LDQgKzk2 ODIsMTY5IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQm Z3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgIDwvdGFibGU+CiAgPC9zZWN0MT4K IAorIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+CisgIDx0aXRsZT48c3RydWN0bmFt ZT5wZ192YXJpYWJsZTwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0i Y2F0YWxvZy1wZy12YXJpYWJsZSI+CisgICA8cHJpbWFyeT5wZ192YXJpYWJsZTwvcHJpbWFyeT4K KyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgdGFibGUgPHN0cnVjdG5hbWU+cGdf dmFyaWFibGU8L3N0cnVjdG5hbWU+IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0CisgICBzZXNz aW9uIHZhcmlhYmxlcy4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0 bmFtZT5wZ192YXJpYWJsZTwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3Vw IGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2Ny aXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4K KworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnZhcnR5cGU8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAg KHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBlIj48c3RydWN0bmFtZT5w Z190eXBlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+ KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgdmFy aWFibGUncyBkYXRhIHR5cGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFyY3JlYXRl X2xzbjwvc3RydWN0ZmllbGQ+IDx0eXBlPlhMb2dSZWNQdHI8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIHdoZXJlIHZhcmlh YmxlIHdhcyBjcmVhdGVkLiBJdCBpcyB1c2VkCisgICAgICAgKGluIGNvbWJpbmF0aW9uIHdpdGgg PHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KSBhcyBldmVyeXRpbWUKKyAgICAgICB1bmlx dWUgaWRlbnRpZmllci4gT25seSA8c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4gY2Fubm90 IGJlCisgICAgICAgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLCBiZWNhdXNlIHVudXNlZCA8c3RydWN0 ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4KKyAgICAgICBjYW4gYmUgcmV1c2VkLgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHNlc3Np b24gdmFyaWFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFybmFtZXNwYWNlPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctbmFtZXNwYWNlIj48c3RydWN0bmFtZT5wZ19uYW1lc3BhY2U8L3N0 cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgT0lEIG9mIHRoZSBuYW1lc3BhY2UgdGhh dCBjb250YWlucyB0aGlzIHZhcmlhYmxlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZh cm93bmVyPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2Vz IDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXV0aGlkIj48c3RydWN0bmFtZT5wZ19hdXRoaWQ8 L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBPd25lciBvZiB0aGUgdmFyaWFibGUKKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ aW50NDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPiByZWNvcmRzIHR5cGUtc3BlY2lmaWMgZGF0YQor ICAgICAgIHN1cHBsaWVkIGF0IHZhcmlhYmxlIGNyZWF0aW9uIHRpbWUgKGZvciBleGFtcGxlLCB0 aGUgbWF4aW11bQorICAgICAgIGxlbmd0aCBvZiBhIDx0eXBlPnZhcmNoYXI8L3R5cGU+IGNvbHVt bikuICBJdCBpcyBwYXNzZWQgdG8KKyAgICAgICB0eXBlLXNwZWNpZmljIGlucHV0IGZ1bmN0aW9u cyBhbmQgbGVuZ3RoIGNvZXJjaW9uIGZ1bmN0aW9ucy4KKyAgICAgICBUaGUgdmFsdWUgd2lsbCBn ZW5lcmFsbHkgYmUgLTEgZm9yIHR5cGVzIHRoYXQgZG8gbm90IG5lZWQgPHN0cnVjdGZpZWxkPnZh cnR5cG1vZDwvc3RydWN0ZmllbGQ+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJp c25vdG51bGw8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sZWFuPC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBkb2Vz bid0IGFsbG93IG51bGwgdmFsdWUuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJpc2ltbXV0YWJsZTwvc3RydWN0ZmllbGQ+IDx0eXBl PmJvb2xlYW48L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUcnVl IGlmIHRoZSB2YXJpYWJsZSBpcyA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUtaW1t dXRhYmxlIj5pbW11dGFibGU8L2xpbms+IChjYW5ub3QgYmUgbW9kaWZpZWQpLiBUaGUgZGVmYXVs dCB2YWx1ZSBpcyBmYWxzZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFyZW94YWN0 aW9uPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIEFjdGlvbiBwZXJmb3JtZWQgYXQgZW5kIG9mIHRyYW5zYWN0aW9uOgor ICAgICAgIDxsaXRlcmFsPm48L2xpdGVyYWw+ID0gbm8gYWN0aW9uLCA8bGl0ZXJhbD5kPC9saXRl cmFsPiA9IGRyb3AgdGhlIHZhcmlhYmxlLAorICAgICAgIDxsaXRlcmFsPnI8L2xpdGVyYWw+ID0g cmVzZXQgdGhlIHZhcmlhYmxlIHRvIGl0cyBkZWZhdWx0IHZhbHVlLgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD52YXJjb2xsYXRpb248L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+ CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb2xsYXRpb24i PjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlvbjwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVs ZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFRoZSBkZWZpbmVkIGNvbGxhdGlvbiBvZiB0aGUgdmFyaWFibGUsIG9yIHplcm8gaWYgdGhlIHZh cmlhYmxlIGlzCisgICAgICAgbm90IG9mIGEgY29sbGF0YWJsZSBkYXRhIHR5cGUuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcmFjbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmFjbGl0ZW1b XTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFjY2VzcyBwcml2 aWxlZ2VzOyBzZWUKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtZ3JhbnQiLz4gYW5kCisgICAg ICAgPHhyZWYgbGlua2VuZD0ic3FsLXJldm9rZSIvPgorICAgICAgIGZvciBkZXRhaWxzCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcmRlZmV4cHI8L3N0cnVjdGZpZWxkPiA8dHlwZT5w Z19ub2RlX3RyZWU8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhcmlhYmxlIGRlZmF1bHQgdmFsdWUK KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCAy MDczYmFmYTFmLi41YTcwNjIxMDgyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0xMDQ0Myw2ICsxMDQ0Myw2NiBA QCBkeW5hbWljX2xpYnJhcnlfcGF0aCA9ICdDOlx0b29sc1xwb3N0Z3Jlc3FsO0g6XG15X3Byb2pl Y3RcbGliOyRsaWJkaXInCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc2Vzc2lvbi12YXJpYWJsZXMtYW1iaWd1aXR5 LXdhcm5pbmciIHhyZWZsYWJlbD0ic2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmci PgorICAgICAgPHRlcm0+PHZhcm5hbWU+c2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5p bmc8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+Cisg ICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5p bmc8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9p bmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFdoZW4gb24sIGEgd2FybmluZyBpcyByYWlzZWQgd2hlbiBhbnkgaWRlbnRpZmll ciBpbiBhIHF1ZXJ5IGNvdWxkIGJlCisgICAgICAgIHVzZWQgYXMgYm90aCBhIGNvbHVtbiBpZGVu dGlmaWVyLCByb3V0aW5lIHZhcmlhYmxlIG9yIGEgc2Vzc2lvbgorICAgICAgICB2YXJpYWJsZSBp ZGVudGlmaWVyLiBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LgorICAgICAg IDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU2Vzc2lvbiB2YXJpYWJsZXMgY2FuIGJl IHNoYWRvd2VkIGJ5IGNvbHVtbiByZWZlcmVuY2VzIGluIGEgcXVlcnksIHRoaXMKKyAgICAgICAg aXMgYW4gZXhwZWN0ZWQgYmVoYXZpb3IuICBQcmV2aW91c2x5IHdvcmtpbmcgcXVlcmllcyBzaG91 bGRuJ3QgZXJyb3Igb3V0CisgICAgICAgIGJ5IGNyZWF0aW5nIGFueSBzZXNzaW9uIHZhcmlhYmxl LCBzbyBzZXNzaW9uIHZhcmlhYmxlcyBhcmUgYWx3YXlzIHNoYWRvd2VkCisgICAgICAgIGlmIGFu IGlkZW50aWZpZXIgaXMgYW1iaWd1b3VzLiAgVmFyaWFibGVzIHNob3VsZCBiZSByZWZlcmVuY2Vk IHVzaW5nCisgICAgICAgIGFudW5hbWJpZ3VvdXMgaWRlbnRpZmllciB3aXRob3V0IGFueSBwb3Nz aWJpbGl0eSBmb3IgYSBjb2xsaXNpb24gd2l0aAorICAgICAgICBpZGVudGlmaWVyIG9mIG90aGVy IGRhdGFiYXNlIG9iamVjdHMgKGNvbHVtbiBuYW1lcyBvciByZWNvcmQgZmllbGRzIG5hbWVzKS4K KyAgICAgICAgVGhlIHdhcm5pbmcgbWVzc2FnZXMgZW1pdHRlZCB3aGVuIGVuYWJsaW5nIDx2YXJu YW1lPnNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0eV93YXJuaW5nPC92YXJuYW1lPgorICAgICAg ICBjYW4gaGVscCBmaW5kaW5nIHN1Y2ggaWRlbnRpZmllciBjb2xsaXNpb24uCis8cHJvZ3JhbWxp c3Rpbmc+CitDUkVBVEUgVEFCTEUgZm9vKGEgaW50KTsKK0lOU0VSVCBJTlRPIGZvbyBWQUxVRVMo MTApOworQ1JFQVRFIFZBUklBQkxFIGEgaW50OworTEVUIGEgPSAxMDA7CitTRUxFQ1QgYSBGUk9N IGZvbzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzxzY3JlZW4+CisgYSAgCistLS0tCisgMTAKKygx IHJvdykKKzwvc2NyZWVuPgorCis8cHJvZ3JhbWxpc3Rpbmc+CitTRVQgc2Vzc2lvbl92YXJpYWJs ZXNfYW1iaWd1aXR5X3dhcm5pbmcgVE8gb247CitTRUxFQ1QgYSBGUk9NIGZvbzsKKzwvcHJvZ3Jh bWxpc3Rpbmc+CisKKzxzY3JlZW4+CitXQVJOSU5HOiAgc2Vzc2lvbiB2YXJpYWJsZSAiYSIgaXMg c2hhZG93ZWQKK0xJTkUgMTogU0VMRUNUIGEgRlJPTSBmb287CisgICAgICAgICAgICAgICBeCitE RVRBSUw6ICBTZXNzaW9uIHZhcmlhYmxlcyBjYW4gYmUgc2hhZG93ZWQgYnkgY29sdW1ucywgcm91 dGluZSdzIHZhcmlhYmxlcyBhbmQgcm91dGluZSdzIGFyZ3VtZW50cyB3aXRoIHRoZSBzYW1lIG5h bWUuCisgYSAgCistLS0tCisgMTAKKygxIHJvdykKKzwvc2NyZWVuPgorICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBzaWduaWZpY2FudGx5IGlu Y3JlYXNlIGxvZyBzaXplLCBzbyBpdCdzIGRpc2FibGVkIGJ5CisgICAgICAgIGRlZmF1bHQuICBG b3IgdGVzdGluZyBvciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaXQncyByZWNvbW1lbmRlZCB0 bworICAgICAgICBlbmFibGUgaXQgaWYgeW91IHVzZSBzZXNzaW9uIHZhcmlhYmxlcy4KKyAgICAg ICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc3RhbmRhcmQtY29uZm9ybWluZy1zdHJpbmdzIiB4cmVm bGFiZWw9InN0YW5kYXJkX2NvbmZvcm1pbmdfc3RyaW5ncyI+CiAgICAgICA8dGVybT48dmFybmFt ZT5zdGFuZGFyZF9jb25mb3JtaW5nX3N0cmluZ3M8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90 eXBlPikKICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+c3RyaW5nczwvcHJpbWFyeT48c2Vjb25k YXJ5PnN0YW5kYXJkIGNvbmZvcm1pbmc8L3NlY29uZGFyeT48L2luZGV4dGVybT4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCA0 NThiODljMGNiLi5lOTUzYzU4OGYzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC01MTEyLDYgKzUxMTIsNzAgQEAgRVhQTEFJ TiBTRUxFQ1QgY291bnQoKikgRlJPTSBtZWFzdXJlbWVudCBXSEVSRSBsb2dkYXRlICZndDs9IERB VEUgJzIwMDgtMDEtMDEnOwogICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKKyAgPHNlY3QxIGlkPSJk ZGwtc2Vzc2lvbi12YXJpYWJsZXMiPgorICAgPHRpdGxlPlNlc3Npb24gVmFyaWFibGVzPC90aXRs ZT4KKworICAgPGluZGV4dGVybSB6b25lPSJkZGwtc2Vzc2lvbi12YXJpYWJsZXMiPgorICAgIDxw cmltYXJ5PlNlc3Npb24gdmFyaWFibGVzPC9wcmltYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAg IDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+c2Vzc2lvbiB2YXJpYWJsZTwvcHJpbWFyeT4KKyAg IDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4KKyAgICBTZXNzaW9uIHZhcmlhYmxlcyBhcmUgZGF0 YWJhc2Ugb2JqZWN0cyB0aGF0IGNhbiBob2xkIGEgdmFsdWUuCisgICAgU2Vzc2lvbiB2YXJpYWJs ZXMsIGxpa2UgcmVsYXRpb25zLCBleGlzdCB3aXRoaW4gYSBzY2hlbWEgYW5kIHRoZWlyIGFjY2Vz cworICAgIGlzIGNvbnRyb2xsZWQgdmlhIDxjb21tYW5kPkdSQU5UPC9jb21tYW5kPiBhbmQgPGNv bW1hbmQ+UkVWT0tFPC9jb21tYW5kPgorICAgIGNvbW1hbmRzLiAgQSBzZXNzaW9uIHZhcmlhYmxl IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSA8Y29tbWFuZD5DUkVBVEUKKyAgICBWQVJJQUJMRTwvY29t bWFuZD4gY29tbWFuZC4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGhlIHZhbHVlIG9m IGEgc2Vzc2lvbiB2YXJpYWJsZSBpcyBzZXQgd2l0aCB0aGUgPGNvbW1hbmQ+TEVUPC9jb21tYW5k PiBTUUwKKyAgICBjb21tYW5kLiAgV2hpbGUgc2Vzc2lvbiB2YXJpYWJsZXMgc2hhcmUgcHJvcGVy dGllcyB3aXRoIHRhYmxlcywgdGhlaXIgdmFsdWUKKyAgICBjYW5ub3QgYmUgdXBkYXRlZCB3aXRo IGFuIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gY29tbWFuZC4gVGhlIHZhbHVlIG9mIGEKKyAg ICBzZXNzaW9uIHZhcmlhYmxlIG1heSBiZSByZXRyaWV2ZWQgYnkgdGhlIDxjb21tYW5kPlNFTEVD VDwvY29tbWFuZD4gU1FMCisgICAgY29tbWFuZC4KKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBW QVJJQUJMRSB2YXIxIEFTIGRhdGU7CitMRVQgdmFyMSA9IGN1cnJlbnRfZGF0ZTsKK1NFTEVDVCB2 YXIxOworPC9wcm9ncmFtbGlzdGluZz4KKworICAgIG9yCisKKzxwcm9ncmFtbGlzdGluZz4KK0NS RUFURSBWQVJJQUJMRSBwdWJsaWMuY3VycmVudF91c2VyX2lkIEFTIGludGVnZXI7CitHUkFOVCBS RUFEIE9OIFZBUklBQkxFIHB1YmxpYy5jdXJyZW50X3VzZXJfaWQgVE8gUFVCTElDOworTEVUIGN1 cnJlbnRfdXNlcl9pZCA9IChTRUxFQ1QgaWQgRlJPTSB1c2VycyBXSEVSRSB1c2VuYW1lID0gc2Vz c2lvbl91c2VyKTsKK1NFTEVDVCBjdXJyZW50X3VzZXJfaWQ7Cis8L3Byb2dyYW1saXN0aW5nPgor ICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBUaGUgdmFsdWUgb2YgYSBzZXNzaW9uIHZhcmlh YmxlIGlzIGxvY2FsIHRvIHRoZSBjdXJyZW50IHNlc3Npb24uIFJldHJpZXZpbmcKKyAgICBhIHZh cmlhYmxlJ3MgdmFsdWUgcmV0dXJucyBlaXRoZXIgYSA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBv ciBhIGRlZmF1bHQKKyAgICB2YWx1ZSwgdW5sZXNzIGl0cyB2YWx1ZSBoYXMgYmVlbiBzZXQgdG8g c29tZXRoaW5nIGVsc2UgaW4gdGhlIGN1cnJlbnQKKyAgICBzZXNzaW9uIHVzaW5nIHRoZSA8Y29t bWFuZD5MRVQ8L2NvbW1hbmQ+IGNvbW1hbmQuIFRoZSBjb250ZW50IG9mIGEgdmFyaWFibGUKKyAg ICBpcyBub3QgdHJhbnNhY3Rpb25hbC4gVGhpcyBpcyB0aGUgc2FtZSBhcyByZWd1bGFyIHZhcmlh YmxlcyBpbiBQTCBsYW5ndWFnZXMuCisgICAgVGhlIHNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBw ZXJzaXN0ZW50IG9yIGNhbiBiZSB0ZW1wb3JhcnkuIEluIGJvdGggY2FzZXMsCisgICAgdGhlIGNv bnRlbnQgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMgaXMgdGVtcG9yYXJ5IGFuZCBub3Qgc2hhcmVkIChs aWtlIGFuCisgICAgY29udGVudCBvZiB0ZW1wb3JhcnkgdGFibGVzKS4KKyAgIDwvcGFyYT4KKwor ICAgPHBhcmE+CisgICAgVGhlIHNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBzaGFkb3dlZCBieSBj b2x1bW4gcmVmZXJlbmNlcyBpbiBhIHF1ZXJ5LiBXaGVuCisgICAgYSBxdWVyeSBjb250YWlucyBp ZGVudGlmaWVycyBvciBxdWFsaWZpZWQgaWRlbnRpZmllcnMgdGhhdCBjb3VsZCBiZSB1c2VkIGFz CisgICAgYm90aCBhIHNlc3Npb24gdmFyaWFibGUgaWRlbnRpZmllcnMgYW5kIGFzIGNvbHVtbiBp ZGVudGlmaWVyLCB0aGVuIHRoZQorICAgIGNvbHVtbiBpZGVudGlmaWVyIGlzIHByZWZlcnJlZCBl dmVyeSB0aW1lLiBXYXJuaW5ncyBjYW4gYmUgZW1pdHRlZCB3aGVuCisgICAgdGhpcyBzaXR1YXRp b24gaGFwcGVucyBieSBlbmFibGluZyBjb25maWd1cmF0aW9uIHBhcmFtZXRlciA8eHJlZgorICAg IGxpbmtlbmQ9Imd1Yy1zZXNzaW9uLXZhcmlhYmxlcy1hbWJpZ3VpdHktd2FybmluZyIvPi4gVXNl ciBjYW4gZXhwbGljaXRseQorICAgIHF1YWxpZnkgdGhlIHNvdXJjZSBvYmplY3QgYnkgc3ludGF4 IDxsaXRlcmFsPnRhYmxlLmNvbHVtbjwvbGl0ZXJhbD4gb3IKKyAgICA8bGl0ZXJhbD52YXJpYWJs ZS5jb2x1bW48L2xpdGVyYWw+LgorICAgPC9wYXJhPgorICA8L3NlY3QxPgorCiAgPHNlY3QxIGlk PSJkZGwtb3RoZXJzIj4KICAgPHRpdGxlPk90aGVyIERhdGFiYXNlIE9iamVjdHM8L3RpdGxlPgog CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZXZlbnQtdHJpZ2dlci5zZ21sIGIvZG9jL3NyYy9z Z21sL2V2ZW50LXRyaWdnZXIuc2dtbAppbmRleCAzYjZhNTM2MWIzLi5jYWM1ZjlmZjk0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvZXZlbnQtdHJpZ2dlci5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9ldmVudC10cmlnZ2VyLnNnbWwKQEAgLTQwNSw2ICs0MDUsMTQgQEAKICAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVkFSSUFCTEU8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+QUxURVIgVklFVzwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgpAQCAtNjkzLDYg KzcwMSwxNCBAQAogICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5DUkVBVEUgVkFSSUFCTEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFZJRVc8L2xp dGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KQEAgLTk4MSw2ICs5OTcsMTQgQEAKICAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWQVJJQUJMRTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5EUk9QIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sIGIvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwKaW5k ZXggZmU4ZGVmNDFkMC4uNDRjZmEzNmI5NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dsb3Nz YXJ5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwKQEAgLTE1OTgsNiArMTU5 OCwyMiBAQAogICAgPC9nbG9zc2RlZj4KICAgPC9nbG9zc2VudHJ5PgogCisgIDxnbG9zc2VudHJ5 IGlkPSJnbG9zc2FyeS1zZXNzaW9uLXZhcmlhYmxlIj4KKyAgIDxnbG9zc3Rlcm0+U2Vzc2lvbiB2 YXJpYWJsZTwvZ2xvc3N0ZXJtPgorICAgPGdsb3NzZGVmPgorICAgIDxwYXJhPgorICAgICBBIHBl cnNpc3RlbnQgZGF0YWJhc2Ugb2JqZWN0IHRoYXQgaG9sZHMgYSB2YWx1ZSBpbiBzZXNzaW9uIG1l bW9yeS4gIFRoaXMKKyAgICAgbWVtb3J5IGlzIG5vdCBzaGFyZWQgYWNyb3NzIHNlc3Npb25zLCBh bmQgYWZ0ZXIgc2Vzc2lvbiBlbmQsIHRoaXMgbWVtb3J5CisgICAgICh0aGUgdmFsdWUpIGlzIHJl bGVhc2VkLiBUaGUgYWNjZXNzIChyZWFkIG9yIHdyaXRlKSB0byBzZXNzaW9uIHZhcmlhYmxlcwor ICAgICBpcyBjb250cm9sbGVkIGJ5IGFjY2VzcyByaWdodHMgc2ltaWxhcmx5IHRvIG90aGVyIGRh dGFiYXNlIG9iamVjdCBhY2Nlc3MKKyAgICAgcmlnaHRzLgorICAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtc2Vz c2lvbi12YXJpYWJsZXMiLz4uCisgICAgPC9wYXJhPgorICAgPC9nbG9zc2RlZj4KKyAgPC9nbG9z c2VudHJ5PgorCiAgIDxnbG9zc2VudHJ5IGlkPSJnbG9zc2FyeS1zaGFyZWQtbWVtb3J5Ij4KICAg IDxnbG9zc3Rlcm0+U2hhcmVkIG1lbW9yeTwvZ2xvc3N0ZXJtPgogICAgPGdsb3NzZGVmPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbCBiL2RvYy9zcmMvc2dtbC9wbHBnc3Fs LnNnbWwKaW5kZXggZjU1ZTkwMWM3ZS4uMGY5MzY0NzM4MiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3BscGdzcWwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sCkBAIC01OTcw LDYgKzU5NzAsMTggQEAgJCQgTEFOR1VBR0UgcGxwZ3NxbCBTVFJJQ1QgSU1NVVRBQkxFOwogPC9w cm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CiAgICA8L3NlY3QzPgorCisgICA8c2VjdDMgaWQ9 InBscGdzcWwtc2Vzc2lvbi12YXJpYWJsZXMiPgorICAgIDx0aXRsZT48Y29tbWFuZD5TZXNzaW9u IHZhcmlhYmxlczwvY29tbWFuZD48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgIFRoZSA8YXBw bGljYXRpb24+UEwvcGdTUUw8L2FwcGxpY2F0aW9uPiBsYW5ndWFnZSBoYXMgbm8gcGFja2FnZXMs IGFuZAorICAgICB0aGVyZWZvcmUgbm8gcGFja2FnZSB2YXJpYWJsZXMgb3IgcGFja2FnZSBjb25z dGFudHMuCisgICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gaGFzIHNl c3Npb24gdmFyaWFibGVzIGFuZCBpbW11dGFibGUKKyAgICAgc2Vzc2lvbiB2YXJpYWJsZXMuIFNl c3Npb24gdmFyaWFibGVzIGNhbiBiZSBjcmVhdGVkIGJ5IDxjb21tYW5kPkNSRUFURQorICAgICBW QVJJQUJMRTwvY29tbWFuZD4sIGFzIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJzcWwtY3Jl YXRldmFyaWFibGUiLz4uCisgICAgPC9wYXJhPgorICAgPC9zZWN0Mz4KICAgPC9zZWN0Mj4KIAog ICA8c2VjdDIgaWQ9InBscGdzcWwtcG9ydGluZy1hcHBlbmRpeCI+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNn bWwKaW5kZXggNTRiNWYyMmQ2ZS4uZmEyOTVlNWQ3NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9hbGxmaWxlcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbApA QCAtNDcsNiArNDcsNyBAQCBDb21wbGV0ZSBsaXN0IG9mIHVzYWJsZSBzZ21sIHNvdXJjZSBmaWxl cyBpbiB0aGlzIGRpcmVjdG9yeS4KIDwhRU5USVRZIGFsdGVyVHlwZSAgICAgICAgICBTWVNURU0g ImFsdGVyX3R5cGUuc2dtbCI+CiA8IUVOVElUWSBhbHRlclVzZXIgICAgICAgICAgU1lTVEVNICJh bHRlcl91c2VyLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJVc2VyTWFwcGluZyAgIFNZU1RFTSAiYWx0 ZXJfdXNlcl9tYXBwaW5nLnNnbWwiPgorPCFFTlRJVFkgYWx0ZXJWYXJpYWJsZSAgICAgIFNZU1RF TSAiYWx0ZXJfdmFyaWFibGUuc2dtbCI+CiA8IUVOVElUWSBhbHRlclZpZXcgICAgICAgICAgU1lT VEVNICJhbHRlcl92aWV3LnNnbWwiPgogPCFFTlRJVFkgYW5hbHl6ZSAgICAgICAgICAgIFNZU1RF TSAiYW5hbHl6ZS5zZ21sIj4KIDwhRU5USVRZIGJlZ2luICAgICAgICAgICAgICBTWVNURU0gImJl Z2luLnNnbWwiPgpAQCAtOTksNiArMTAwLDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dt bCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVUeXBlICAg ICAgICAgU1lTVEVNICJjcmVhdGVfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVzZXIgICAg ICAgICBTWVNURU0gImNyZWF0ZV91c2VyLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlVXNlck1hcHBp bmcgIFNZU1RFTSAiY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGNyZWF0ZVZh cmlhYmxlICAgICBTWVNURU0gImNyZWF0ZV92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0 ZVZpZXcgICAgICAgICBTWVNURU0gImNyZWF0ZV92aWV3LnNnbWwiPgogPCFFTlRJVFkgZGVhbGxv Y2F0ZSAgICAgICAgIFNZU1RFTSAiZGVhbGxvY2F0ZS5zZ21sIj4KIDwhRU5USVRZIGRlY2xhcmUg ICAgICAgICAgICBTWVNURU0gImRlY2xhcmUuc2dtbCI+CkBAIC0xNDcsNiArMTQ5LDcgQEAgQ29t cGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3Rvcnku CiA8IUVOVElUWSBkcm9wVHlwZSAgICAgICAgICAgU1lTVEVNICJkcm9wX3R5cGUuc2dtbCI+CiA8 IUVOVElUWSBkcm9wVXNlciAgICAgICAgICAgU1lTVEVNICJkcm9wX3VzZXIuc2dtbCI+CiA8IUVO VElUWSBkcm9wVXNlck1hcHBpbmcgICAgU1lTVEVNICJkcm9wX3VzZXJfbWFwcGluZy5zZ21sIj4K KzwhRU5USVRZIGRyb3BWYXJpYWJsZSAgICAgICBTWVNURU0gImRyb3BfdmFyaWFibGUuc2dtbCI+ CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dtbCI+CiA8 IUVOVElUWSBlbmQgICAgICAgICAgICAgICAgU1lTVEVNICJlbmQuc2dtbCI+CiA8IUVOVElUWSBl eGVjdXRlICAgICAgICAgICAgU1lTVEVNICJleGVjdXRlLnNnbWwiPgpAQCAtMTU1LDYgKzE1OCw3 IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGly ZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQuc2dtbCI+ CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVpZ25fc2No ZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5zZXJ0LnNn bWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwiPgogPCFF TlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFFTlRJVFkg bG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxvY2sgICAg ICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2FsdGVyX2RlZmF1bHRfcHJpdmlsZWdlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl9kZWZhdWx0X3ByaXZpbGVnZXMuc2dtbAppbmRleCBhMzM0NjFmYmMyLi5hNGNjMGY4OTA3IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2RlZmF1bHRfcHJpdmlsZWdlcy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZGVmYXVsdF9wcml2aWxlZ2VzLnNnbWwKQEAg LTUwLDYgKzUwLDEwIEBAIEdSQU5UIHsgVVNBR0UgfCBDUkVBVEUgfCBBTEwgWyBQUklWSUxFR0VT IF0gfQogICAgIE9OIFNDSEVNQVMKICAgICBUTyB7IFsgR1JPVVAgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBQVUJMSUMgfSBbLCAuLi5d IFsgV0lUSCBHUkFOVCBPUFRJT04gXQogCitHUkFOVCB7IFNFTEVDVCB8IFVQREFURSB8IEFMTCBb IFBSSVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEVTCisgICAgVE8geyBbIEdST1VQIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVC TElDIH0gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KKwogUkVWT0tFIFsgR1JBTlQgT1BU SU9OIEZPUiBdCiAgICAgeyB7IFNFTEVDVCB8IElOU0VSVCB8IFVQREFURSB8IERFTEVURSB8IFRS VU5DQVRFIHwgUkVGRVJFTkNFUyB8IFRSSUdHRVIgfCBNQUlOVEFJTiB9CiAgICAgWywgLi4uXSB8 IEFMTCBbIFBSSVZJTEVHRVMgXSB9CkBAIC04MSw2ICs4NSwxMiBAQCBSRVZPS0UgWyBHUkFOVCBP UFRJT04gRk9SIF0KICAgICBPTiBTQ0hFTUFTCiAgICAgRlJPTSB7IFsgR1JPVVAgXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBQVUJMSUMg fSBbLCAuLi5dCiAgICAgWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQorCitSRVZPS0UgWyBHUkFOVCBP UFRJT04gRk9SIF0KKyAgICB7IHsgU0VMRUNUIHwgVVBEQVRFIH0gWywgLi4uXSB8IEFMTCBbIFBS SVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEVTCisgICAgRlJPTSB7IFsgR1JPVVAgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBQVUJM SUMgfSBbLCAuLi5dCisgICAgWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQogPC9zeW5vcHNpcz4KICA8 L3JlZnN5bm9wc2lzZGl2PgogCkBAIC05MiwxNCArMTAyLDE0IEBAIFJFVk9LRSBbIEdSQU5UIE9Q VElPTiBGT1IgXQogICAgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gb2JqZWN0cyBjcmVhdGVkIGlu IHRoZSBmdXR1cmUuICAoSXQgZG9lcyBub3QKICAgIGFmZmVjdCBwcml2aWxlZ2VzIGFzc2lnbmVk IHRvIGFscmVhZHktZXhpc3Rpbmcgb2JqZWN0cy4pICBDdXJyZW50bHksCiAgICBvbmx5IHRoZSBw cml2aWxlZ2VzIGZvciBzY2hlbWFzLCB0YWJsZXMgKGluY2x1ZGluZyB2aWV3cyBhbmQgZm9yZWln bgotICAgdGFibGVzKSwgc2VxdWVuY2VzLCBmdW5jdGlvbnMsIGFuZCB0eXBlcyAoaW5jbHVkaW5n IGRvbWFpbnMpIGNhbiBiZQotICAgYWx0ZXJlZC4gIEZvciB0aGlzIGNvbW1hbmQsIGZ1bmN0aW9u cyBpbmNsdWRlIGFnZ3JlZ2F0ZXMgYW5kIHByb2NlZHVyZXMuCi0gICBUaGUgd29yZHMgPGxpdGVy YWw+RlVOQ1RJT05TPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+Uk9VVElORVM8L2xpdGVyYWw+IGFy ZQotICAgZXF1aXZhbGVudCBpbiB0aGlzIGNvbW1hbmQuICAoPGxpdGVyYWw+Uk9VVElORVM8L2xp dGVyYWw+IGlzIHByZWZlcnJlZAotICAgZ29pbmcgZm9yd2FyZCBhcyB0aGUgc3RhbmRhcmQgdGVy bSBmb3IgZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzIHRha2VuCi0gICB0b2dldGhlci4gIEluIGVh cmxpZXIgUG9zdGdyZVNRTCByZWxlYXNlcywgb25seSB0aGUKLSAgIHdvcmQgPGxpdGVyYWw+RlVO Q1RJT05TPC9saXRlcmFsPiB3YXMgYWxsb3dlZC4gIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZXQK LSAgIGRlZmF1bHQgcHJpdmlsZWdlcyBmb3IgZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzIHNlcGFy YXRlbHkuKQorICAgdGFibGVzKSwgc2VxdWVuY2VzLCBmdW5jdGlvbnMsIHR5cGVzIChpbmNsdWRp bmcgZG9tYWlucykgYW5kIHNlc3Npb24KKyAgIHZhcmlhYmxlcyBjYW4gYmUgYWx0ZXJlZC4gIEZv ciB0aGlzIGNvbW1hbmQsIGZ1bmN0aW9ucyBpbmNsdWRlIGFnZ3JlZ2F0ZXMKKyAgIGFuZCBwcm9j ZWR1cmVzLiAgVGhlIHdvcmRzIDxsaXRlcmFsPkZVTkNUSU9OUzwvbGl0ZXJhbD4gYW5kCisgICA8 bGl0ZXJhbD5ST1VUSU5FUzwvbGl0ZXJhbD4gYXJlIGVxdWl2YWxlbnQgaW4gdGhpcyBjb21tYW5k LgorICAgKDxsaXRlcmFsPlJPVVRJTkVTPC9saXRlcmFsPiBpcyBwcmVmZXJyZWQgZ29pbmcgZm9y d2FyZCBhcyB0aGUgc3RhbmRhcmQgdGVybQorICAgZm9yIGZ1bmN0aW9ucyBhbmQgcHJvY2VkdXJl cyB0YWtlbiB0b2dldGhlci4gIEluIGVhcmxpZXIgUG9zdGdyZVNRTAorICAgcmVsZWFzZXMsIG9u bHkgdGhlIHdvcmQgPGxpdGVyYWw+RlVOQ1RJT05TPC9saXRlcmFsPiB3YXMgYWxsb3dlZC4gIEl0 IGlzIG5vdAorICAgcG9zc2libGUgdG8gc2V0IGRlZmF1bHQgcHJpdmlsZWdlcyBmb3IgZnVuY3Rp b25zIGFuZCBwcm9jZWR1cmVzIHNlcGFyYXRlbHkuKQogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZDIwMzYzNTFlNQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdmFyaWFibGUuc2dtbApAQCAtMCwwICsxLDE3OSBAQAorPCEtLQorZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0t PgorCis8cmVmZW50cnkgaWQ9InNxbC1hbHRlcnZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpvbmU9 InNxbC1hbHRlcnZhcmlhYmxlIj4KKyAgPHByaW1hcnk+QUxURVIgVkFSSUFCTEU8L3ByaW1hcnk+ CisgPC9pbmRleHRlcm0+CisKKyA8aW5kZXh0ZXJtPgorICA8cHJpbWFyeT5zZXNzaW9uIHZhcmlh YmxlPC9wcmltYXJ5PgorICA8c2Vjb25kYXJ5PmFsdGVyaW5nPC9zZWNvbmRhcnk+CisgPC9pbmRl eHRlcm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+QUxURVIgVkFSSUFCTEU8L3Jl ZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+ U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisg PHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkFMVEVSIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVm cHVycG9zZT4KKyAgIGNoYW5nZSB0aGUgZGVmaW5pdGlvbiBvZiBhIHNlc3Npb24gdmFyaWFibGUK KyAgPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxz eW5vcHNpcz4KK0FMVEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1JPTEUgfCBDVVJSRU5UX1VTRVIg fCBTRVNTSU9OX1VTRVIgfQorQUxURVIgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT4KK0FMVEVSIFZBUklBQkxFIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIFNDSEVNQSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+Cis8L3N5 bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNj cmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+QUxURVIgVkFSSUFC TEU8L2NvbW1hbmQ+IGNvbW1hbmQgY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhbgorICAgZXhp c3Rpbmcgc2Vzc2lvbiB2YXJpYWJsZS4gVGhlcmUgYXJlIHNldmVyYWwgc3ViZm9ybXM6CisKKyAg PHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+T1dO RVI8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGlzIGZvcm0gY2hhbmdlcyB0aGUgb3duZXIgb2YgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGNoYW5nZXMgdGhlIG5h bWUgb2YgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxp dGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBtb3ZlcyB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBpbnRvIGFu b3RoZXIgc2NoZW1hLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0PgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBP bmx5IHRoZSBvd25lciBvciBhIHN1cGVydXNlciBpcyBhbGxvd2VkIHRvIGFsdGVyIGEgc2Vzc2lv biB2YXJpYWJsZS4KKyAgIEluIG9yZGVyIHRvIG1vdmUgYSBzZXNzaW9uIHZhcmlhYmxlIGZyb20g b25lIHNjaGVtYSB0byBhbm90aGVyLCB0aGUgdXNlcgorICAgbXVzdCBhbHNvIGhhdmUgdGhlIDxs aXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBuZXcgc2NoZW1hIChvcgor ICAgYmUgYSBzdXBlcnVzZXIpLgorCisgICBJbiBvcmRlciB0byBtb3ZlIHRoZSBzZXNzaW9uIHZh cmlhYmxlIG93bmVyc2hpcCBmcm9tIG9uZSByb2xlIHRvIGFub3RoZXIsCisgICB0aGUgdXNlciBt dXN0IGFsc28gYmUgYSBkaXJlY3Qgb3IgaW5kaXJlY3QgbWVtYmVyIG9mIHRoZSBuZXcKKyAgIG93 bmluZyByb2xlLCBhbmQgdGhhdCByb2xlIG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+Q1JFQVRFPC9s aXRlcmFsPiBwcml2aWxlZ2UKKyAgIG9uIHRoZSBzZXNzaW9uIHZhcmlhYmxlJ3Mgc2NoZW1hIChv ciBiZSBhIHN1cGVydXNlcikuIFRoZXNlIHJlc3RyaWN0aW9ucworICAgZW5mb3JjZSB0aGF0IGFs dGVyaW5nIHRoZSBvd25lciBkb2Vzbid0IGRvIGFueXRoaW5nIHlvdSBjb3VsZG4ndCBkbyBieQor ICAgZHJvcHBpbmcgYW5kIHJlY3JlYXRpbmcgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgIDwvcGFy YT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0 bGU+CisKKyAgIDxwYXJhPgorICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBU aGUgbmFtZSAocG9zc2libHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIGV4aXN0aW5nIHNlc3Np b24gdmFyaWFibGUKKyAgICAgICAgdG8gYWx0ZXIuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9s aXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfbmFtZTwvcmVwbGFj ZWFibGU+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBU aGUgbmV3IG5hbWUgZm9yIHRoZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVy PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIFRoZSB1c2VyIG5hbWUgb2YgdGhlIG5ldyBvd25lciBvZiB0aGUgc2Vzc2lvbiB2YXJp YWJsZS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5ld19zY2hlbWE8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG5ldyBzY2hlbWEgZm9yIHRoZSBz ZXNzaW9uIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICAgPC9wYXJhPgorICA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxw YXJhPgorICAgVG8gcmVuYW1lIGEgc2Vzc2lvbiB2YXJpYWJsZToKKzxwcm9ncmFtbGlzdGluZz4K K0FMVEVSIFZBUklBQkxFIGZvbyBSRU5BTUUgVE8gYm9vOworPC9wcm9ncmFtbGlzdGluZz4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gY2hhbmdlIHRoZSBvd25lciBvZiB0aGUgc2Vzc2lv biB2YXJpYWJsZSA8bGl0ZXJhbD5ib288L2xpdGVyYWw+IHRvCisgICA8bGl0ZXJhbD5qb2U8L2xp dGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVkFSSUFCTEUgYm9vIE9XTkVSIFRPIGpv ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRvIGNoYW5n ZSB0aGUgc2NoZW1hIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlIDxsaXRlcmFsPmJvbzwvbGl0ZXJh bD4gdG8KKyAgIDxsaXRlcmFsPnByaXZhdGU8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgor QUxURVIgVkFSSUFCTEUgYm9vIFNFVCBTQ0hFTUEgcHJpdmF0ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0 aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBTZXNzaW9uIHZhcmlhYmxlcyBhbmQgdGhp cyBjb21tYW5kIGluIHBhcnRpY3VsYXIgYXJlIGEgUG9zdGdyZVNRTCBleHRlbnNpb24uCisgIDwv cGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxIGlkPSJzcWwtYWx0ZXJ2YXJpYWJsZS1z ZWUtYWxzbyI+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlw ZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxl Ii8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1kcm9wdmFyaWFibGUi Lz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWxldCIvPjwvbWVtYmVy PgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVu dC5zZ21sCmluZGV4IDViNDNjNTZiMTMuLjIxY2Q4MDgxOGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY29tbWVudC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21s CkBAIC02NSw2ICs2NSw3IEBAIENPTU1FTlQgT04KICAgVFJBTlNGT1JNIEZPUiA8cmVwbGFjZWFi bGU+dHlwZV9uYW1lPC9yZXBsYWNlYWJsZT4gTEFOR1VBR0UgPHJlcGxhY2VhYmxlPmxhbmdfbmFt ZTwvcmVwbGFjZWFibGU+IHwKICAgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFRZUEUgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gfAorICBWQVJJQUJMRSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8 CiAgIFZJRVcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBs YWNlYWJsZT4KIH0gSVMgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RyaW5nX2xp dGVyYWw8L3JlcGxhY2VhYmxlPiB8IE5VTEwgfQogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zY2hlbWEuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5z Z21sCmluZGV4IGVkNjkyOThjY2MuLmE4MzRjODc2YmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Nj aGVtYS5zZ21sCkBAIC0xMDMsOSArMTAzLDEwIEBAIENSRUFURSBTQ0hFTUEgSUYgTk9UIEVYSVNU UyBBVVRIT1JJWkFUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwCiAg ICAgICAgIHNjaGVtYS4gQ3VycmVudGx5LCBvbmx5IDxjb21tYW5kPkNSRUFURQogICAgICAgICBU QUJMRTwvY29tbWFuZD4sIDxjb21tYW5kPkNSRUFURSBWSUVXPC9jb21tYW5kPiwgPGNvbW1hbmQ+ Q1JFQVRFCiAgICAgICAgIElOREVYPC9jb21tYW5kPiwgPGNvbW1hbmQ+Q1JFQVRFIFNFUVVFTkNF PC9jb21tYW5kPiwgPGNvbW1hbmQ+Q1JFQVRFCi0gICAgICAgIFRSSUdHRVI8L2NvbW1hbmQ+IGFu ZCA8Y29tbWFuZD5HUkFOVDwvY29tbWFuZD4gYXJlIGFjY2VwdGVkIGFzIGNsYXVzZXMKLSAgICAg ICAgd2l0aGluIDxjb21tYW5kPkNSRUFURSBTQ0hFTUE8L2NvbW1hbmQ+LiBPdGhlciBraW5kcyBv ZiBvYmplY3RzIG1heQotICAgICAgICBiZSBjcmVhdGVkIGluIHNlcGFyYXRlIGNvbW1hbmRzIGFm dGVyIHRoZSBzY2hlbWEgaXMgY3JlYXRlZC4KKyAgICAgICAgVFJJR0dFUjwvY29tbWFuZD4sIDxj b21tYW5kPkdSQU5UPC9jb21tYW5kPiBhbmQgPGNvbW1hbmQ+Q1JFQVRFCisgICAgICAgIFZBUklB QkxFPC9jb21tYW5kPiBhcmUgYWNjZXB0ZWQgYXMgY2xhdXNlcyB3aXRoaW4gPGNvbW1hbmQ+Q1JF QVRFCisgICAgICAgIFNDSEVNQTwvY29tbWFuZD4uIE90aGVyIGtpbmRzIG9mIG9iamVjdHMgbWF5 IGJlIGNyZWF0ZWQgaW4gc2VwYXJhdGUKKyAgICAgICAgY29tbWFuZHMgYWZ0ZXIgdGhlIHNjaGVt YSBpcyBjcmVhdGVkLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwv dmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzI5MTRlMTMzZAotLS0gL2Rldi9udWxsCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwyMjMg QEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxl Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNS RUFURSBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxpbmRleHRlcm0+Cisg IDxwcmltYXJ5PnNlc3Npb24gdmFyaWFibGU8L3ByaW1hcnk+CisgIDxzZWNvbmRhcnk+ZGVmaW5p bmc8L3NlY29uZGFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0 aXRsZT5DUkVBVEUgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFu dm9sbnVtPgorICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlz Y2luZm8+CisgPC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkNSRUFURSBW QVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+ZGVmaW5lIGEgc2Vzc2lvbiB2YXJpYWJs ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lu b3BzaXM+CitDUkVBVEUgWyB7IFRFTVBPUkFSWSB8IFRFTVAgfSBdIFsgSU1NVVRBQkxFIF0gVkFS SUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRh dGFfdHlwZTwvcmVwbGFjZWFibGU+IF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2xsYXRpb248L3JlcGxhY2VhYmxlPiBdCisgICAgWyBOT1QgTlVMTCBdIFsgREVG QVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGVmYXVsdF9leHByPC9yZXBsYWNl YWJsZT4gXSBbIHsgT04gQ09NTUlUIERST1AgfCBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQgfSBd Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisgPHJlZnNlY3QxPgorICA8dGl0bGU+ RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIDxjb21tYW5kPkNSRUFURSBW QVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBjcmVhdGVzIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAg IFNlc3Npb24gdmFyaWFibGVzLCBsaWtlIHJlbGF0aW9ucywgZXhpc3Qgd2l0aGluIGEgc2NoZW1h IGFuZCB0aGVpciBhY2Nlc3MgaXMKKyAgIGNvbnRyb2xsZWQgdmlhIDxjb21tYW5kPkdSQU5UPC9j b21tYW5kPiBhbmQgPGNvbW1hbmQ+UkVWT0tFPC9jb21tYW5kPgorICAgY29tbWFuZHMuCisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNlc3Npb24gdmFyaWFibGUgaXMg bG9jYWwgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbi4gUmV0cmlldmluZworICAgYSBzZXNzaW9uIHZh cmlhYmxlJ3MgdmFsdWUgcmV0dXJucyBlaXRoZXIgYSBOVUxMIG9yIGEgZGVmYXVsdCB2YWx1ZSwg dW5sZXNzCisgICBpdHMgdmFsdWUgaXMgc2V0IHRvIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjdXJy ZW50IHNlc3Npb24gd2l0aCBhIExFVAorICAgY29tbWFuZC4gVGhlIGNvbnRlbnQgb2YgYSBzZXNz aW9uIHZhcmlhYmxlIGlzIG5vdCB0cmFuc2FjdGlvbmFsLiBUaGlzIGlzIHRoZQorICAgc2FtZSBh cyByZWd1bGFyIHZhcmlhYmxlcyBpbiBQTCBsYW5ndWFnZXMuCisgIDwvcGFyYT4KKworICA8cGFy YT4KKyAgIFNlc3Npb24gdmFyaWFibGVzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIDxjb21tYW5kPlNF TEVDVDwvY29tbWFuZD4gU1FMCisgICBjb21tYW5kLiAgVGhlaXIgdmFsdWUgaXMgc2V0IHdpdGgg dGhlIDxjb21tYW5kPkxFVDwvY29tbWFuZD4gU1FMIGNvbW1hbmQuCisgICBXaGlsZSBzZXNzaW9u IHZhcmlhYmxlcyBzaGFyZSBwcm9wZXJ0aWVzIHdpdGggdGFibGVzLCB0aGVpciB2YWx1ZSBjYW5u b3QgYmUKKyAgIGNoYW5nZWQgd2l0aCBhbiA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IGNvbW1h bmQuCisgIDwvcGFyYT4KKworICA8bm90ZT4KKyAgIDxwYXJhPgorICAgIEluc2lkZSBhIHF1ZXJ5 IG9yIGFuIGV4cHJlc3Npb24sIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBiZSBzaGFkb3dlZCBi eQorICAgIGNvbHVtbiBvciBieSByb3V0aW5lJ3MgdmFyaWFibGUgb3Igcm91dGluZSBhcmd1bWVu dC4gU3VjaCBjb2xsaXNpb25zIG9mCisgICAgaWRlbnRpZmllcnMgY2FuIGJlIHJlc29sdmVkIGJ5 IHVzaW5nIHF1YWxpZmllZCBpZGVudGlmaWVycy4gU2Vzc2lvbiB2YXJpYWJsZXMKKyAgICBjYW4g dXNlIHNjaGVtYSBuYW1lLCBjb2x1bW5zIGNhbiB1c2UgdGFibGUgYWxpYXNlcywgcm91dGluZSB2 YXJpYWJsZXMKKyAgICBjYW4gdXNlIGJsb2NrIGxhYmVscywgYW5kIHJvdXRpbmUgYXJndW1lbnRz IGNhbiB1c2UgdGhlIHJvdXRpbmUgbmFtZS4KKyAgIDwvcGFyYT4KKyAgPC9ub3RlPgorIDwvcmVm c2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8 dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlLWlt bXV0YWJsZSI+CisgICAgPHRlcm0+PGxpdGVyYWw+SU1NVVRBQkxFPC9saXRlcmFsPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGFzc2lnbmVkIHZhbHVlIG9m IHRoZSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBub3QgYmUgY2hhbmdlZC4KKyAgICAgIE9ubHkgaWYg dGhlIHNlc3Npb24gdmFyaWFibGUgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSwgYSBzaW5n bGUKKyAgICAgIGluaXRpYWxpemF0aW9uIGlzIGFsbG93ZWQgdXNpbmcgdGhlIDxjb21tYW5kPkxF VDwvY29tbWFuZD4gY29tbWFuZC4gT25jZQorICAgICAgZG9uZSwgbm8gZnVydGhlciBjaGFuZ2Ug aXMgYWxsb3dlZCB1bnRpbCBlbmQgb2YgdHJhbnNhY3Rpb24KKyAgICAgIGlmIHRoZSBzZXNzaW9u IHZhcmlhYmxlIHdhcyBjcmVhdGVkIHdpdGggY2xhdXNlIDxsaXRlcmFsPk9OIFRSQU5TQUNUSU9O CisgICAgICBFTkQgUkVTRVQ8L2xpdGVyYWw+LCBvciB1bnRpbCByZXNldCBvZiBhbGwgc2Vzc2lv biB2YXJpYWJsZXMgYnkKKyAgICAgIDxjb21tYW5kPkRJU0NBUkQgVkFSSUFCTEVTPC9jb21tYW5k Piwgb3IgdW50aWwgcmVzZXQgb2YgYWxsIHNlc3Npb24KKyAgICAgIG9iamVjdHMgYnkgY29tbWFu ZCA8Y29tbWFuZD5ESVNDQVJEIEFMTDwvY29tbWFuZD4uCisgICAgIDwvcGFyYT4KKworICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSAgaWQ9InNx bC1jcmVhdGV2YXJpYWJsZS1pZi1ub3QtZXhpc3RzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBO T1QgRVhJU1RTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBB IG5vdGljZSBpcyBpc3N1ZWQgaW4KKyAgICAgIHRoaXMgY2FzZS4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSBpZD0i c3FsLWNyZWF0ZXZhcmlhYmxlLW5hbWUiPgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQsIG9m IHRoZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldmFyaWFi bGUtZGF0YV90eXBlIj4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFRoZSBuYW1lLCBvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQsIG9mIHRoZSBk YXRhIHR5cGUgb2YgdGhlIHNlc3Npb24KKyAgICAgIHZhcmlhYmxlLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5IGlk PSJzcWwtY3JlYXRldmFyaWFibGUtY29sbGF0ZSI+CisgICAgPHRlcm0+PGxpdGVyYWw+Q09MTEFU RSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+Q09MTEFURTwv bGl0ZXJhbD4gY2xhdXNlIGFzc2lnbnMgYSBjb2xsYXRpb24gdG8gdGhlIHNlc3Npb24KKyAgICAg IHZhcmlhYmxlICh3aGljaCBtdXN0IGJlIG9mIGEgY29sbGF0YWJsZSBkYXRhIHR5cGUpLiAgSWYg bm90IHNwZWNpZmllZCwKKyAgICAgIHRoZSBkYXRhIHR5cGUncyBkZWZhdWx0IGNvbGxhdGlvbiBp cyB1c2VkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldmFyaWFibGUtbm90LW51bGwiPgor ICAgIDx0ZXJtPjxsaXRlcmFsPk5PVCBOVUxMPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIDxsaXRlcmFsPk5PVCBOVUxMPC9saXRlcmFsPiBj bGF1c2UgZm9yYmlkcyBzZXR0aW5nIHRoZSBzZXNzaW9uCisgICAgICB2YXJpYWJsZSB0byBhIG51 bGwgdmFsdWUuIEEgc2Vzc2lvbiB2YXJpYWJsZSBjcmVhdGVkIGFzIE5PVCBOVUxMIGFuZAorICAg ICAgd2l0aG91dCBhbiBleHBsaWNpdGx5IGRlY2xhcmVkIGRlZmF1bHQgdmFsdWUgY2Fubm90IGJl IHJlYWQgdW50aWwgaXQgaXMKKyAgICAgIGluaXRpYWxpemVkIGJ5IGEgTEVUIGNvbW1hbmQuIFRo aXMgcmVxdWlyZXMgdGhlIHVzZXIgdG8gZXhwbGljaXRseQorICAgICAgaW5pdGlhbGl6ZSB0aGUg c2Vzc2lvbiB2YXJpYWJsZSBjb250ZW50IGJlZm9yZSByZWFkaW5nIGl0LCBvdGhlcndpc2UgYW4K KyAgICAgIGVycm9yIHdpbGwgYmUgdGhyb3duLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRl dmFyaWFibGUtZGVmYXVsdCI+CisgICAgPHRlcm0+PGxpdGVyYWw+REVGQVVMVCA8cmVwbGFjZWFi bGU+ZGVmYXVsdF9leHByPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4g Y2xhdXNlIGNhbiBiZSB1c2VkIHRvIGFzc2lnbiBhIGRlZmF1bHQKKyAgICAgIHZhbHVlIHRvIGEg c2Vzc2lvbiB2YXJpYWJsZS4gVGhpcyBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCB3aGVuIHRoZSBz ZXNzaW9uCisgICAgICB2YXJpYWJsZSBpcyBmaXJzdCBhY2Nlc3NlZCBmb3IgcmVhZGluZyBhbmQg aGFkIG5vdCB5ZXQgYmVlbiBhc3NpZ25lZCBhIHZhbHVlLgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwt Y3JlYXRldmFyaWFibGUtb24tY29tbWl0LWRyb3AiPgorICAgIDx0ZXJtPjxsaXRlcmFsPk9OIENP TU1JVCBEUk9QPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgVGhlIDxsaXRlcmFsPk9OIENPTU1JVCBEUk9QPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lm aWVzIHRoZSBiZWhhdmlvdXIgb2YgYQorICAgICAgdGVtcG9yYXJ5IHNlc3Npb24gdmFyaWFibGUg YXQgdHJhbnNhY3Rpb24gY29tbWl0LiBXaXRoIHRoaXMgY2xhdXNlLCB0aGUKKyAgICAgIHNlc3Np b24gdmFyaWFibGUgaXMgZHJvcHBlZCBhdCBjb21taXQgdGltZS4gVGhlIGNsYXVzZSBpcyBvbmx5 IGFsbG93ZWQKKyAgICAgIGZvciB0ZW1wb3JhcnkgdmFyaWFibGVzLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5IGlk PSJzcWwtY3JlYXRldmFyaWFibGUtb24tdHJhbnNhY3Rpb24tZW5kLXJlc2V0Ij4KKyAgICA8dGVy bT48bGl0ZXJhbD5PTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQ8L2xpdGVyYWw+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+T04gVFJBTlNBQ1RJ T04gRU5EIFJFU0VUPC9saXRlcmFsPiBjbGF1c2UgY2F1c2VzIHRoZSBzZXNzaW9uCisgICAgICB2 YXJpYWJsZSB0byBiZSByZXNldCB0byBpdHMgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoZSB0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQKKyAgICAgIG9yIHJvbGxlZCBiYWNrLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0Pgor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisKKyAg PHBhcmE+CisgICBVc2UgdGhlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IGNvbW1h bmQgdG8gcmVtb3ZlIGEgc2Vzc2lvbgorICAgdmFyaWFibGUuCisgIDwvcGFyYT4KKyA8L3JlZnNl Y3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJh PgorICAgQ3JlYXRlIGFuIGRhdGUgc2Vzc2lvbiB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRl cmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGRhdGU7CitM RVQgdmFyMSA9IGN1cnJlbnRfZGF0ZTsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGluZz4K KyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBh dGliaWxpdHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIDxjb21tYW5kPkNSRUFURSBWQVJJ QUJMRTwvY29tbWFuZD4gY29tbWFuZCBpcyBhCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+IGV4dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVm c2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0i aW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48 L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtbGV0Ii8+PC9tZW1iZXI+Cisg IDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQu c2dtbAppbmRleCBiZjQ0YzUyM2NhLi42ZjkwNjcyYWZhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2Rpc2NhcmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApA QCAtMjEsNyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLURJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRF TVBPUkFSWSB8IFRFTVAgfQorRElTQ0FSRCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVN UE9SQVJZIHwgVEVNUCB8IFZBUklBQkxFUyB9CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNk aXY+CiAKQEAgLTc1LDYgKzc1LDE3IEBAIERJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNF UyB8IFRFTVBPUkFSWSB8IFRFTVAgfQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJQUJMRVM8L2xp dGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXNldHMg dGhlIHZhbHVlIG9mIGFsbCBzZXNzaW9uIHZhcmlhYmxlcy4gSWYgYSB2YXJpYWJsZQorICAgICAg aXMgbGF0ZXIgcmV1c2VkLCBpdCBpcyByZS1pbml0aWFsaXplZCB0byBlaXRoZXIKKyAgICAgIDxs aXRlcmFsPk5VTEw8L2xpdGVyYWw+IG9yIGl0cyBkZWZhdWx0IHZhbHVlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 PgogICAgIDx0ZXJtPjxsaXRlcmFsPkFMTDwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVt PgpAQCAtOTMsNiArMTA0LDcgQEAgU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9ja19hbGwoKTsKIERJ U0NBUkQgUExBTlM7CiBESVNDQVJEIFRFTVA7CiBESVNDQVJEIFNFUVVFTkNFUzsKK0RJU0NBUkQg VkFSSUFCTEVTOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Zhcmlh YmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42Nzk4OGI1ZmNkCi0tLSAvZGV2L251bGwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxMTggQEAK KzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCitQb3N0Z3JlU1FMIGRv Y3VtZW50YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1kcm9wdmFyaWFibGUiPgorIDxp bmRleHRlcm0gem9uZT0ic3FsLWRyb3B2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkRST1AgVkFSSUFC TEU8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8aW5kZXh0ZXJtPgorICA8cHJpbWFyeT5z ZXNzaW9uIHZhcmlhYmxlPC9wcmltYXJ5PgorICA8c2Vjb25kYXJ5PnJlbW92aW5nPC9zZWNvbmRh cnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJPUCBW QVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxy ZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3Jl Zm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVmbmFt ZT4KKyAgPHJlZnB1cnBvc2U+cmVtb3ZlIGEgc2Vzc2lvbiB2YXJpYWJsZTwvcmVmcHVycG9zZT4K KyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitEUk9QIFZB UklBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KKzwvc3lub3BzaXM+ CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9u PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+ IHJlbW92ZXMgYSBzZXNzaW9uIHZhcmlhYmxlLgorICAgQSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBv bmx5IGJlIHJlbW92ZWQgYnkgaXRzIG93bmVyIG9yIGEgc3VwZXJ1c2VyLgorICA8L3BhcmE+Cisg PC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgor CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFs PklGIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBkb2Vz IG5vdCBleGlzdC4gQSBub3RpY2UgaXMKKyAgICAgIGlzc3VlZCBpbiB0aGlzIGNhc2UuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhlIG5hbWUsIG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCwgb2YgYSBzZXNzaW9uIHZhcmlh YmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBdXRvbWF0aWNhbGx5 IGRyb3Agb2JqZWN0cyB0aGF0IGRlcGVuZCBvbiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSAoc3VjaCBh cworICAgICAgdmlld3MpLCBhbmQgaW4gdHVybiBhbGwgb2JqZWN0cyB0aGF0IGRlcGVuZCBvbiB0 aG9zZSBvYmplY3RzCisgICAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlJFU1RSSUNUPC9saXRlcmFsPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgUmVmdXNlIHRvIGRyb3AgdGhl IHNlc3Npb24gdmFyaWFibGUgaWYgYW55IG9iamVjdHMgZGVwZW5kIG9uIGl0LiAgVGhpcyBpcwor ICAgICAgdGhlIGRlZmF1bHQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2Vj dDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW1vdmUg dGhlIHNlc3Npb24gdmFyaWFibGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46CisKKzxwcm9ncmFt bGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRs ZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiBj b21tYW5kIGlzIGEKKyAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZXh0 ZW5zaW9uLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxt ZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWxldCIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+ CisgPC9yZWZzZWN0MT4KKworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvZ3JhbnQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCAzNWJmMDMz MmM4Li5iYTJhNDk3NzgwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sCkBAIC0xMDEsNiArMTAxLDEyIEBAIEdS QU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dIFRPIDxyZXBsYWNlCiAgICAgWyBXSVRIIHsgQURNSU4gfCBJTkhFUklUIHwgU0VU IH0geyBPUFRJT04gfCBUUlVFIHwgRkFMU0UgfSBdCiAgICAgWyBHUkFOVEVEIEJZIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBd CiAKK0dSQU5UIHsgU0VMRUNUIHwgVVBEQVRFIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBP TiBWQVJJQUJMRSA8cmVwbGFjZWFibGU+dmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0KKyAgICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2Vh YmxlPiBbLCAuLi5dIFsgV0lUSCBHUkFOVCBPUFRJT04gXQorICAgIFsgR1JBTlRFRCBCWSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJs ZT4gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xl X3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmU6PC9waHJhc2U+CiAKICAgICBbIEdS T1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFi bGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9sZXQuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jNWQx ZTRkOTYyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbApAQCAt MCwwICsxLDEwOSBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAorUG9zdGdyZVNR TCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtbGV0Ij4KKyA8aW5kZXh0 ZXJtIHpvbmU9InNxbC1sZXQiPgorICA8cHJpbWFyeT5MRVQ8L3ByaW1hcnk+CisgPC9pbmRleHRl cm0+CisKKyA8aW5kZXh0ZXJtPgorICA8cHJpbWFyeT5zZXNzaW9uIHZhcmlhYmxlPC9wcmltYXJ5 PgorICA8c2Vjb25kYXJ5PmNoYW5naW5nPC9zZWNvbmRhcnk+CisgPC9pbmRleHRlcm0+CisKKyA8 cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+TEVUPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVu dHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFt ZT5MRVQ8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPmNoYW5nZSBhIHNlc3Npb24gdmFyaWFibGUn cyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+ Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlc3Npb25f dmFyaWFibGU8L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z cWxfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnNlc3Npb25fdmFyaWFibGU8L3JlcGxhY2VhYmxlPiA9IERFRkFVTFQKKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgYXNzaWducyBhIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgc2Vzc2lvbgorICAgdmFyaWFi bGUuCisgIDwvcGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Q YXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48bGl0ZXJhbD5zZXNzaW9uX3ZhcmlhYmxlPC9saXRlcmFsPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgb2YgdGhlIHNlc3Npb24g dmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsX2V4cHJlc3Np b248L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBB biBTUUwgZXhwcmVzc2lvbiAoY2FuIGJlIHN1YnF1ZXJ5IGluIHBhcmVudGhlc2lzKS4gVGhlIHJl c3VsdCBtdXN0CisgICAgICBiZSBvZiBjYXN0YWJsZSB0byB0aGUgc2FtZSBkYXRhIHR5cGUgYXMg dGhlIHNlc3Npb24gdmFyaWFibGUgKGluCisgICAgICBpbXBsaWNpdCBvciBhc3NpZ25tZW50IGNv bnRleHQpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXNldCB0aGUg c2Vzc2lvbiB2YXJpYWJsZSB0byBpdHMgZGVmYXVsdCB2YWx1ZSwgaWYgdGhhdCBpcyBkZWZpbmVk LgorICAgICAgSWYgbm8gZXhwbGljaXQgZGVmYXVsdCB2YWx1ZSBoYXMgYmVlbiBkZWNsYXJlZCwg dGhlIHNlc3Npb24gdmFyaWFibGUKKyAgICAgIGlzIHNldCB0byBOVUxMLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4K KworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFC TEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFyID0gKFNFTEVD VCBzdW0odmFsKSBGUk9NIHRhYik7CitMRVQgbXl2YXIgPSBERUZBVUxUOworPC9wcm9ncmFtbGlz dGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5D b21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2Nv bW1hbmQ+IGlzIGEgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgorICAgZXh0 ZW5zaW9uLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxt ZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3Np bXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5z Z21sCmluZGV4IDQ3YmQ3ZGJkYTAuLjM5Y2I1OTU2NDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvcGdfcmVzdG9yZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5z Z21sCkBAIC0xMDYsNiArMTA2LDE3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAg PC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgIDx0ZXJtPjxvcHRpb24+LUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNl c3Npb25fdmFyaWFibGU8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJt PjxvcHRpb24+LS12YXJpYWJsZT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2Vzc2lv bl92YXJpYWJsZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPGxpc3RpdGVt PgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXN0b3JlIGEgbmFtZWQgc2Vzc2lvbiB2YXJpYWJs ZSBvbmx5LiAgTXVsdGlwbGUgc2Vzc2lvbiB2YXJpYWJsZXMgbWF5CisgICAgICAgIGJlIHNwZWNp ZmllZCB3aXRoIG11bHRpcGxlIDxvcHRpb24+LUE8L29wdGlvbj4gc3dpdGNoZXMuCisgICAgICAg PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAg PHZhcmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LWM8L29wdGlvbj48L3Rlcm0+CiAg ICAgICA8dGVybT48b3B0aW9uPi0tY2xlYW48L29wdGlvbj48L3Rlcm0+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bAppbmRleCA4ZGY0OTIyODFhLi42MjZjMDIzMWQwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL3Jldm9rZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKQEAgLTEz Nyw2ICsxMzcsMTMgQEAgUkVWT0tFIFsgeyBBRE1JTiB8IElOSEVSSVQgfCBTRVQgfSBPUFRJT04g Rk9SIF0KICAgfCBDVVJSRU5UX1JPTEUKICAgfCBDVVJSRU5UX1VTRVIKICAgfCBTRVNTSU9OX1VT RVIKKworUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCisgICAgeyB7IFNFTEVDVCB8IFVQREFU RSB9IFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBs YWNlYWJsZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgICAgIHwgQUxM IFZBUklBQkxFUyBJTiBTQ0hFTUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVt YV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSB9CisgICAgRlJPTSB7IFsgR1JPVVAgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBQVUJM SUMgfSBbLCAuLi5dCisgICAgWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQogPC9zeW5vcHNpcz4KICA8 L3JlZnN5bm9wc2lzZGl2PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggZTExYjRiNjEzMC4uNDI1NmE0 ODhmOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtNzUsNiArNzUsNyBAQAogICAgJmFsdGVyVHlwZTsK ICAgICZhbHRlclVzZXI7CiAgICAmYWx0ZXJVc2VyTWFwcGluZzsKKyAgICZhbHRlclZhcmlhYmxl OwogICAgJmFsdGVyVmlldzsKICAgICZhbmFseXplOwogICAgJmJlZ2luOwpAQCAtMTI3LDYgKzEy OCw3IEBACiAgICAmY3JlYXRlVHlwZTsKICAgICZjcmVhdGVVc2VyOwogICAgJmNyZWF0ZVVzZXJN YXBwaW5nOworICAgJmNyZWF0ZVZhcmlhYmxlOwogICAgJmNyZWF0ZVZpZXc7CiAgICAmZGVhbGxv Y2F0ZTsKICAgICZkZWNsYXJlOwpAQCAtMTc1LDYgKzE3Nyw3IEBACiAgICAmZHJvcFR5cGU7CiAg ICAmZHJvcFVzZXI7CiAgICAmZHJvcFVzZXJNYXBwaW5nOworICAgJmRyb3BWYXJpYWJsZTsKICAg ICZkcm9wVmlldzsKICAgICZlbmQ7CiAgICAmZXhlY3V0ZTsKQEAgLTE4Myw2ICsxODYsNyBAQAog ICAgJmdyYW50OwogICAgJmltcG9ydEZvcmVpZ25TY2hlbWE7CiAgICAmaW5zZXJ0OworICAgJmxl dDsKICAgICZsaXN0ZW47CiAgICAmbG9hZDsKICAgICZsb2NrOwotLSAKMi40MC4xCgo= --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0005-DISCARD-VARIABLES-command.patch" Content-Disposition: attachment; filename="v20230517-1-0005-DISCARD-VARIABLES-command.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xerz5 RnJvbSBiZDBjMTZlMDI5NGM2OWJiMjM0YmNkOTcxNjBmZWQwNjVmMTgyY2UwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IFR1ZSwgNSBBcHIgMjAyMiAwMDoxMzo1OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUv MTBdIERJU0NBUkQgVkFSSUFCTEVTIGNvbW1hbmQKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv ZGlzY2FyZC5jIHwgNiArKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICB8IDcg KysrKysrLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgIHwgMyArKysKIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCB8IDMgKystCiBzcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xp c3QuaCAgfCAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKaW5kZXggMjk2ZGM4MmQyZS4uYTgxODlkZDEyYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbW1h bmRzL2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxl LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCiAK QEAgLTQ4LDYgKzQ5LDEwIEBAIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJCQlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCVJlc2V0U2Vzc2lvblZhcmlhYmxlcygpOwor CQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRElT Q0FSRCB0YXJnZXQ6ICVkIiwgc3RtdC0+dGFyZ2V0KTsKIAl9CkBAIC03NSw0ICs4MCw1IEBAIERp c2NhcmRBbGwoYm9vbCBpc1RvcExldmVsKQogCVJlc2V0UGxhbkNhY2hlKCk7CiAJUmVzZXRUZW1w VGFibGVOYW1lc3BhY2UoKTsKIAlSZXNldFNlcXVlbmNlQ2FjaGVzKCk7CisJUmVzZXRTZXNzaW9u VmFyaWFibGVzKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAzYzZmYWE0MmE2Li42MDQwMWVmMDVkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKQEAgLTIwNzEsNyArMjA3MSwxMiBAQCBEaXNjYXJkU3RtdDoKIAkJCQkJbi0+ dGFyZ2V0ID0gRElTQ0FSRF9TRVFVRU5DRVM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 Ci0KKwkJCXwgRElTQ0FSRCBWQVJJQUJMRVMKKwkJCQl7CisJCQkJCURpc2NhcmRTdG10ICpuID0g bWFrZU5vZGUoRGlzY2FyZFN0bXQpOworCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1ZBUklBQkxF UzsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJOwogCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5k ZXggNDBjYzgyMzFmYi4uZGYzMjJlNGZjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTI5NjIsNiArMjk2 Miw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgRElTQ0FS RF9TRVFVRU5DRVM6CiAJCQkJCXRhZyA9IENNRFRBR19ESVNDQVJEX1NFUVVFTkNFUzsKIAkJCQkJ YnJlYWs7CisJCQkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCQkJdGFnID0gQ01EVEFHX0RJ U0NBUkRfVkFSSUFCTEVTOworCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSBD TURUQUdfVU5LTk9XTjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiOTZiNTZmZDZh Li44OTQ4NTIzMTQwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zNzk0LDcgKzM3OTQsOCBA QCB0eXBlZGVmIGVudW0gRGlzY2FyZE1vZGUKIAlESVNDQVJEX0FMTCwKIAlESVNDQVJEX1BMQU5T LAogCURJU0NBUkRfU0VRVUVOQ0VTLAotCURJU0NBUkRfVEVNUAorCURJU0NBUkRfVEVNUCwKKwlE SVNDQVJEX1ZBUklBQkxFUwogfSBEaXNjYXJkTW9kZTsKIAogdHlwZWRlZiBzdHJ1Y3QgRGlzY2Fy ZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggNjQ4YTRhZjMwNS4uOGNlMDBiNGVhMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv dGNvcC9jbWR0YWdsaXN0LmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBQR19DTURUQUcoQ01EVEFHX0RJ U0NBUkRfQUxMLCAiRElTQ0FSRCBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFH KENNRFRBR19ESVNDQVJEX1BMQU5TLCAiRElTQ0FSRCBQTEFOUyIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCiBQR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfU0VRVUVOQ0VTLCAiRElTQ0FSRCBTRVFVRU5D RVMiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX1RFTVAs ICJESVNDQVJEIFRFTVAiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19E SVNDQVJEX1ZBUklBQkxFUywgIkRJU0NBUkQgVkFSSUFCTEVTIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKIFBHX0NNRFRBRyhDTURUQUdfRE8sICJETyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19D TURUQUcoQ01EVEFHX0RST1BfQUNDRVNTX01FVEhPRCwgIkRST1AgQUNDRVNTIE1FVEhPRCIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfRFJPUF9BR0dSRUdBVEUsICJEUk9Q IEFHR1JFR0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLS0gCjIuNDAuMQoK --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0004-support-of-LET-command-in-PLpgSQL.patch" Content-Disposition: attachment; filename="v20230517-1-0004-support-of-LET-command-in-PLpgSQL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xes26 RnJvbSA1ZDc2ODQ0MjViYTk5MzM3MWE0ZmUxNjA4ZmZkYzM5YmUyN2JlNjY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDozMjo0NSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDQv MTBdIHN1cHBvcnQgb2YgTEVUIGNvbW1hbmQgaW4gUExwZ1NRTAoKVGhlIHN1cHBvcnQgZm9yIExF VCBjb21tYW5kIGFzIFBMcGdTUUwgY29tbWFuZCBkb2VzIGFzc2lnbmluZyBvZiBleHByZXNzaW9u CmV2YWx1YXRpb24gdG8gc2Vzc2lvbiB2YXJpYWJsZS4gV2l0aCBleHRyYSBzdXBwb3J0IGluIFBM cGdTUUwgd2UgY2FuIGltcGxlbWVudApTUUwgTEVUIGNvbW1hbmQgbGlrZSB1c3VhbCBQb3N0Z3Jl U1FMJ3MgY29tbWFuZCAoYW5kIHRoZSBhc3NpZ25pbmcgb2YgcmVzdWx0CnRvIHNlc3Npb24gdmFy aWFibGUgaXMgbm90IHNpZGUgZWZmZWN0IG9mIHF1ZXJ5IGV2YWx1YXRpb24pLgotLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICB8ICAzICsrCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgfCAgOCArKysrCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VyLmMgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlci5o ICAgICAgICAgICAgIHwgIDYgKystCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAg ICAgICAgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvcGwvcGxwZ3NxbC9zcmMv cGxfZnVuY3MuYyAgICAgICAgICAgfCAyNCArKysrKysrKysrKwogc3JjL3BsL3BscGdzcWwvc3Jj L3BsX2dyYW0ueSAgICAgICAgICAgIHwgMjggKysrKysrKysrKysrLQogc3JjL3BsL3BscGdzcWwv c3JjL3BsX3Jlc2VydmVkX2t3bGlzdC5oIHwgIDEgKwogc3JjL3BsL3BscGdzcWwvc3JjL3BscGdz cWwuaCAgICAgICAgICAgIHwgMTQgKysrKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgIHwgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAyNTY2MzJjOTg1Li5mMTFkZjAwMGU3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYwpAQCAtMjk2Nyw2ICsyOTY3LDkgQEAgX1NQSV9lcnJvcl9jYWxsYmFj ayh2b2lkICphcmcpCiAJCQljYXNlIFJBV19QQVJTRV9QTFBHU1FMX0FTU0lHTjM6CiAJCQkJZXJy Y29udGV4dCgiUEwvcGdTUUwgYXNzaWdubWVudCBcIiVzXCIiLCBxdWVyeSk7CiAJCQkJYnJlYWs7 CisJCQljYXNlIFJBV19QQVJTRV9QTFBHU1FMX0xFVDoKKwkJCQllcnJjb250ZXh0KCJMRVQgc3Rh dGVtZW50IFwiJXNcIiIsIHF1ZXJ5KTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZXJy Y29udGV4dCgiU1FMIHN0YXRlbWVudCBcIiVzXCIiLCBxdWVyeSk7CiAJCQkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCA4YWQ2NjUyMGJiLi4zYzZmYWE0MmE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTgxNCw2 ICs4MTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXRva2VuCQlNT0RFX1BMUEdTUUxf QVNTSUdOMQogJXRva2VuCQlNT0RFX1BMUEdTUUxfQVNTSUdOMgogJXRva2VuCQlNT0RFX1BMUEdT UUxfQVNTSUdOMworJXRva2VuCQlNT0RFX1BMUEdTUUxfTEVUCiAKIAogLyogUHJlY2VkZW5jZTog bG93ZXN0IHRvIGhpZ2hlc3QgKi8KQEAgLTkyOSw2ICs5MzAsMTMgQEAgcGFyc2VfdG9wbGV2ZWw6 CiAJCQkJcGdfeXlnZXRfZXh0cmEoeXlzY2FubmVyKS0+cGFyc2V0cmVlID0KIAkJCQkJbGlzdF9t YWtlMShtYWtlUmF3U3RtdCgoTm9kZSAqKSBuLCAwKSk7CiAJCQl9CisJCQl8IE1PREVfUExQR1NR TF9MRVQgTGV0U3RtdAorCQkJeworCQkJCUxldFN0bXQgKm4gPSAoTGV0U3RtdCAqKSAkMjsKKwkJ CQluLT5wbHBnc3FsX21vZGUgPSB0cnVlOworCQkJCXBnX3l5Z2V0X2V4dHJhKHl5c2Nhbm5lcikt PnBhcnNldHJlZSA9CisJCQkJCWxpc3RfbWFrZTEobWFrZVJhd1N0bXQoKE5vZGUgKikgbiwgMCkp OworCQkJfQogCQk7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vy LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMKaW5kZXggZTE3YzMxMGNjMS4uZDU4ZjA2 MzQyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlci5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZXIuYwpAQCAtNjEsNyArNjEsOCBAQCByYXdfcGFyc2VyKGNvbnN0 IGNoYXIgKnN0ciwgUmF3UGFyc2VNb2RlIG1vZGUpCiAJCQlNT0RFX1BMUEdTUUxfRVhQUiwJLyog UkFXX1BBUlNFX1BMUEdTUUxfRVhQUiAqLwogCQkJTU9ERV9QTFBHU1FMX0FTU0lHTjEsCS8qIFJB V19QQVJTRV9QTFBHU1FMX0FTU0lHTjEgKi8KIAkJCU1PREVfUExQR1NRTF9BU1NJR04yLAkvKiBS QVdfUEFSU0VfUExQR1NRTF9BU1NJR04yICovCi0JCQlNT0RFX1BMUEdTUUxfQVNTSUdOMwkvKiBS QVdfUEFSU0VfUExQR1NRTF9BU1NJR04zICovCisJCQlNT0RFX1BMUEdTUUxfQVNTSUdOMywJLyog UkFXX1BBUlNFX1BMUEdTUUxfQVNTSUdOMyAqLworCQkJTU9ERV9QTFBHU1FMX0xFVAkvKiBSQVdf UEFSU0VfUExQR1NRTF9MRVQgKi8KIAkJfTsKIAogCQl5eWV4dHJhLmhhdmVfbG9va2FoZWFkID0g dHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZXIuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZXIuaAppbmRleCA4ZDkwMDY0ZDg3Li4wNTQ4YWQ4MzcwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlci5oCkBAIC0zMyw2ICszMyw5IEBACiAgKiBSQVdfUEFSU0VfUExQR1NRTF9BU1NJR05u OiBwYXJzZSBhIFBML3BnU1FMIGFzc2lnbm1lbnQgc3RhdGVtZW50LAogICogYW5kIHJldHVybiBh IG9uZS1lbGVtZW50IExpc3QgY29udGFpbmluZyBhIFJhd1N0bXQgbm9kZS4gICJuIgogICogZ2l2 ZXMgdGhlIG51bWJlciBvZiBkb3R0ZWQgbmFtZXMgY29tcHJpc2luZyB0aGUgdGFyZ2V0IENvbHVt blJlZi4KKyAqCisgKiBSQVdfUEFSU0VfUExQR1NRTF9MRVQ6IHBhcnNlIGEgTEVUIHN0YXRlbWVu dCwgYW5kIHJldHVybiBhCisgKiBvbmUtZWxlbWVudCBMaXN0IGNvbnRhaW5pbmcgYSBSYXdTdG10 IG5vZGUuCiAgKi8KIHR5cGVkZWYgZW51bQogewpAQCAtNDEsNyArNDQsOCBAQCB0eXBlZGVmIGVu dW0KIAlSQVdfUEFSU0VfUExQR1NRTF9FWFBSLAogCVJBV19QQVJTRV9QTFBHU1FMX0FTU0lHTjEs CiAJUkFXX1BBUlNFX1BMUEdTUUxfQVNTSUdOMiwKLQlSQVdfUEFSU0VfUExQR1NRTF9BU1NJR04z CisJUkFXX1BBUlNFX1BMUEdTUUxfQVNTSUdOMywKKwlSQVdfUEFSU0VfUExQR1NRTF9MRVQKIH0g UmF3UGFyc2VNb2RlOwogCiAvKiBWYWx1ZXMgZm9yIHRoZSBiYWNrc2xhc2hfcXVvdGUgR1VDICov CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdz cWwvc3JjL3BsX2V4ZWMuYwppbmRleCA0Yjc2Zjc2OTlhLi41ODNmODRlOGVhIDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9w bF9leGVjLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0u aCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKICNpbmNsdWRlICJl eGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgpAQCAtMzI4LDYgKzMyOSw4IEBAIHN0YXRpYyBpbnQJ ZXhlY19zdG10X2NvbW1pdChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCQkJCSBQTHBn U1FMX3N0bXRfY29tbWl0ICpzdG10KTsKIHN0YXRpYyBpbnQJZXhlY19zdG10X3JvbGxiYWNrKFBM cGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCQkJICAgUExwZ1NRTF9zdG10X3JvbGxiYWNr ICpzdG10KTsKK3N0YXRpYyBpbnQJZXhlY19zdG10X2xldChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0 YXRlLAorCQkJCQkJICBQTHBnU1FMX3N0bXRfbGV0ICpsZXQpOwogCiBzdGF0aWMgdm9pZCBwbHBn c3FsX2VzdGF0ZV9zZXR1cChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkgUExw Z1NRTF9mdW5jdGlvbiAqZnVuYywKQEAgLTIxMTksNiArMjEyMiwxMCBAQCBleGVjX3N0bXRzKFBM cGdTUUxfZXhlY3N0YXRlICplc3RhdGUsIExpc3QgKnN0bXRzKQogCQkJCXJjID0gZXhlY19zdG10 X3JvbGxiYWNrKGVzdGF0ZSwgKFBMcGdTUUxfc3RtdF9yb2xsYmFjayAqKSBzdG10KTsKIAkJCQli cmVhazsKIAorCQkJY2FzZSBQTFBHU1FMX1NUTVRfTEVUOgorCQkJCXJjID0gZXhlY19zdG10X2xl dChlc3RhdGUsIChQTHBnU1FMX3N0bXRfbGV0ICopIHN0bXQpOworCQkJCWJyZWFrOworCiAJCQlk ZWZhdWx0OgogCQkJCS8qIHBvaW50IGVycl9zdG10IHRvIHBhcmVudCwgc2luY2UgdGhpcyBvbmUg c2VlbXMgY29ycnVwdCAqLwogCQkJCWVzdGF0ZS0+ZXJyX3N0bXQgPSBzYXZlX2VzdG10OwpAQCAt NDk5OCw2ICs1MDA1LDU0IEBAIGV4ZWNfc3RtdF9yb2xsYmFjayhQTHBnU1FMX2V4ZWNzdGF0ZSAq ZXN0YXRlLCBQTHBnU1FMX3N0bXRfcm9sbGJhY2sgKnN0bXQpCiAJcmV0dXJuIFBMUEdTUUxfUkNf T0s7CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIGV4ZWNfc3RtdF9sZXQJCQlFdmFsdWF0ZSBhbiBl eHByZXNzaW9uIGFuZAorICoJCQkJCXB1dCB0aGUgcmVzdWx0IGludG8gYSBzZXNzaW9uIHZhcmlh YmxlLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW50CitleGVjX3N0bXRfbGV0KFBMcGdT UUxfZXhlY3N0YXRlICplc3RhdGUsIFBMcGdTUUxfc3RtdF9sZXQgKnN0bXQpCit7CisJYm9vbAkJ aXNOdWxsOworCU9pZAkJCXZhbHR5cGU7CisJaW50MzIJCXZhbHR5cG1vZDsKKwlEYXR1bQkJdmFs dWU7CisJT2lkCQkJdmFyaWQ7CisKKwlMaXN0CSAgICpwbGFuc291cmNlczsKKwlDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlOworCisJdmFsdWUgPSBleGVjX2V2YWxfZXhwcihlc3RhdGUsCisJ CQkJCQkgICBzdG10LT5leHByLAorCQkJCQkJICAgJmlzTnVsbCwKKwkJCQkJCSAgICZ2YWx0eXBl LAorCQkJCQkJICAgJnZhbHR5cG1vZCk7CisKKwkvKgorCSAqIE9pZCBvZiB0YXJnZXQgc2Vzc2lv biB2YXJpYWJsZSBpcyBzdG9yZWQgaW4gUXVlcnkgc3RydWN0dXJlLiBJdCBpcworCSAqIHNhZmVy IHRvIHJlYWQgdGhpcyB2YWx1ZSBkaXJlY3RseSBmcm9tIHRoZSBwbGFuIHRoYW4gdG8gaG9sZCB0 aGlzIHZhbHVlCisJICogaW4gdGhlIHBscGdzcWwgY29udGV4dCwgYmVjYXVzZSBpdCdzIG5vdCBu ZWNlc3NhcnkgdG8gaGFuZGxlCisJICogaW52YWxpZGF0aW9uIG9mIHRoZSBjYWNoZWQgdmFsdWUu IE5leHQgb3BlcmF0aW9ucyBhcmUgcmVhZCBvbmx5IHdpdGhvdXQKKwkgKiBhbnkgYWxsb2NhdGlv bnMsIHNvIHdlIGNhbiBleHBlY3QgdGhhdCByZXRyaWV2aW5nIHZhcmlkIGZyb20gUXVlcnkKKwkg KiBzaG91bGQgYmUgZmFzdC4KKwkgKi8KKwlwbGFuc291cmNlcyA9IFNQSV9wbGFuX2dldF9wbGFu X3NvdXJjZXMoc3RtdC0+ZXhwci0+cGxhbik7CisJaWYgKGxpc3RfbGVuZ3RoKHBsYW5zb3VyY2Vz KSAhPSAxKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBsZW5ndGggb2YgcGxhbnNvdXJjZXMg b2YgcXVlcnkgZm9yIExFVCBzdGF0ZW1lbnQiKTsKKworCXBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxh blNvdXJjZSAqKSBsaW5pdGlhbChwbGFuc291cmNlcyk7CisJaWYgKGxpc3RfbGVuZ3RoKHBsYW5z b3VyY2UtPnF1ZXJ5X2xpc3QpICE9IDEpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGxlbmd0 aCBvZiBwbGFuc291cmNlIG9mIHF1ZXJ5IGZvciBMRVQgc3RhdGVtZW50Iik7CisKKwl2YXJpZCA9 IGxpbml0aWFsX25vZGUoUXVlcnksIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QpLT5yZXN1bHRWYXJp YWJsZTsKKwlpZiAoIU9pZElzVmFsaWQodmFyaWQpKQorCQllbG9nKEVSUk9SLCAib2lkIG9mIHRh cmdldCBzZXNzaW9uIHZhcmlhYmxlIGlzIG5vdCB2YWxpZCIpOworCisJU2V0U2Vzc2lvblZhcmlh YmxlV2l0aFNlY3VyaXR5Q2hlY2sodmFyaWQsIHZhbHVlLCBpc051bGwpOworCisJcmV0dXJuIFBM UEdTUUxfUkNfT0s7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIGV4ZWNfYXNzaWduX2V4cHIJCQlQ dXQgYW4gZXhwcmVzc2lvbidzIHJlc3VsdCBpbnRvIGEgdmFyaWFibGUuCiAgKiAtLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZnVuY3MuYyBiL3NyYy9wbC9wbHBn c3FsL3NyYy9wbF9mdW5jcy5jCmluZGV4IGYwMTA1MTVmZGYuLjczMTQyYTkxNDcgMTAwNjQ0Ci0t LSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9mdW5jcy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9mdW5jcy5jCkBAIC0yODgsNiArMjg4LDggQEAgcGxwZ3NxbF9zdG10X3R5cGVuYW1lKFBM cGdTUUxfc3RtdCAqc3RtdCkKIAkJCXJldHVybiAiQ09NTUlUIjsKIAkJY2FzZSBQTFBHU1FMX1NU TVRfUk9MTEJBQ0s6CiAJCQlyZXR1cm4gIlJPTExCQUNLIjsKKwkJY2FzZSBQTFBHU1FMX1NUTVRf TEVUOgorCQkJcmV0dXJuICJMRVQiOwogCX0KIAogCXJldHVybiAidW5rbm93biI7CkBAIC0zNzAs NiArMzcyLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9wZXJmb3JtKFBMcGdTUUxfc3RtdF9wZXJmb3Jt ICpzdG10KTsKIHN0YXRpYyB2b2lkIGZyZWVfY2FsbChQTHBnU1FMX3N0bXRfY2FsbCAqc3RtdCk7 CiBzdGF0aWMgdm9pZCBmcmVlX2NvbW1pdChQTHBnU1FMX3N0bXRfY29tbWl0ICpzdG10KTsKIHN0 YXRpYyB2b2lkIGZyZWVfcm9sbGJhY2soUExwZ1NRTF9zdG10X3JvbGxiYWNrICpzdG10KTsKK3N0 YXRpYyB2b2lkIGZyZWVfbGV0KFBMcGdTUUxfc3RtdF9sZXQgKnN0bXQpOwogc3RhdGljIHZvaWQg ZnJlZV9leHByKFBMcGdTUUxfZXhwciAqZXhwcik7CiAKIApAQCAtNDU5LDYgKzQ2Miw5IEBAIGZy ZWVfc3RtdChQTHBnU1FMX3N0bXQgKnN0bXQpCiAJCWNhc2UgUExQR1NRTF9TVE1UX1JPTExCQUNL OgogCQkJZnJlZV9yb2xsYmFjaygoUExwZ1NRTF9zdG10X3JvbGxiYWNrICopIHN0bXQpOwogCQkJ YnJlYWs7CisJCWNhc2UgUExQR1NRTF9TVE1UX0xFVDoKKwkJCWZyZWVfbGV0KChQTHBnU1FMX3N0 bXRfbGV0ICopIHN0bXQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIGNtZF90eXBlOiAlZCIsIHN0bXQtPmNtZF90eXBlKTsKIAkJCWJyZWFrOwpA QCAtNzEzLDYgKzcxOSwxMiBAQCBmcmVlX2dldGRpYWcoUExwZ1NRTF9zdG10X2dldGRpYWcgKnN0 bXQpCiB7CiB9CiAKK3N0YXRpYyB2b2lkCitmcmVlX2xldChQTHBnU1FMX3N0bXRfbGV0ICpzdG10 KQoreworCWZyZWVfZXhwcihzdG10LT5leHByKTsKK30KKwogc3RhdGljIHZvaWQKIGZyZWVfZXhw cihQTHBnU1FMX2V4cHIgKmV4cHIpCiB7CkBAIC04MTUsNiArODI3LDcgQEAgc3RhdGljIHZvaWQg ZHVtcF9wZXJmb3JtKFBMcGdTUUxfc3RtdF9wZXJmb3JtICpzdG10KTsKIHN0YXRpYyB2b2lkIGR1 bXBfY2FsbChQTHBnU1FMX3N0bXRfY2FsbCAqc3RtdCk7CiBzdGF0aWMgdm9pZCBkdW1wX2NvbW1p dChQTHBnU1FMX3N0bXRfY29tbWl0ICpzdG10KTsKIHN0YXRpYyB2b2lkIGR1bXBfcm9sbGJhY2so UExwZ1NRTF9zdG10X3JvbGxiYWNrICpzdG10KTsKK3N0YXRpYyB2b2lkIGR1bXBfbGV0KFBMcGdT UUxfc3RtdF9sZXQgKnN0bXQpOwogc3RhdGljIHZvaWQgZHVtcF9leHByKFBMcGdTUUxfZXhwciAq ZXhwcik7CiAKIApAQCAtOTE0LDYgKzkyNyw5IEBAIGR1bXBfc3RtdChQTHBnU1FMX3N0bXQgKnN0 bXQpCiAJCWNhc2UgUExQR1NRTF9TVE1UX1JPTExCQUNLOgogCQkJZHVtcF9yb2xsYmFjaygoUExw Z1NRTF9zdG10X3JvbGxiYWNrICopIHN0bXQpOwogCQkJYnJlYWs7CisJCWNhc2UgUExQR1NRTF9T VE1UX0xFVDoKKwkJCWR1bXBfbGV0KChQTHBnU1FMX3N0bXRfbGV0ICopIHN0bXQpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNtZF90eXBlOiAl ZCIsIHN0bXQtPmNtZF90eXBlKTsKIAkJCWJyZWFrOwpAQCAtMTU5MCw2ICsxNjA2LDE0IEBAIGR1 bXBfZ2V0ZGlhZyhQTHBnU1FMX3N0bXRfZ2V0ZGlhZyAqc3RtdCkKIAlwcmludGYoIlxuIik7CiB9 CiAKK3N0YXRpYyB2b2lkCitkdW1wX2xldChQTHBnU1FMX3N0bXRfbGV0ICpzdG10KQoreworCWR1 bXBfaW5kKCk7CisJZHVtcF9leHByKHN0bXQtPmV4cHIpOworCXByaW50ZigiXG4iKTsKK30KKwog c3RhdGljIHZvaWQKIGR1bXBfZXhwcihQTHBnU1FMX2V4cHIgKmV4cHIpCiB7CmRpZmYgLS1naXQg YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55IGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dy YW0ueQppbmRleCA2YTA5YmZkZDY3Li44YWE2YjVkN2FiIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxw Z3NxbC9zcmMvcGxfZ3JhbS55CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkKQEAg LTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFtZXRlcnMoUExw Z1NRTF9zdG10X3JhaXNlICpzdG10KTsKICV0eXBlIDxzdG10PglzdG10X3JldHVybiBzdG10X3Jh aXNlIHN0bXRfYXNzZXJ0IHN0bXRfZXhlY3NxbAogJXR5cGUgPHN0bXQ+CXN0bXRfZHluZXhlY3V0 ZSBzdG10X2ZvciBzdG10X3BlcmZvcm0gc3RtdF9jYWxsIHN0bXRfZ2V0ZGlhZwogJXR5cGUgPHN0 bXQ+CXN0bXRfb3BlbiBzdG10X2ZldGNoIHN0bXRfbW92ZSBzdG10X2Nsb3NlIHN0bXRfbnVsbAot JXR5cGUgPHN0bXQ+CXN0bXRfY29tbWl0IHN0bXRfcm9sbGJhY2sKKyV0eXBlIDxzdG10PglzdG10 X2NvbW1pdCBzdG10X3JvbGxiYWNrIHN0bXRfbGV0CiAldHlwZSA8c3RtdD4Jc3RtdF9jYXNlIHN0 bXRfZm9yZWFjaF9hCiAKICV0eXBlIDxsaXN0Pglwcm9jX2V4Y2VwdGlvbnMKQEAgLTMwMiw2ICsz MDIsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFtZXRlcnMoUExwZ1NRTF9zdG10 X3JhaXNlICpzdG10KTsKICV0b2tlbiA8a2V5d29yZD4JS19JTlRPCiAldG9rZW4gPGtleXdvcmQ+ CUtfSVMKICV0b2tlbiA8a2V5d29yZD4JS19MQVNUCisldG9rZW4gPGtleXdvcmQ+CUtfTEVUCiAl dG9rZW4gPGtleXdvcmQ+CUtfTE9HCiAldG9rZW4gPGtleXdvcmQ+CUtfTE9PUAogJXRva2VuIDxr ZXl3b3JkPglLX01FUkdFCkBAIC04NzAsNiArODcxLDggQEAgcHJvY19zdG10CQk6IHBsX2Jsb2Nr ICc7JwogCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQkJfCBzdG10X3JvbGxiYWNrCiAJCQkJCQl7ICQk ID0gJDE7IH0KKwkJCQl8IHN0bXRfbGV0CisJCQkJCQl7ICQkID0gJDE7IH0KIAkJCQk7CiAKIHN0 bXRfcGVyZm9ybQk6IEtfUEVSRk9STQpAQCAtOTg2LDYgKzk4OSwyOSBAQCBzdG10X2Fzc2lnbgkJ OiBUX0RBVFVNCiAJCQkJCX0KIAkJCQk7CiAKK3N0bXRfbGV0CQk6IEtfTEVUCisJCQkJCXsKKwkJ CQkJCVBMcGdTUUxfc3RtdF9sZXQgKm5ldzsKKwkJCQkJCVJhd1BhcnNlTW9kZSBwbW9kZTsKKwor CQkJCQkJcG1vZGUgPSBSQVdfUEFSU0VfUExQR1NRTF9MRVQ7CisKKwkJCQkJCW5ldyA9IHBhbGxv YzAoc2l6ZW9mKFBMcGdTUUxfc3RtdF9sZXQpKTsKKwkJCQkJCW5ldy0+Y21kX3R5cGUgPSBQTFBH U1FMX1NUTVRfTEVUOworCQkJCQkJbmV3LT5saW5lbm8gICA9IHBscGdzcWxfbG9jYXRpb25fdG9f bGluZW5vKEAxKTsKKwkJCQkJCW5ldy0+c3RtdGlkID0gKytwbHBnc3FsX2N1cnJfY29tcGlsZS0+ bnN0YXRlbWVudHM7CisKKwkJCQkJCS8qIFB1c2ggYmFjayB0aGUgaGVhZCBuYW1lIHRvIGluY2x1 ZGUgaXQgaW4gdGhlIHN0bXQgKi8KKwkJCQkJCXBscGdzcWxfcHVzaF9iYWNrX3Rva2VuKEtfTEVU KTsKKwkJCQkJCW5ldy0+ZXhwciA9IHJlYWRfc3FsX2NvbnN0cnVjdCgnOycsIDAsIDAsICI7IiwK KwkJCQkJCQkJCQkJCQkgICBwbW9kZSwKKwkJCQkJCQkJCQkJCQkgICBmYWxzZSwgdHJ1ZSwgdHJ1 ZSwKKwkJCQkJCQkJCQkJCQkgICBOVUxMLCBOVUxMKTsKKworCQkJCQkJJCQgPSAoUExwZ1NRTF9z dG10ICopbmV3OworCQkJCQl9CisJCQkJOworCiBzdG10X2dldGRpYWcJOiBLX0dFVCBnZXRkaWFn X2FyZWFfb3B0IEtfRElBR05PU1RJQ1MgZ2V0ZGlhZ19saXN0ICc7JwogCQkJCQl7CiAJCQkJCQlQ THBnU1FMX3N0bXRfZ2V0ZGlhZyAqbmV3OwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3Jj L3BsX3Jlc2VydmVkX2t3bGlzdC5oIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX3Jlc2VydmVkX2t3 bGlzdC5oCmluZGV4IGMxMTZhYmJiN2EuLjkwZWIxY2E4YWEgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9w bHBnc3FsL3NyYy9wbF9yZXNlcnZlZF9rd2xpc3QuaAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMv cGxfcmVzZXJ2ZWRfa3dsaXN0LmgKQEAgLTQwLDYgKzQwLDcgQEAgUEdfS0VZV09SRCgiZnJvbSIs IEtfRlJPTSkKIFBHX0tFWVdPUkQoImlmIiwgS19JRikKIFBHX0tFWVdPUkQoImluIiwgS19JTikK IFBHX0tFWVdPUkQoImludG8iLCBLX0lOVE8pCitQR19LRVlXT1JEKCJsZXQiLCBLX0xFVCkKIFBH X0tFWVdPUkQoImxvb3AiLCBLX0xPT1ApCiBQR19LRVlXT1JEKCJub3QiLCBLX05PVCkKIFBHX0tF WVdPUkQoIm51bGwiLCBLX05VTEwpCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxw Z3NxbC5oIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BscGdzcWwuaAppbmRleCAyYjRiY2QxZGJlLi4y MmM5ZDc4ZjMwIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxwZ3NxbC5oCisrKyBi L3NyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmgKQEAgLTEyNyw3ICsxMjcsOCBAQCB0eXBlZGVm IGVudW0gUExwZ1NRTF9zdG10X3R5cGUKIAlQTFBHU1FMX1NUTVRfUEVSRk9STSwKIAlQTFBHU1FM X1NUTVRfQ0FMTCwKIAlQTFBHU1FMX1NUTVRfQ09NTUlULAotCVBMUEdTUUxfU1RNVF9ST0xMQkFD SworCVBMUEdTUUxfU1RNVF9ST0xMQkFDSywKKwlQTFBHU1FMX1NUTVRfTEVUCiB9IFBMcGdTUUxf c3RtdF90eXBlOwogCiAvKgpAQCAtNTIwLDYgKzUyMSwxNyBAQCB0eXBlZGVmIHN0cnVjdCBQTHBn U1FMX3N0bXRfYXNzaWduCiAJUExwZ1NRTF9leHByICpleHByOwogfSBQTHBnU1FMX3N0bXRfYXNz aWduOwogCisvKgorICogTGV0IHN0YXRlbWVudAorICovCit0eXBlZGVmIHN0cnVjdCBQTHBnU1FM X3N0bXRfbGV0Cit7CisJUExwZ1NRTF9zdG10X3R5cGUgY21kX3R5cGU7CisJaW50CQkJbGluZW5v OworCXVuc2lnbmVkIGludCBzdG10aWQ7CisJUExwZ1NRTF9leHByICpleHByOworfSBQTHBnU1FM X3N0bXRfbGV0OworCiAvKgogICogUEVSRk9STSBzdGF0ZW1lbnQKICAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCA1MDUzYWIwODFlLi40MjlmYjhjZGNmIDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtMTc5Niw2ICsxNzk2LDcgQEAgUExwZ1NRTF9zdG10X2ZvcnEKIFBMcGdT UUxfc3RtdF9mb3JzCiBQTHBnU1FMX3N0bXRfZ2V0ZGlhZwogUExwZ1NRTF9zdG10X2lmCitQTHBn U1FMX3N0bXRfbGV0CiBQTHBnU1FMX3N0bXRfbG9vcAogUExwZ1NRTF9zdG10X29wZW4KIFBMcGdT UUxfc3RtdF9wZXJmb3JtCi0tIAoyLjQwLjEKCg== --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0003-LET-command.patch" Content-Disposition: attachment; filename="v20230517-1-0003-LET-command.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xes57 RnJvbSBiYTI4MGYwYTkzMTlkNmM0NzY0MTkwNzNmMzQyMTBhMGY4NWJiYmFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IFRodSwgMTAgTm92IDIwMjIgMjI6MDM6MDQgKzAxMDAKU3ViamVjdDogW1BBVENIIDAz LzEwXSBMRVQgY29tbWFuZAoKU2V0IHNlc3Npb24gdmFyaWFibGUgdmFsdWUgdG8gcmVzdWx0IG9m IHF1ZXJ5IG9yIHJlc3VsdCBvZiBkZWZhdWx0IGV4cHJlc3Npb24KLS0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgICAgICAgICAgIHwgIDE2ICsrCiBzcmMvYmFja2VuZC9jb21tYW5k cy9zZXNzaW9uX3ZhcmlhYmxlLmMgIHwgIDg2ICsrKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L01ha2VmaWxlICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMg fCAyMTQgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAg ICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAg ICB8ICAzOCArKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAgICAgfCAy OTIgKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgfCAgNTcgKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyAg ICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jICAgICAgICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgIHwgICA0 ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICB8ICAzNCArKysKIHNyYy9iYWNrZW5kL3Rj b3AvZGVzdC5jICAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvdGNvcC91dGls aXR5LmMgICAgICAgICAgICAgICB8ICAxNSArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMgICAgICB8ICAxMiArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNzaW9uX3Zhcmlh YmxlLmggIHwgICAzICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmgg fCAgMjUgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgfCAgMTgg KysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS90Y29w L2NtZHRhZ2xpc3QuaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Rjb3AvZGVzdC5o ICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgfCAgIDIgKwogMjggZmlsZXMgY2hhbmdlZCwgODQzIGluc2VydGlvbnMoKyks IDIwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2V4ZWN1dG9y L3N2YXJpYWJsZVJlY2VpdmVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9leGVj dXRvci9zdmFyaWFibGVSZWNlaXZlci5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDUzMzRj NTAzZTEuLjYzMDExNmEyZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUwMSw2ICs1MDEs MjIgQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWVsc2UKIAkJCUV4cGxhaW5EdW1teUdyb3VwKCJOb3Rp ZnkiLCBOVUxMLCBlcyk7CiAJfQorCWVsc2UgaWYgKElzQSh1dGlsaXR5U3RtdCwgTGV0U3RtdCkp CisJeworCQlMZXRTdG10ICAgICpsZXRzdG10ID0gKExldFN0bXQgKikgdXRpbGl0eVN0bXQ7CisJ CUxpc3QJICAgKnJld3JpdHRlbjsKKworCQlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1B VF9URVhUKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiU0VUIFNFU1NJT04g VkFSSUFCTEVcbiIpOworCQllbHNlCisJCQlFeHBsYWluRHVtbXlHcm91cCgiU2V0IFNlc3Npb24g VmFyaWFibGUiLCBOVUxMLCBlcyk7CisKKwkJcmV3cml0dGVuID0gUXVlcnlSZXdyaXRlKGNhc3RO b2RlKFF1ZXJ5LCBjb3B5T2JqZWN0KGxldHN0bXQtPnF1ZXJ5KSkpOworCQlBc3NlcnQobGlzdF9s ZW5ndGgocmV3cml0dGVuKSA9PSAxKTsKKwkJRXhwbGFpbk9uZVF1ZXJ5KGxpbml0aWFsX25vZGUo UXVlcnksIHJld3JpdHRlbiksCisJCQkJCQlDVVJTT1JfT1BUX1BBUkFMTEVMX09LLCBOVUxMLCBl cywKKwkJCQkJCXF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52KTsKKwl9CiAJZWxzZQogCXsK IAkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3Nlc3Npb25fdmFyaWFibGUuYwppbmRleCBiNGE5MWVhNWEzLi43ZTg0NTViMjZhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5jCkBAIC0yMCwxNiArMjAsMjAgQEAK ICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFy aWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVk ZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgor I2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90 LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5o IgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogLyoKQEAgLTEyNDAsNiArMTI0NCw4OCBA QCBBdEVPU3ViWGFjdF9TZXNzaW9uVmFyaWFibGUoYm9vbCBpc0NvbW1pdCwKIAl9CiB9CiAKKy8q CisgKiBBc3NpZ24gcmVzdWx0IG9mIGV2YWx1YXRlZCBleHByZXNzaW9uIHRvIHNlc3Npb24gdmFy aWFibGUKKyAqLwordm9pZAorRXhlY3V0ZUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJ ICAgTGV0U3RtdCAqc3RtdCwKKwkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJICAgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkgICBRdWVyeUNvbXBsZXRpb24gKnFjKQorewor CVF1ZXJ5CSAgICpxdWVyeSA9IGNhc3ROb2RlKFF1ZXJ5LCBzdG10LT5xdWVyeSk7CisJTGlzdAkg ICAqcmV3cml0dGVuOworCURlc3RSZWNlaXZlciAqZGVzdDsKKwlBY2xSZXN1bHQJYWNscmVzdWx0 OworCVBsYW5uZWRTdG10ICpwbGFuOworCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKKwlPaWQJCQl2 YXJpZCA9IHF1ZXJ5LT5yZXN1bHRWYXJpYWJsZTsKKworCUFzc2VydChPaWRJc1ZhbGlkKHZhcmlk KSk7CisKKwkvKgorCSAqIElzIGl0IGFsbG93ZWQgdG8gd3JpdGUgdG8gc2Vzc2lvbiB2YXJpYWJs ZT8KKwkgKi8KKwlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklk LCB2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNM Q0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBn ZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSk7CisKKwkvKiBDcmVhdGUgZGVzdCByZWNl aXZlciBmb3IgTEVUICovCisJZGVzdCA9IENyZWF0ZURlc3RSZWNlaXZlcihEZXN0VmFyaWFibGUp OworCVNldFZhcmlhYmxlRGVzdFJlY2VpdmVyVmFyaWQoZGVzdCwgdmFyaWQpOworCisJLyogcnVu IHJld3JpdGVyIC0gY2FuIGJlIHVzZWQgZm9yIHJlcGxhY2VtZW50IG9mIERFRkFVTFQgbm9kZSAq LworCXF1ZXJ5ID0gY29weU9iamVjdChxdWVyeSk7CisKKwlyZXdyaXR0ZW4gPSBRdWVyeVJld3Jp dGUocXVlcnkpOworCisJQXNzZXJ0KGxpc3RfbGVuZ3RoKHJld3JpdHRlbikgPT0gMSk7CisKKwlx dWVyeSA9IGxpbml0aWFsX25vZGUoUXVlcnksIHJld3JpdHRlbik7CisJQXNzZXJ0KHF1ZXJ5LT5j b21tYW5kVHlwZSA9PSBDTURfU0VMRUNUKTsKKworCS8qIHBsYW4gdGhlIHF1ZXJ5ICovCisJcGxh biA9IHBnX3BsYW5fcXVlcnkocXVlcnksIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJIENV UlNPUl9PUFRfUEFSQUxMRUxfT0ssIHBhcmFtcyk7CisKKwkvKgorCSAqIFVzZSBhIHNuYXBzaG90 IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMKKwkg KiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuICAoVGhpcyBjb3Vs ZCBvbmx5IG1hdHRlciBpZgorCSAqIHRoZSBwbGFubmVyIGV4ZWN1dGVkIGFuIGFsbGVnZWRseS1z dGFibGUgZnVuY3Rpb24gdGhhdCBjaGFuZ2VkIHRoZQorCSAqIGRhdGFiYXNlIGNvbnRlbnRzLCBi dXQgbGV0J3MgZG8gaXQgYW55d2F5IHRvIGJlIHBhcmFsbGVsIHRvIHRoZSBFWFBMQUlOCisJICog Y29kZSBwYXRoLikKKwkgKi8KKwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3Qo KSk7CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKworCS8qIENyZWF0ZSBhIFF1 ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLworCXF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJ CQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQlkZXN0 LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKKworCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KKwlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg MCk7CisKKwkvKgorCSAqIHJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLiBUaGUgcmVzdWx0IHNo b3VsZCBiZSBvbmx5IG9uZQorCSAqIHJvdy4gRm9yIGFuIGNoZWNrIHRvb19tYW55X3Jvd3Mgd2Ug bmVlZCB0byByZWFkIHR3byByb3dzLgorCSAqLworCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9y d2FyZFNjYW5EaXJlY3Rpb24sIDJMLCB0cnVlKTsKKworCS8qIHNhdmUgdGhlIHJvd2NvdW50IGlm IHdlJ3JlIGdpdmVuIGEgcWMgdG8gZmlsbCAqLworCWlmIChxYykKKwkJU2V0UXVlcnlDb21wbGV0 aW9uKHFjLCBDTURUQUdfTEVULCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwor CS8qIGFuZCBjbGVhbiB1cCAqLworCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJRXhlY3V0 b3JFbmQocXVlcnlEZXNjKTsKKworCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKworCVBvcEFj dGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBwZ19zZXNzaW9uX3ZhcmlhYmxlcyAtIGRlc2ln bmVkIGZvciB0ZXN0aW5nCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFr ZWZpbGUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQppbmRleCAxMTExOGQwY2UwLi43 MTI0OGEzNGYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQorKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQpAQCAtNzYsNiArNzYsNyBAQCBPQkpTID0g XAogCW5vZGVXaW5kb3dBZ2cubyBcCiAJbm9kZVdvcmt0YWJsZXNjYW4ubyBcCiAJc3BpLm8gXAor CXN2YXJpYWJsZVJlY2VpdmVyLm8gXAogCXRxdWV1ZS5vIFwKIAl0c3RvcmVSZWNlaXZlci5vCiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGE0MDdiNTMwMzguLjBiZTI0ZDI1NTQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRz L3Nlc3Npb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKICNp bmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2YXJp YWJsZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJq aXQvaml0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVp bGQKaW5kZXggNjVmOTQ1N2M5Yi4uYjM0YjM4M2IwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVp bGQKQEAgLTY0LDYgKzY0LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnbm9kZVdp bmRvd0FnZy5jJywKICAgJ25vZGVXb3JrdGFibGVzY2FuLmMnLAogICAnc3BpLmMnLAorICAnc3Zh cmlhYmxlUmVjZWl2ZXIuYycsCiAgICd0cXVldWUuYycsCiAgICd0c3RvcmVSZWNlaXZlci5jJywK ICkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdjOTc1Y2JiZjkKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCkBAIC0wLDAgKzEsMjE0IEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzdmFyaWFibGVSZWNlaXZlci5jCisgKgkgIEFu IGltcGxlbWVudGF0aW9uIG9mIERlc3RSZWNlaXZlciB0aGF0IHN0b3JlcyB0aGUgcmVzdWx0IHZh bHVlIGluCisgKgkgIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBv ZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisK KyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorCisjaW5jbHVk ZSAiYWNjZXNzL2RldG9hc3QuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZl ci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKK3R5cGVkZWYg c3RydWN0Cit7CisJRGVzdFJlY2VpdmVyIHB1YjsKKwlPaWQJCQl2YXJpZDsKKwlPaWQJCQl0eXBp ZDsKKwlpbnQzMgkJdHlwbW9kOworCWludAkJCXR5cGxlbjsKKwlpbnQJCQlzbG90X29mZnNldDsK KwlpbnQJCQlyb3dzOworfSBTVmFyaWFibGVTdGF0ZTsKKworCisvKgorICogUHJlcGFyZSB0byBy ZWNlaXZlIHR1cGxlcyBmcm9tIGV4ZWN1dG9yLgorICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxl U3RhcnR1cFJlY2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlvbiwgVHVwbGVE ZXNjIHR5cGVpbmZvKQoreworCVNWYXJpYWJsZVN0YXRlICpteVN0YXRlID0gKFNWYXJpYWJsZVN0 YXRlICopIHNlbGY7CisJaW50CQkJbmF0dHMgPSB0eXBlaW5mby0+bmF0dHM7CisJaW50CQkJb3V0 Y29scyA9IDA7CisJaW50CQkJaTsKKworCS8qIFJlY2VpdmVyIHNob3VsZCBiZSBpbml0aWFsaXpl ZCBieSBTZXRWYXJpYWJsZURlc3RSZWNlaXZlclZhcmlkICovCisJQXNzZXJ0KE9pZElzVmFsaWQo bXlTdGF0ZS0+dmFyaWQpKTsKKworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCXsKKwkJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHlwZWluZm8sIGkpOworCQlP aWQJCQl0eXBpZDsKKwkJT2lkCQkJY29sbGlkOworCQlpbnQzMgkJdHlwbW9kOworCisJCWlmIChh dHRyLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlpZiAoKytvdXRjb2xzID4gMSkK KwkJCWNvbnRpbnVlOworCisJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxp ZChteVN0YXRlLT52YXJpZCwKKwkJCQkJCQkJCQkJCSZ0eXBpZCwKKwkJCQkJCQkJCQkJCSZ0eXBt b2QsCisJCQkJCQkJCQkJCQkmY29sbGlkKTsKKworCQkvKgorCQkgKiBkb3VibGUgY2hlY2sgLSB0 aGUgdHlwZSBhbmQgdHlwbW9kIG9mIHRhcmdldCB2YXJpYWJsZSBzaG91bGQgYmUKKwkJICogc2Ft ZSBhcyB0eXBlIGFuZCB0eXBtb2Qgb2YgYXNzaWdubWVudCBleHByZXNzaW9uLiBJdCBzaG91bGQg YmUsIHRoZQorCQkgKiBleHByZXNzaW9uIGlzIHdyYXBwZWQgYnkgY2FzdCB0byB0YXJnZXQgdHlw ZSBhbmQgdHlwbW9kLgorCQkgKi8KKwkJaWYgKGF0dHItPmF0dHR5cGlkICE9IHR5cGlkIHx8CisJ CQkoYXR0ci0+YXR0dHlwbW9kID49IDAgJiYKKwkJCSBhdHRyLT5hdHR0eXBtb2QgIT0gdHlwbW9k KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlT TUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ0YXJnZXQgc2Vzc2lvbiB2YXJpYWJsZSBpcyBvZiB0eXBl ICVzIgorCQkJCQkJCSIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlwZSAlcyIsCisJCQkJCQkJZm9y bWF0X3R5cGVfd2l0aF90eXBlbW9kKHR5cGlkLCB0eXBtb2QpLAorCQkJCQkJCWZvcm1hdF90eXBl X3dpdGhfdHlwZW1vZChhdHRyLT5hdHR0eXBpZCwKKwkJCQkJCQkJCQkJCQkgYXR0ci0+YXR0dHlw bW9kKSkpKTsKKworCQlteVN0YXRlLT50eXBpZCA9IGF0dHItPmF0dHR5cGlkOworCQlteVN0YXRl LT50eXBtb2QgPSBhdHRyLT5hdHR0eXBtb2Q7CisJCW15U3RhdGUtPnR5cGxlbiA9IGF0dHItPmF0 dGxlbjsKKwkJbXlTdGF0ZS0+c2xvdF9vZmZzZXQgPSBpOworCX0KKworCWlmIChvdXRjb2xzICE9 IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCSBlcnJtc2dfcGx1cmFsKCJhc3NpZ25tZW50IGV4cHJlc3Npb24gcmV0dXJuZWQgJWQg Y29sdW1uIiwKKwkJCQkJCQkgICAiYXNzaWdubWVudCBleHByZXNzaW9uIHJldHVybmVkICVkIGNv bHVtbnMiLAorCQkJCQkJCSAgIG91dGNvbHMsCisJCQkJCQkJICAgb3V0Y29scykpKTsKKworCisK KwlteVN0YXRlLT5yb3dzID0gMDsKK30KKworLyoKKyAqIFJlY2VpdmUgYSB0dXBsZSBmcm9tIHRo ZSBleGVjdXRvciBhbmQgc3RvcmUgaXQgaW4gc2Vzc2lvbiB2YXJpYWJsZS4KKyAqLworc3RhdGlj IGJvb2wKK3N2YXJpYWJsZVJlY2VpdmVTbG90KFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVj ZWl2ZXIgKnNlbGYpCit7CisJU1ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoU1ZhcmlhYmxlU3Rh dGUgKikgc2VsZjsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2 YWwgPSBmYWxzZTsKKworCS8qIE1ha2Ugc3VyZSB0aGUgdHVwbGUgaXMgZnVsbHkgZGVjb25zdHJ1 Y3RlZCAqLworCXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CisKKwl2YWx1ZSA9IHNsb3QtPnR0c192 YWx1ZXNbbXlTdGF0ZS0+c2xvdF9vZmZzZXRdOworCWlzbnVsbCA9IHNsb3QtPnR0c19pc251bGxb bXlTdGF0ZS0+c2xvdF9vZmZzZXRdOworCisJaWYgKG15U3RhdGUtPnR5cGxlbiA9PSAtMSAmJiAh aXNudWxsICYmIFZBUkFUVF9JU19FWFRFUk5BTChEYXR1bUdldFBvaW50ZXIodmFsdWUpKSkKKwl7 CisJCXZhbHVlID0gUG9pbnRlckdldERhdHVtKGRldG9hc3RfZXh0ZXJuYWxfYXR0cigoc3RydWN0 IHZhcmxlbmEgKikKKwkJCQkJCQkJCQkJCQkgIERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKTsKKwkJ ZnJlZXZhbCA9IHRydWU7CisJfQorCisJbXlTdGF0ZS0+cm93cyArPSAxOworCisJaWYgKG15U3Rh dGUtPnJvd3MgPiAxKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVE9P X01BTllfUk9XUyksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiByZXR1cm5lZCBtb3JlIHRoYW4g b25lIHJvdyIpKSk7CisKKwlTZXRTZXNzaW9uVmFyaWFibGUobXlTdGF0ZS0+dmFyaWQsIHZhbHVl LCBpc251bGwpOworCisJaWYgKGZyZWV2YWwpCisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YWx1 ZSkpOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBDbGVhbiB1cCBhdCBlbmQgb2YgYW4g ZXhlY3V0b3IgcnVuCisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVy KERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwlpZiAoKChTVmFyaWFibGVTdGF0ZSAqKSBzZWxmKS0+ cm93cyA9PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTk9fREFU QV9GT1VORCksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiByZXR1cm5lZCBubyByb3dzIikpKTsK K30KKworLyoKKyAqIERlc3Ryb3kgcmVjZWl2ZXIgd2hlbiBkb25lIHdpdGggaXQKKyAqLworc3Rh dGljIHZvaWQKK3N2YXJpYWJsZURlc3Ryb3lSZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNlbGYpCit7 CisJcGZyZWUoc2VsZik7Cit9CisKKy8qCisgKiBJbml0aWFsbHkgY3JlYXRlIGEgRGVzdFJlY2Vp dmVyIG9iamVjdC4KKyAqLworRGVzdFJlY2VpdmVyICoKK0NyZWF0ZVZhcmlhYmxlRGVzdFJlY2Vp dmVyKHZvaWQpCit7CisJU1ZhcmlhYmxlU3RhdGUgKnNlbGYgPSAoU1ZhcmlhYmxlU3RhdGUgKikg cGFsbG9jMChzaXplb2YoU1ZhcmlhYmxlU3RhdGUpKTsKKworCXNlbGYtPnB1Yi5yZWNlaXZlU2xv dCA9IHN2YXJpYWJsZVJlY2VpdmVTbG90OworCXNlbGYtPnB1Yi5yU3RhcnR1cCA9IHN2YXJpYWJs ZVN0YXJ0dXBSZWNlaXZlcjsKKwlzZWxmLT5wdWIuclNodXRkb3duID0gc3ZhcmlhYmxlU2h1dGRv d25SZWNlaXZlcjsKKwlzZWxmLT5wdWIuckRlc3Ryb3kgPSBzdmFyaWFibGVEZXN0cm95UmVjZWl2 ZXI7CisJc2VsZi0+cHViLm15ZGVzdCA9IERlc3RWYXJpYWJsZTsKKworCS8qCisJICogUHJpdmF0 ZSBmaWVsZHMgd2lsbCBiZSBzZXQgYnkgU2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJWYXJpZCBhbmQK KwkgKiBzdmFyaWFibGVTdGFydHVwUmVjZWl2ZXIuCisJICovCisJcmV0dXJuIChEZXN0UmVjZWl2 ZXIgKikgc2VsZjsKK30KKworLyoKKyAqIFNldCBwYXJhbWV0ZXJzIGZvciBhIFZhcmlhYmxlRGVz dFJlY2VpdmVyLgorICogU2hvdWxkIGJlIGNhbGxlZCByaWdodCBhZnRlciBjcmVhdGluZyB0aGUg RGVzdFJlY2VpdmVyLgorICovCit2b2lkCitTZXRWYXJpYWJsZURlc3RSZWNlaXZlclZhcmlkKERl c3RSZWNlaXZlciAqc2VsZiwgT2lkIHZhcmlkKQoreworCVNWYXJpYWJsZVN0YXRlICpteVN0YXRl ID0gKFNWYXJpYWJsZVN0YXRlICopIHNlbGY7CisJTE9DS1RBRwkJbG9ja3RhZyBQR19VU0VEX0ZP Ul9BU1NFUlRTX09OTFk7CisKKwlBc3NlcnQobXlTdGF0ZS0+cHViLm15ZGVzdCA9PSBEZXN0VmFy aWFibGUpOworCUFzc2VydChPaWRJc1ZhbGlkKHZhcmlkKSk7CisJQXNzZXJ0KFNlYXJjaFN5c0Nh Y2hlRXhpc3RzMShWQVJJQUJMRU9JRCwgdmFyaWQpKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcKKworCVNFVF9MT0NLVEFHX09CSkVDVChsb2NrdGFnLAorCQkJCQkgICBNeURhdGFiYXNl SWQsCisJCQkJCSAgIFZhcmlhYmxlUmVsYXRpb25JZCwKKwkJCQkJICAgdmFyaWQsCisJCQkJCSAg IDApOworCisJQXNzZXJ0KExvY2tIZWxkQnlNZSgmbG9ja3RhZywgQWNjZXNzU2hhcmVMb2NrKSk7 CisKKyNlbmRpZgorCisJbXlTdGF0ZS0+dmFyaWQgPSB2YXJpZDsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMKaW5kZXggMGVkODcxMmE2My4uMjVjM2Q1ZDgyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAg LTQwNzMsNiArNDA3MywxNiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUg Km5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRT dG10OgorCQkJeworCQkJCUxldFN0bXQgICAgKnN0bXQgPSAoTGV0U3RtdCAqKSBub2RlOworCisJ CQkJaWYgKFdBTEsoc3RtdC0+dGFyZ2V0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdB TEsoc3RtdC0+cXVlcnkpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlj YXNlIFRfUExBc3NpZ25TdG10OgogCQkJewogCQkJCVBMQXNzaWduU3RtdCAqc3RtdCA9IChQTEFz c2lnblN0bXQgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCBm MThlZDhlZjlhLi5mYWRlYzg4OWUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5j CkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIExpc3QgKnNldF93aW5kb3dhZ2dfcnVuY29uZGl0 aW9uX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgICBQbGFuICpw bGFuKTsKIHN0YXRpYyBib29sIHB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzX3dhbGtlcihO b2RlICpub2RlLAogCQkJCQkJCQkJCQkJIFBsYW5uZXJJbmZvICpyb290KTsKLQorc3RhdGljIHZv aWQgcmVjb3JkX3BsYW5fdmFyaWFibGVfZGVwZW5kZW5jeShQbGFubmVySW5mbyAqcm9vdCwgT2lk IHZhcmlkKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMjA3NCwxOCArMjA3NCw3 IEBAIGZpeF9leHByX2NvbW1vbihQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSkKIAkJUGFy YW0JICAgKnAgPSAoUGFyYW0gKikgbm9kZTsKIAogCQlpZiAocC0+cGFyYW1raW5kID09IFBBUkFN X1ZBUklBQkxFKQotCQl7Ci0JCQlQbGFuSW52YWxJdGVtICppbnZhbF9pdGVtID0gbWFrZU5vZGUo UGxhbkludmFsSXRlbSk7Ci0KLQkJCS8qIHBhcmFtaWQgaXMgc3RpbGwgc2Vzc2lvbiB2YXJpYWJs ZSBpZCAqLwotCQkJaW52YWxfaXRlbS0+Y2FjaGVJZCA9IFZBUklBQkxFT0lEOwotCQkJaW52YWxf aXRlbS0+aGFzaFZhbHVlID0gR2V0U3lzQ2FjaGVIYXNoVmFsdWUxKFZBUklBQkxFT0lELAotCQkJ CQkJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocC0+cGFyYW12YXJpZCkpOwotCi0JCQkvKiBB cHBlbmQgdGhpcyB2YXJpYWJsZSB0byBnbG9iYWwsIHJlZ2lzdGVyIGRlcGVuZGVuY3kgKi8KLQkJ CXJvb3QtPmdsb2ItPmludmFsSXRlbXMgPSBsYXBwZW5kKHJvb3QtPmdsb2ItPmludmFsSXRlbXMs Ci0JCQkJCQkJCQkJCSBpbnZhbF9pdGVtKTsKLQkJfQorCQkJcmVjb3JkX3BsYW5fdmFyaWFibGVf ZGVwZW5kZW5jeShyb290LCBwLT5wYXJhbXZhcmlkKTsKIAl9CiB9CiAKQEAgLTM1NzYsNiArMzU2 NSwyNSBAQCByZWNvcmRfcGxhbl90eXBlX2RlcGVuZGVuY3koUGxhbm5lckluZm8gKnJvb3QsIE9p ZCB0eXBpZCkKIAl9CiB9CiAKKy8qCisgKiBSZWNvcmQgZGVwZW5kZW5jeSBvbiBhIHNlc3Npb24g dmFyaWFibGUuIFRoZSB2YXJpYWJsZSBjYW4gYmUgdXNlZCBhcyBhCisgKiBzZXNzaW9uIHZhcmlh YmxlIGluIGV4cHJlc3Npb24gbGlzdCwgb3IgdGFyZ2V0IG9mIExFVCBzdGF0ZW1lbnQuCisgKi8K K3N0YXRpYyB2b2lkCityZWNvcmRfcGxhbl92YXJpYWJsZV9kZXBlbmRlbmN5KFBsYW5uZXJJbmZv ICpyb290LCBPaWQgdmFyaWQpCit7CisJUGxhbkludmFsSXRlbSAqaW52YWxfaXRlbSA9IG1ha2VO b2RlKFBsYW5JbnZhbEl0ZW0pOworCisJLyogcGFyYW1pZCBpcyBzdGlsbCBzZXNzaW9uIHZhcmlh YmxlIGlkICovCisJaW52YWxfaXRlbS0+Y2FjaGVJZCA9IFZBUklBQkxFT0lEOworCWludmFsX2l0 ZW0tPmhhc2hWYWx1ZSA9IEdldFN5c0NhY2hlSGFzaFZhbHVlMShWQVJJQUJMRU9JRCwKKwkJCQkJ CQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCisJLyogQXBwZW5kIHRoaXMgdmFy aWFibGUgdG8gZ2xvYmFsLCByZWdpc3RlciBkZXBlbmRlbmN5ICovCisJcm9vdC0+Z2xvYi0+aW52 YWxJdGVtcyA9IGxhcHBlbmQocm9vdC0+Z2xvYi0+aW52YWxJdGVtcywKKwkJCQkJCQkJCSBpbnZh bF9pdGVtKTsKK30KKwogLyoKICAqIGV4dHJhY3RfcXVlcnlfZGVwZW5kZW5jaWVzCiAgKgkJR2l2 ZW4gYSByZXdyaXR0ZW4sIGJ1dCBub3QgeWV0IHBsYW5uZWQsIHF1ZXJ5IG9yIHF1ZXJpZXMKQEAg LTM2NDksNiArMzY1NywxMCBAQCBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2llc193YWxrZXIoTm9k ZSAqbm9kZSwgUGxhbm5lckluZm8gKmNvbnRleHQpCiAJCQlxdWVyeSA9IFV0aWxpdHlDb250YWlu c1F1ZXJ5KHF1ZXJ5LT51dGlsaXR5U3RtdCk7CiAJCQlpZiAocXVlcnkgPT0gTlVMTCkKIAkJCQly ZXR1cm4gZmFsc2U7CisKKwkJCS8qIFJlY29yZCB0aGUgc2Vzc2lvbiB2YXJpYWJsZSB1c2VkIGFz IHRhcmdldCBvZiBMRVQgc3RhdGVtZW50LiAqLworCQkJaWYgKE9pZElzVmFsaWQocXVlcnktPnJl c3VsdFZhcmlhYmxlKSkKKwkJCQlyZWNvcmRfcGxhbl92YXJpYWJsZV9kZXBlbmRlbmN5KGNvbnRl eHQsIHF1ZXJ5LT5yZXN1bHRWYXJpYWJsZSk7CiAJCX0KIAogCQkvKiBSZW1lbWJlciBpZiBhbnkg UXVlcnkgaGFzIFJMUyBxdWFscyBhcHBsaWVkIGJ5IHJld3JpdGVyICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YwppbmRleCBjMmY0ZjQ4MzZmLi5mZDE3YjRmN2MwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI1 LDkgKzI1LDEyIEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9z eXNhdHRyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5j bHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5j cy5oIgpAQCAtNTIsNiArNTUsNyBAQAogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC04NSw2ICs4OSw4IEBAIHN0YXRpYyBRdWVyeSAq dHJhbnNmb3JtQ3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJ CSBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUNhbGxT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJQ2FsbFN0bXQgKnN0bXQpOworc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkgICBM ZXRTdG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VT dGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkJCQkgICBMb2NraW5nQ2xhdXNlICpsYywg Ym9vbCBwdXNoZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFHRV9URVNUCkBA IC0zMjgsNiArMzM0LDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg KnBhcnNlVHJlZSkKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9EZWxldGVTdG10Ogog CQljYXNlIFRfTWVyZ2VTdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJCSh2b2lkKSB0ZXN0X3Jh d19leHByZXNzaW9uX2NvdmVyYWdlKHBhcnNlVHJlZSwgTlVMTCk7CiAJCQlicmVhazsKIAkJZGVm YXVsdDoKQEAgLTQwMSw2ICs0MDgsMTEgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJCQkJCQkJCSAgIChDYWxsU3RtdCAqKSBwYXJzZVRyZWUp OwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1M ZXRTdG10KHBzdGF0ZSwKKwkJCQkJCQkJCSAgKExldFN0bXQgKikgcGFyc2VUcmVlKTsKKwkJCWJy ZWFrOworCiAJCWRlZmF1bHQ6CiAKIAkJCS8qCkBAIC00NDMsNiArNDU1LDcgQEAgYW5hbHl6ZV9y ZXF1aXJlc19zbmFwc2hvdChSYXdTdG10ICpwYXJzZVRyZWUpCiAJCWNhc2UgVF9NZXJnZVN0bXQ6 CiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQljYXNlIFRfUExBc3NpZ25TdG10OgorCQljYXNlIFRf TGV0U3RtdDoKIAkJCXJlc3VsdCA9IHRydWU7CiAJCQlicmVhazsKIApAQCAtMTY0Miw2ICsxNjU1 LDI4NSBAQCB0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RT dG10ICpzdG10KQogCXJldHVybiBxcnk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1MZXRTdG10IC0K KyAqCSAgdHJhbnNmb3JtIGFuIExldCBTdGF0ZW1lbnQKKyAqLworc3RhdGljIFF1ZXJ5ICoKK3Ry YW5zZm9ybUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMZXRTdG10ICpzdG10KQoreworCVF1 ZXJ5CSAgICpxdWVyeTsKKwlRdWVyeQkgICAqcmVzdWx0OworCUxpc3QJICAgKmV4cHJMaXN0ID0g TklMOworCUxpc3QJICAgKmV4cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlM aXN0Q2VsbCAgICppbmRpcmVjdGlvbl9oZWFkID0gTlVMTDsKKwlRdWVyeQkgICAqc2VsZWN0UXVl cnk7CisJT2lkCQkJdmFyaWQ7CisJY2hhcgkgICAqYXR0cm5hbWUgPSBOVUxMOworCWJvb2wJCW5v dF91bmlxdWU7CisJYm9vbAkJaXNfcm93dHlwZTsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlw bW9kOworCU9pZAkJCWNvbGxpZDsKKwlBY2xSZXN1bHQJYWNscmVzdWx0OworCUxpc3QJICAgKm5h bWVzID0gTlVMTDsKKwlpbnQJCQlpbmRpcmVjdGlvbl9zdGFydDsKKwlpbnQJCQlpID0gMDsKKwor CS8qIFRoZXJlIGNhbid0IGJlIGFueSBvdXRlciBXSVRIIHRvIHdvcnJ5IGFib3V0ICovCisJQXNz ZXJ0KHBzdGF0ZS0+cF9jdGVuYW1lc3BhY2UgPT0gTklMKTsKKworCW5hbWVzID0gTmFtZXNGcm9t TGlzdChzdG10LT50YXJnZXQpOworCisJLyoKKwkgKiBUaGUgQWNjZXNzU2hhcmVMb2NrIGlzIGNy ZWF0ZWQgb24gcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlLiBUaGUgbG9jaworCSAqIHdpbGwgYmUg a2VwdCBmb3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgorCSovCisJdmFyaWQgPSBJZGVudGlmeVZh cmlhYmxlKG5hbWVzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVlLCBmYWxzZSk7CisJaWYgKG5vdF91 bmlxdWUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9BTUJJR1VPVVNf UEFSQU1FVEVSKSwKKwkJCQkgZXJybXNnKCJ0YXJnZXQgXCIlc1wiIG9mIExFVCBjb21tYW5kIGlz IGFtYmlndW91cyIsCisJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSksCisJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJaWYgKCFPaWRJc1Zh bGlkKHZhcmlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInNlc3Npb24gdmFyaWFibGUgXCIlc1wiIGRvZXNu J3QgZXhpc3QiLAorCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhuYW1lcykpLAorCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKworCS8qCisJICogQ2FsY3Vs YXRlIHN0YXJ0IG9mIHBvc3NpYmxlIHBvc2l0aW9uIG9mIGFuIGluZGlyZWN0aW9uIGluIGxpc3Qs CisJICogYW5kIHdoZW4gaXQgaXMgaW5zaWRlIHRoZSBsaXN0LCBzdG9yZSBwb2ludGVyIG9uIGZp cnN0IG5vZGUKKwkgKiBvZiBpbmRpcmVjdGlvbi4KKwkgKi8KKwlpbmRpcmVjdGlvbl9zdGFydCA9 IGxpc3RfbGVuZ3RoKG5hbWVzKSAtIChhdHRybmFtZSA/IDEgOiAwKTsKKwlpZiAobGlzdF9sZW5n dGgoc3RtdC0+dGFyZ2V0KSA+IGluZGlyZWN0aW9uX3N0YXJ0KQorCQlpbmRpcmVjdGlvbl9oZWFk ID0gbGlzdF9udGhfY2VsbChzdG10LT50YXJnZXQsIGluZGlyZWN0aW9uX3N0YXJ0KTsKKworCWdl dF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZCh2YXJpZCwgJnR5cGlkLCAmdHlw bW9kLCAmY29sbGlkKTsKKworCWlzX3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodHlwaWQpOwor CisJaWYgKGF0dHJuYW1lICYmICFpc19yb3d0eXBlKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coInR5cGUgXCIl c1wiIG9mIHRhcmdldCBzZXNzaW9uIHZhcmlhYmxlIFwiJXMuJXNcIiBpcyBub3QgYSBjb21wb3Np dGUgdHlwZSIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCksCisJCQkJCQlnZXRfbmFtZXNw YWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSksCisJCQkJCQln ZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJaWYgKHN0bXQtPnNldF9kZWZhdWx0ICYm IGF0dHJuYW1lICE9IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygib25seSBzZXNzaW9uIHZhcmlhYmxl ICh3aXRob3V0IGF0dHJpYnV0ZSBzcGVjaWZpY2F0aW9uKSBjYW4gYmUgc2V0IHRvIGRlZmF1bHQi KSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisK KwlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCB2YXJpZCwg R2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0sp CisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBOYW1lTGlzdFRv U3RyaW5nKG5hbWVzKSk7CisKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gRVhQUl9LSU5EX0xFVF9U QVJHRVQ7CisKKwkvKgorCSAqIFRoZSBMRVQgc3RhdGVtZW50cyBzdXBwcG9ydHMgdHdvIHN5bnRh eGVzOiBMRVQgdmFyID0gZXhwciBhbmQgTEVUIHZhciA9CisJICogREVGQVVMVC4gSW4gZmlyc3Qg Y2FzZSwgdGhlIGV4cHJlc3Npb24gaXMgb2YgU2VsZWN0U3RtdCBub2RlIGFuZCBpdCBpcworCSAq IHRyYW5zZm9ybWF0ZWQgdG8gcXVlcnkgKFNFTEVDVCkgYnkgdXN1YWwgd2F5LiBTZWNvbmQgc3lu dGF4IHNob3VsZCBiZQorCSAqIHRyYW5zZm9ybWVkIGRpZmZlcmVudGx5LiBJdCBpcyBtb3JlIGNs ZWFuZXIgZG8gdGhpcyB0cmFuc2Zvcm1hdGlvbiBoZXJlCisJICogKGxpa2Ugc3BlY2lhbCBjYXNl KSwgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRvIGVuaGFuY2UgU2VsZWN0U3RtdCBhYm91dAorCSAq IGZpZWxkcyBuZWNlc3NhcnkgZm9yIHRoaXMgdHJhbnNmb3JtYXRpb24gc29td2VoZXJlIGluIFNl bGVjdFN0bXQKKwkgKiB0cmFuc2Zvcm1hdGlvbi4gSXNuJ3QgdG8gbmVjZXNzYXJ5IHRvIHVnbGlm eSB0aGUgU2VsZWN0U3RtdAorCSAqIHRyYW5zZm9ybWF0aW9uLiBUaGlzIGlzIHNwZWNpYWwgY2Fz ZSBvZiBMRVQgc3RhdGVtZW50LCBub3QgU2VsZWN0U3RtdC4KKwkgKi8KKwlpZiAoc3RtdC0+c2V0 X2RlZmF1bHQpCisJeworCQlzZWxlY3RRdWVyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKKwkJc2VsZWN0 UXVlcnktPmNvbW1hbmRUeXBlID0gQ01EX1NFTEVDVDsKKworCQkvKgorCQkgKiBSZXNUYXJnZXQo U2V0VG9EZWZhdWx0KSAtPiBUYXJnZXRFbnRyeShleHByKFNldFRvRGVmYXVsdCkpIFRoZQorCQkg KiBTZXRUb0RlZmF1bHQgaXMgcmVwbGFjZWQgYnkgZGVmZXhwciBieSByZXdyaXRlciBpbiBSZXdy aXRlUXVlcnkKKwkJICogZnVuY3Rpb24uCisJCSAqLworCQlzZWxlY3RRdWVyeS0+dGFyZ2V0TGlz dCA9IHRyYW5zZm9ybVRhcmdldExpc3QocHN0YXRlLAorCQkJCQkJCQkJCQkJCSAgKChTZWxlY3RT dG10ICopIHN0bXQtPnF1ZXJ5KS0+dGFyZ2V0TGlzdCwKKwkJCQkJCQkJCQkJCQkgIEVYUFJfS0lO RF9MRVRfVEFSR0VUKTsKKwl9CisJZWxzZQorCQlzZWxlY3RRdWVyeSA9IHRyYW5zZm9ybVN0bXQo cHN0YXRlLCBzdG10LT5xdWVyeSk7CisKKwkvKiBUaGUgZ3JhbW1hciBzaG91bGQgaGF2ZSBwcm9k dWNlZCBhIFNFTEVDVCAqLworCUFzc2VydChJc0Eoc2VsZWN0UXVlcnksIFF1ZXJ5KSAmJiBzZWxl Y3RRdWVyeS0+Y29tbWFuZFR5cGUgPT0gQ01EX1NFTEVDVCk7CisKKwkvKi0tLS0tLS0tLS0KKwkg KiBHZW5lcmF0ZSBhbiBleHByZXNzaW9uIGxpc3QgZm9yIHRoZSBMRVQgdGhhdCBzZWxlY3RzIGFs bCB0aGUKKwkgKiBub24tcmVzanVuayBjb2x1bW5zIGZyb20gdGhlIHN1YnF1ZXJ5LgorCSAqLS0t LS0tLS0tLQorCSAqLworCWV4cHJMaXN0ID0gTklMOworCWZvcmVhY2gobGMsIHNlbGVjdFF1ZXJ5 LT50YXJnZXRMaXN0KQorCXsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBs Zmlyc3QobGMpOworCisJCWlmICh0bGUtPnJlc2p1bmspCisJCQljb250aW51ZTsKKworCQlleHBy TGlzdCA9IGxhcHBlbmQoZXhwckxpc3QsIHRsZS0+ZXhwcik7CisJfQorCisJLyogZG9uJ3QgYWxs b3cgbXVsdGljb2x1bW4gcmVzdWx0ICovCisJaWYgKGxpc3RfbGVuZ3RoKGV4cHJMaXN0KSAhPSAx KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkgZXJybXNnX3BsdXJhbCgiYXNzaWdubWVudCBleHByZXNzaW9uIHJldHVybmVkICVkIGNv bHVtbiIsCisJCQkJCQkJICAgImFzc2lnbm1lbnQgZXhwcmVzc2lvbiByZXR1cm5lZCAlZCBjb2x1 bW5zIiwKKwkJCQkJCQkgICBsaXN0X2xlbmd0aChleHByTGlzdCksCisJCQkJCQkJICAgbGlzdF9s ZW5ndGgoZXhwckxpc3QpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJ CQkJCWV4cHJMb2NhdGlvbigoTm9kZSAqKSBleHByTGlzdCkpKSk7CisKKwlleHByTGlzdENvZXIg PSBOSUw7CisKKwlmb3JlYWNoKGxjLCBleHByTGlzdCkKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAo RXhwciAqKSBsZmlyc3QobGMpOworCQlFeHByCSAgICpjb2VyY2VkX2V4cHI7CisJCVBhcmFtCSAg ICpwYXJhbTsKKwkJT2lkCQkJZXhwcnR5cGlkOworCisJCWlmIChJc0EoZXhwciwgU2V0VG9EZWZh dWx0KSkKKwkJeworCQkJU2V0VG9EZWZhdWx0ICpkZWYgPSAoU2V0VG9EZWZhdWx0ICopIGV4cHI7 CisKKwkJCWRlZi0+dHlwZUlkID0gdHlwaWQ7CisJCQlkZWYtPnR5cGVNb2QgPSB0eXBtb2Q7CisJ CQlkZWYtPmNvbGxhdGlvbiA9IGNvbGxpZDsKKwkJfQorCQllbHNlIGlmIChJc0EoZXhwciwgQ29u c3QpICYmICgoQ29uc3QgKikgZXhwciktPmNvbnN0aXNudWxsKQorCQl7CisJCQkvKiB1c2Uga25v d24gdHlwZSBmb3IgTlVMTCB2YWx1ZSAqLworCQkJZXhwciA9IChFeHByICopIG1ha2VOdWxsQ29u c3QodHlwaWQsIHR5cG1vZCwgY29sbGlkKTsKKwkJfQorCisJCS8qIG5vdyB3ZSBjYW4gcmVhZCB0 eXBlIG9mIGV4cHJlc3Npb24gKi8KKwkJZXhwcnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgZXhw cik7CisKKwkJcGFyYW0gPSBtYWtlTm9kZShQYXJhbSk7CisJCXBhcmFtLT5wYXJhbWtpbmQgPSBQ QVJBTV9WQVJJQUJMRTsKKwkJcGFyYW0tPnBhcmFtdmFyaWQgPSB2YXJpZDsKKwkJcGFyYW0tPnBh cmFtdHlwZSA9IHR5cGlkOworCQlwYXJhbS0+cGFyYW10eXBtb2QgPSB0eXBtb2Q7CisKKwkJaWYg KGluZGlyZWN0aW9uX2hlYWQpCisJCXsKKwkJCWJvb2wJCXRhcmdldElzQXJyYXk7CisJCQljaGFy CSAgICp0YXJnZXROYW1lOworCisJCQl0YXJnZXROYW1lID0gZ2V0X3Nlc3Npb25fdmFyaWFibGVf bmFtZSh2YXJpZCk7CisJCQl0YXJnZXRJc0FycmF5ID0gT2lkSXNWYWxpZChnZXRfZWxlbWVudF90 eXBlKHR5cGlkKSk7CisKKwkJCXBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzID0gdHJ1ZTsK KworCQkJY29lcmNlZF9leHByID0gKEV4cHIgKikKKwkJCQl0cmFuc2Zvcm1Bc3NpZ25tZW50SW5k aXJlY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJCQkgICAoTm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJ CQkJICAgdGFyZ2V0TmFtZSwKKwkJCQkJCQkJCQkJICAgdGFyZ2V0SXNBcnJheSwKKwkJCQkJCQkJ CQkJICAgdHlwaWQsCisJCQkJCQkJCQkJCSAgIHR5cG1vZCwKKwkJCQkJCQkJCQkJICAgSW52YWxp ZE9pZCwKKwkJCQkJCQkJCQkJICAgc3RtdC0+dGFyZ2V0LAorCQkJCQkJCQkJCQkgICBpbmRpcmVj dGlvbl9oZWFkLAorCQkJCQkJCQkJCQkgICAoTm9kZSAqKSBleHByLAorCQkJCQkJCQkJCQkgICBD T0VSQ0lPTl9QTFBHU1FMLAorCQkJCQkJCQkJCQkgICBzdG10LT5sb2NhdGlvbik7CisJCX0KKwkJ ZWxzZQorCQkJY29lcmNlZF9leHByID0gKEV4cHIgKikKKwkJCQljb2VyY2VfdG9fdGFyZ2V0X3R5 cGUocHN0YXRlLAorCQkJCQkJCQkJICAoTm9kZSAqKSBleHByLAorCQkJCQkJCQkJICBleHBydHlw aWQsCisJCQkJCQkJCQkgIHR5cGlkLCB0eXBtb2QsCisJCQkJCQkJCQkgIENPRVJDSU9OX0FTU0lH Tk1FTlQsCisJCQkJCQkJCQkgIENPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJCQkJCQkJICBzdG10 LT5sb2NhdGlvbik7CisKKwkJaWYgKGNvZXJjZWRfZXhwciA9PSBOVUxMKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBl cnJtc2coInZhcmlhYmxlIFwiJXMuJXNcIiBpcyBvZiB0eXBlICVzLCIKKwkJCQkJCQkiIGJ1dCBl eHByZXNzaW9uIGlzIG9mIHR5cGUgJXMiLAorCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRf c2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQlnZXRfc2Vzc2lvbl92 YXJpYWJsZV9uYW1lKHZhcmlkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCksCisJCQkJ CQkJZm9ybWF0X3R5cGVfYmUoZXhwcnR5cGlkKSksCisJCQkJCSBlcnJoaW50KCJZb3Ugd2lsbCBu ZWVkIHRvIHJld3JpdGUgb3IgY2FzdCB0aGUgZXhwcmVzc2lvbi4iKSwKKwkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBleHByKSkpKTsKKworCQll eHByTGlzdENvZXIgPSBsYXBwZW5kKGV4cHJMaXN0Q29lciwgY29lcmNlZF9leHByKTsKKwl9CisK KwkvKgorCSAqIEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIGNvbXB1dGVk IGxpc3Qgb2YgZXhwcmVzc2lvbnMuCisJICovCisJcXVlcnkgPSBtYWtlTm9kZShRdWVyeSk7CisJ cXVlcnktPmNvbW1hbmRUeXBlID0gQ01EX1NFTEVDVDsKKworCWZvcmVhY2gobGMsIGV4cHJMaXN0 Q29lcikKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlUYXJn ZXRFbnRyeSAqdGxlOworCisJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeShleHByLAorCQkJCQkJCSAg aSArIDEsCisJCQkJCQkJICBGaWd1cmVDb2xuYW1lKChOb2RlICopIGV4cHIpLAorCQkJCQkJCSAg ZmFsc2UpOworCQlxdWVyeS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQocXVlcnktPnRhcmdldExpc3Qs IHRsZSk7CisJfQorCisJLyogZG9uZSBidWlsZGluZyB0aGUgcmFuZ2UgdGFibGUgYW5kIGpvaW50 cmVlICovCisJcXVlcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CisJcXVlcnktPmpvaW50 cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgTlVMTCk7CisKKwlxdWVyeS0+ aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOworCXF1ZXJ5LT5oYXNTdWJM aW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKwlxdWVyeS0+aGFzU2Vzc2lvblZhcmlhYmxl cyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzOworCisJLyogVGhpcyBpcyB0b3AgcXVl cnkgKi8KKwlxdWVyeS0+Y2FuU2V0VGFnID0gdHJ1ZTsKKworCS8qCisJICogU2F2ZSB0YXJnZXQg c2Vzc2lvbiB2YXJpYWJsZSBpZC4gVGhpcyB2YWx1ZSBpcyB1c2VkIG11bHRpcGxlIHRpbWVzOiBi eQorCSAqIHF1ZXJ5IHJld3JpdGVyIChmb3IgZ2V0dGluZyByZWxhdGVkIGRlZmV4cHIpLCBieSBw bGFubmVyIChmb3IgYWNxdWlyaW5nCisJICogQWNjZXNzU2hhcmVMb2NrIG9uIHRhcmdldCB2YXJp YWJsZSksIGFuZCBieSBleGVjdXRvciAod2UgbmVlZCB0byBrbm93CisJICogdGFyZ2V0IHZhcmlh YmxlIGlkKS4KKwkgKi8KKwlxdWVyeS0+cmVzdWx0VmFyaWFibGUgPSB2YXJpZDsKKworCWFzc2ln bl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwgcXVlcnkpOworCisJc3RtdC0+cXVlcnkgPSAoTm9k ZSAqKSBxdWVyeTsKKworCS8qCisJICogV2hlbiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgYXMgYSBQ bHBnU1FMIExFVCBzdGF0ZW1lbnQsIHRoZW4gd2Ugc2hvdWxkCisJICogcmV0dXJuIHRoZSBxdWVy eSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gdXNlIGEgdXRpbGl0eVN0bXQgd3JhcHBlcgorCSAq IG5vZGUuCisJICovCisJaWYgKHN0bXQtPnBscGdzcWxfbW9kZSkKKwkJcmV0dXJuIHF1ZXJ5Owor CisJLyogcmVwcmVzZW50IHRoZSBjb21tYW5kIGFzIGEgdXRpbGl0eSBRdWVyeSAqLworCXJlc3Vs dCA9IG1ha2VOb2RlKFF1ZXJ5KTsKKwlyZXN1bHQtPmNvbW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7 CisJcmVzdWx0LT51dGlsaXR5U3RtdCA9IChOb2RlICopIHN0bXQ7CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCiAvKgogICogdHJhbnNmb3JtU2V0T3BlcmF0aW9uU3RtdCAtCiAgKgkgIHRyYW5zZm9y bXMgYSBzZXQtb3BlcmF0aW9ucyB0cmVlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmNTUzM2QyNDcyLi44YWQ2 NjUyMGJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTMwNiw3ICszMDYsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCQlEcm9wVHJhbnNmb3JtU3RtdAogCQlEcm9wVXNlck1hcHBpbmdTdG10IEV4cGxh aW5TdG10IEZldGNoU3RtdAogCQlHcmFudFN0bXQgR3JhbnRSb2xlU3RtdCBJbXBvcnRGb3JlaWdu U2NoZW1hU3RtdCBJbmRleFN0bXQgSW5zZXJ0U3RtdAotCQlMaXN0ZW5TdG10IExvYWRTdG10IExv Y2tTdG10IE1lcmdlU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3Rt dAorCQlMZXRTdG10IExpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQgTWVyZ2VTdG10IE5vdGlm eVN0bXQgRXhwbGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3Rt dCBBbHRlckZ1bmN0aW9uU3RtdCBSZWluZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVG dW5jU3RtdCBSZW1vdmVPcGVyU3RtdCBSZW5hbWVTdG10IFJldHVyblN0bXQgUmV2b2tlU3RtdCBS ZXZva2VSb2xlU3RtdAogCQlSdWxlQWN0aW9uU3RtdCBSdWxlQWN0aW9uU3RtdE9yRW1wdHkgUnVs ZVN0bXQKQEAgLTQ1NCw2ICs0NTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCVRy aWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRpb25f bGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKIAkJCQlkcm9wX29wdGlvbl9saXN0IHB1Yl9v YmpfbGlzdAorCQkJCWxldF90YXJnZXQKIAogJXR5cGUgPG5vZGU+CW9wdF9yb3V0aW5lX2JvZHkK ICV0eXBlIDxncm91cGNsYXVzZT4gZ3JvdXBfY2xhdXNlCkBAIC03MzQsNyArNzM1LDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlLRVkgS0VZUwogCiAJTEFCRUwgTEFOR1VBR0UgTEFSR0Vf UCBMQVNUX1AgTEFURVJBTF9QCi0JTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBM SUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCisJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVG VCBMRVQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAogCUxPQ0FMVElNRSBMT0NB TFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRAogCiAJTUFQUElORyBNQVRD SCBNQVRDSEVEIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVJHRSBNRVRIT0QKQEAgLTEwNjksNiAr MTA3MCw3IEBAIHN0bXQ6CiAJCQl8IEltcG9ydEZvcmVpZ25TY2hlbWFTdG10CiAJCQl8IEluZGV4 U3RtdAogCQkJfCBJbnNlcnRTdG10CisJCQl8IExldFN0bXQKIAkJCXwgTGlzdGVuU3RtdAogCQkJ fCBSZWZyZXNoTWF0Vmlld1N0bXQKIAkJCXwgTG9hZFN0bXQKQEAgLTExOTY2LDcgKzExOTY4LDgg QEAgRXhwbGFpbmFibGVTdG10OgogCQkJfCBDcmVhdGVBc1N0bXQKIAkJCXwgQ3JlYXRlTWF0Vmll d1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10Ci0JCQl8IEV4ZWN1dGVTdG10CQkJCQkvKiBi eSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJCXwgRXhlY3V0ZVN0bXQKKwkJCXwgTGV0U3Rt dAkJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAkJD0kMSAqLwogCQk7CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgpAQCAtMTE5OTYsNyArMTE5OTksOCBAQCBQcmVwYXJhYmxlU3RtdDoKIAkJCXwg SW5zZXJ0U3RtdAogCQkJfCBVcGRhdGVTdG10CiAJCQl8IERlbGV0ZVN0bXQKLQkJCXwgTWVyZ2VT dG10CQkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IE1lcmdlU3RtdAor CQkJfCBMZXRTdG10CQkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCiAJCTsKIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCkBAIC0xMjU4NCw2ICsxMjU4OCw0OSBAQCBvcHRfaG9sZDog LyogRU1QVFkgKi8JCQkJCQl7ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQg PSAwOyB9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJ CQkJTEVUIFNUQVRFTUVOVFMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitMZXRTdG10OglM RVQgbGV0X3RhcmdldCAnPScgYV9leHByCisJCQkJeworCQkJCQlMZXRTdG10CSAgICpuID0gbWFr ZU5vZGUoTGV0U3RtdCk7CisJCQkJCVNlbGVjdFN0bXQgKnNlbGVjdDsKKwkJCQkJUmVzVGFyZ2V0 ICAqcmVzOworCisJCQkJCW4tPnRhcmdldCA9ICQyOworCisJCQkJCXNlbGVjdCA9IG1ha2VOb2Rl KFNlbGVjdFN0bXQpOworCQkJCQlyZXMgPSBtYWtlTm9kZShSZXNUYXJnZXQpOworCisJCQkJCS8q IENyZWF0ZSB0YXJnZXQgbGlzdCBmb3IgaW1wbGljaXQgcXVlcnkgKi8KKwkJCQkJcmVzLT5uYW1l ID0gTlVMTDsKKwkJCQkJcmVzLT5pbmRpcmVjdGlvbiA9IE5JTDsKKwkJCQkJcmVzLT52YWwgPSAo Tm9kZSAqKSAkNDsKKwkJCQkJcmVzLT5sb2NhdGlvbiA9IEA0OworCisJCQkJCXNlbGVjdC0+dGFy Z2V0TGlzdCA9IGxpc3RfbWFrZTEocmVzKTsKKwkJCQkJbi0+cXVlcnkgPSAoTm9kZSAqKSBzZWxl Y3Q7CisKKwkJCQkJbi0+c2V0X2RlZmF1bHQgPSBJc0EoJDQsIFNldFRvRGVmYXVsdCk7CisKKwkJ CQkJbi0+bG9jYXRpb24gPSBAMjsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOwor CitsZXRfdGFyZ2V0OgorCQkJQ29sSWQgb3B0X2luZGlyZWN0aW9uCisJCQkJeworCQkJCQkkJCA9 IGxpc3RfbWFrZTEobWFrZVN0cmluZygkMSkpOworCQkJCQlpZiAoJDIpCisJCQkJCQkgICQkID0g bGlzdF9jb25jYXQoJCQsCisJCQkJCQkJCQkJICAgY2hlY2tfaW5kaXJlY3Rpb24oJDIsIHl5c2Nh bm5lcikpOworCQkJCX0KKwkJOworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVF Ulk6CkBAIC0xNzIyOCw2ICsxNzI3NSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTEFS R0VfUAogCQkJfCBMQVNUX1AKIAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBMRVZFTAog CQkJfCBMSVNURU4KIAkJCXwgTE9BRApAQCAtMTc4MTIsNiArMTc4NjAsNyBAQCBiYXJlX2xhYmVs X2tleXdvcmQ6CiAJCQl8IExFQUtQUk9PRgogCQkJfCBMRUFTVAogCQkJfCBMRUZUCisJCQl8IExF VAogCQkJfCBMRVZFTAogCQkJfCBMSUtFCiAJCQl8IExJU1RFTgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5j CmluZGV4IDZmYzAzMTY2YzYuLjUzZmY2N2M2MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAg LTM0OSw2ICszNDksNyBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCUFzc2VydChmYWxzZSk7CQkvKiBjYW4ndCBoYXBw ZW4gKi8KIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9PVEhFUjoKKwkJY2FzZSBFWFBSX0tJ TkRfTEVUX1RBUkdFVDoKIAogCQkJLyoKIAkJCSAqIEFjY2VwdCBhZ2dyZWdhdGUvZ3JvdXBpbmcg aGVyZTsgY2FsbGVyIG11c3QgdGhyb3cgZXJyb3IgaWYKQEAgLTk1NSw2ICs5NTYsOSBAQCB0cmFu c2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5j LAogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQli cmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKKwkJCWVyciA9IF8oIndpbmRvdyBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIExFVCBzdGF0ZW1lbnQiKTsKKwkJCWJyZWFrOwog CiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhl cmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3Rl LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3RlLmMKaW5kZXggYzViMWE0OTcyNS4uMzVh YTA3MDU3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUuYwpAQCAtMTMzLDYgKzEzMywxNCBAQCB0cmFu c2Zvcm1XaXRoQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2l0aENsYXVzZSAqd2l0aENsYXVz ZSkKIAkJCQkJZXJybXNnKCJNRVJHRSBub3Qgc3VwcG9ydGVkIGluIFdJVEggcXVlcnkiKSwKIAkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3RlLT5sb2NhdGlvbikpOwogCisJCS8qIExF VCBpcyBhbGxvd2VkIGJ5IHBhcnNlciwgYnV0IG5vdCBzdXBwb3J0ZWQuIFJlamVjdCBmb3Igbm93 ICovCisJCWlmIChJc0EoY3RlLT5jdGVxdWVyeSwgTGV0U3RtdCkpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJy bXNnKCJMRVQgbm90IHN1cHBvcnRlZCBpbiBXSVRIIHF1ZXJ5IiksCisJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGN0ZS0+bG9jYXRpb24pKTsKKworCiAJCWZvcl9lYWNoX2NlbGwocmVz dCwgd2l0aENsYXVzZS0+Y3RlcywgbG5leHQod2l0aENsYXVzZS0+Y3RlcywgbGMpKQogCQl7CiAJ CQlDb21tb25UYWJsZUV4cHIgKmN0ZTIgPSAoQ29tbW9uVGFibGVFeHByICopIGxmaXJzdChyZXN0 KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDAzYjAzZGMxNDIuLjg4ODlmZmViMGQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNjMwLDYgKzYzMCw3IEBAIHRyYW5zZm9ybUNvbHVt blJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJ TkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJY2Fz ZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdF VDoKIAogCQkJLyogb2theSAqLwogCQkJYnJlYWs7CkBAIC0yMDA4LDYgKzIwMDksNyBAQCB0cmFu c2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2Fz ZSBFWFBSX0tJTkRfVkFMVUVTOgogCQljYXNlIEVYUFJfS0lORF9WQUxVRVNfU0lOR0xFOgogCQlj YXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgorCQljYXNlIEVYUFJfS0lORF9MRVRfVEFSR0VUOgog CQkJLyogb2theSAqLwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJ TlQ6CkBAIC0zMzg5LDYgKzMzOTEsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5k IGV4cHJLaW5kKQogCQkJcmV0dXJuICJHRU5FUkFURUQgQVMiOwogCQljYXNlIEVYUFJfS0lORF9D WUNMRV9NQVJLOgogCQkJcmV0dXJuICJDWUNMRSI7CisJCWNhc2UgRVhQUl9LSU5EX0xFVF9UQVJH RVQ6CisJCQlyZXR1cm4gIkxFVCI7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25h bGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVu Yy5jCmluZGV4IGEwZmRhYTg2MDUuLmVkNWUxZGIwM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMu YwpAQCAtMjY1Nyw2ICsyNjU3LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJ TkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQ Ul9LSU5EX0xFVF9UQVJHRVQ6CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gTEVUIHRhcmdldCBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAog CQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJl LCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rhcmdl dC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDRjY2E5N2ZmOWMu LjAyMmRkZTI3ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTg4LDcgKzg4LDkg QEAgdHJhbnNmb3JtVGFyZ2V0RW50cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKiB0aHJvdWdo IHVubW9kaWZpZWQuICAodHJhbnNmb3JtRXhwciB3aWxsIHRocm93IHRoZSBhcHByb3ByaWF0ZQog CQkgKiBlcnJvciBpZiB3ZSdyZSBkaXNhbGxvd2luZyBpdC4pCiAJCSAqLwotCQlpZiAoZXhwcktp bmQgPT0gRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UgJiYgSXNBKG5vZGUsIFNldFRvRGVmYXVsdCkp CisJCWlmICgoZXhwcktpbmQgPT0gRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UgfHwKKwkJCSBleHBy S2luZCA9PSBFWFBSX0tJTkRfTEVUX1RBUkdFVCkKKwkJCSYmIElzQShub2RlLCBTZXRUb0RlZmF1 bHQpKQogCQkJZXhwciA9IG5vZGU7CiAJCWVsc2UKIAkJCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBz dGF0ZSwgbm9kZSwgZXhwcktpbmQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmlu ZGV4IDk4MGRjMTgxNmYuLmZkOGVjMGRiYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNs dWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJp Z2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm9yZWln bi9mZHdhcGkuaCIKQEAgLTM3MDEsNiArMzcwMiwzOSBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBh cnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCkKIAkJfQog CX0KIAorCS8qCisJICogUmV3cml0ZSBTZXRUb0RlZmF1bHQgYnkgZGVmYXVsdCBleHByZXNzaW9u IG9mIExldCBzdGF0ZW1lbnQuCisJICovCisJaWYgKGV2ZW50ID09IENNRF9TRUxFQ1QgJiYgT2lk SXNWYWxpZChwYXJzZXRyZWUtPnJlc3VsdFZhcmlhYmxlKSkKKwl7CisJCU9pZAkJCXJlc3VsdFZh cmlhYmxlID0gcGFyc2V0cmVlLT5yZXN1bHRWYXJpYWJsZTsKKworCQlpZiAobGlzdF9sZW5ndGgo cGFyc2V0cmVlLT50YXJnZXRMaXN0KSA9PSAxICYmCisJCQlJc0EoKChUYXJnZXRFbnRyeSAqKSBs aW5pdGlhbChwYXJzZXRyZWUtPnRhcmdldExpc3QpKS0+ZXhwciwgU2V0VG9EZWZhdWx0KSkKKwkJ eworCQkJVmFyaWFibGUJdmFyOworCQkJVGFyZ2V0RW50cnkgKnRsZTsKKwkJCVRhcmdldEVudHJ5 ICpuZXd0bGU7CisJCQlFeHByCSAgICpkZWZleHByOworCisJCQkvKiBSZWFkIHNlc3Npb24gdmFy aWFibGUgbWV0YWRhdGEgd2l0aCBkZWZleHByICovCisJCQlJbml0VmFyaWFibGUoJnZhciwgcmVz dWx0VmFyaWFibGUsIGZhbHNlKTsKKworCQkJaWYgKHZhci5oYXNfZGVmZXhwcikKKwkJCQlkZWZl eHByID0gKEV4cHIgKikgdmFyLmRlZmV4cHI7CisJCQllbHNlCisJCQkJZGVmZXhwciA9IChFeHBy ICopIG1ha2VOdWxsQ29uc3QodmFyLnR5cGlkLCB2YXIudHlwbW9kLCB2YXIuY29sbGF0aW9uKTsK KworCQkJdGxlID0gKFRhcmdldEVudHJ5ICopIGxpbml0aWFsKHBhcnNldHJlZS0+dGFyZ2V0TGlz dCk7CisJCQluZXd0bGUgPSBtYWtlVGFyZ2V0RW50cnkoZGVmZXhwciwKKwkJCQkJCQkJCSB0bGUt PnJlc25vLAorCQkJCQkJCQkJIHBzdHJkdXAodGxlLT5yZXNuYW1lKSwKKwkJCQkJCQkJCSBmYWxz ZSk7CisKKwkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9IGxpc3RfbWFrZTEobmV3dGxlKTsKKwkJ fQorCX0KKwogCS8qCiAJICogSWYgdGhlIHN0YXRlbWVudCBpcyBhbiBpbnNlcnQsIHVwZGF0ZSwg ZGVsZXRlLCBvciBtZXJnZSwgYWRqdXN0IGl0cwogCSAqIHRhcmdldGxpc3QgYXMgbmVlZGVkLCBh bmQgdGhlbiBmaXJlIElOU0VSVC9VUERBVEUvREVMRVRFIHJ1bGVzIG9uIGl0LgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMgYi9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYwppbmRl eCBjMDQwNmUyZWU1Li44NmRiZjM3MGFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2Rl c3QuYworKysgYi9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYwpAQCAtMzcsNiArMzcsNyBAQAogI2lu Y2x1ZGUgImV4ZWN1dG9yL2Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiZXhlY3V0 b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1 ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCkBAIC0xNTIs NiArMTUzLDkgQEAgQ3JlYXRlRGVzdFJlY2VpdmVyKENvbW1hbmREZXN0IGRlc3QpCiAKIAkJY2Fz ZSBEZXN0VHVwbGVRdWV1ZToKIAkJCXJldHVybiBDcmVhdGVUdXBsZVF1ZXVlRGVzdFJlY2VpdmVy KE5VTEwpOworCisJCWNhc2UgRGVzdFZhcmlhYmxlOgorCQkJcmV0dXJuIENyZWF0ZVZhcmlhYmxl RGVzdFJlY2VpdmVyKCk7CiAJfQogCiAJLyogc2hvdWxkIG5ldmVyIGdldCBoZXJlICovCkBAIC0x ODcsNiArMTkxLDcgQEAgRW5kQ29tbWFuZChjb25zdCBRdWVyeUNvbXBsZXRpb24gKnFjLCBDb21t YW5kRGVzdCBkZXN0LCBib29sIGZvcmNlX3VuZGVjb3JhdGVkX28KIAkJY2FzZSBEZXN0U1FMRnVu Y3Rpb246CiAJCWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToK KwkJY2FzZSBEZXN0VmFyaWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yMzIsNiArMjM3LDcg QEAgTnVsbENvbW1hbmQoQ29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0U1FMRnVuY3Rpb246 CiAJCWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJY2Fz ZSBEZXN0VmFyaWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yNzUsNiArMjgxLDcgQEAgUmVh ZHlGb3JRdWVyeShDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJ Y2FzZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERl c3RWYXJpYWJsZToKIAkJCWJyZWFrOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggZGRjMjY3OTRi Mi4uNDBjYzgyMzFmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysr IGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTI0Miw2ICsyNDIsNyBAQCBDbGFzc2lm eVV0aWxpdHlDb21tYW5kQXNSZWFkT25seShOb2RlICpwYXJzZXRyZWUpCiAKIAkJY2FzZSBUX0Nh bGxTdG10OgogCQljYXNlIFRfRG9TdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJCXsKIAkJCQkv KgogCQkJCSAqIENvbW1hbmRzIGluc2lkZSB0aGUgRE8gYmxvY2sgb3IgdGhlIGNhbGxlZCBwcm9j ZWR1cmUgbWlnaHQKQEAgLTEwNzQsNiArMTA3NSwxMSBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0 eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX0xldFN0 bXQ6CisJCQlFeGVjdXRlTGV0U3RtdChwc3RhdGUsIChMZXRTdG10ICopIHBhcnNldHJlZSwgcGFy YW1zLAorCQkJCQkJICAgcXVlcnlFbnYsIHFjKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJ CQkvKiBBbGwgb3RoZXIgc3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0 ICovCiAJCQlQcm9jZXNzVXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwgcXVlcnlTdHJpbmcsCkBA IC0yMjA3LDYgKzIyMTMsMTAgQEAgVXRpbGl0eUNvbnRhaW5zUXVlcnkoTm9kZSAqcGFyc2V0cmVl KQogCQkJCXJldHVybiBVdGlsaXR5Q29udGFpbnNRdWVyeShxcnktPnV0aWxpdHlTdG10KTsKIAkJ CXJldHVybiBxcnk7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlxcnkgPSBjYXN0Tm9kZShRdWVy eSwgKChMZXRTdG10ICopIHBhcnNldHJlZSktPnF1ZXJ5KTsKKwkJCXJldHVybiBxcnk7CisKIAkJ ZGVmYXVsdDoKIAkJCXJldHVybiBOVUxMOwogCX0KQEAgLTI0MDUsNiArMjQxNSwxMCBAQCBDcmVh dGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9IENNRFRBR19TRUxFQ1Q7CiAJ CQlicmVhazsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXRhZyA9IENNRFRBR19MRVQ7CisJCQli cmVhazsKKwogCQkJLyogdXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3IG9y IGNvb2tlZCAqLwogCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJewpAQCAtMzI5MCw2ICsz MzA0LDcgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkKIAkJCWJyZWFrOwog CiAJCWNhc2UgVF9QTEFzc2lnblN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJbGV2ID0gTE9H U1RNVF9BTEw7CiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRl eCBhM2JlYTRlOTUxLi5kMDNmZTVlYzRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUu YwpAQCAtMTM1LDYgKzEzNSw3IEBAIEluaXRQbGFuQ2FjaGUodm9pZCkKIAlDYWNoZVJlZ2lzdGVy U3lzY2FjaGVDYWxsYmFjayhBTU9QT1BJRCwgUGxhbkNhY2hlU3lzQ2FsbGJhY2ssIChEYXR1bSkg MCk7CiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soRk9SRUlHTlNFUlZFUk9JRCwgUGxh bkNhY2hlU3lzQ2FsbGJhY2ssIChEYXR1bSkgMCk7CiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2Fs bGJhY2soRk9SRUlHTkRBVEFXUkFQUEVST0lELCBQbGFuQ2FjaGVTeXNDYWxsYmFjaywgKERhdHVt KSAwKTsKKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhWQVJJQUJMRU9JRCwgUGxhbkNh Y2hlT2JqZWN0Q2FsbGJhY2ssIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBAIC0xODg2LDYgKzE4ODcs MTcgQEAgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKQog CQkJCQkJICAodm9pZCAqKSAmYWNxdWlyZSwKIAkJCQkJCSAgUVRXX0lHTk9SRV9SQ19TVUJRVUVS SUVTKTsKIAl9CisKKwkvKiBQcm9jZXNzIHNlc3Npb24gdmFyaWFibGVzICovCisJaWYgKE9pZElz VmFsaWQocGFyc2V0cmVlLT5yZXN1bHRWYXJpYWJsZSkpCisJeworCQlpZiAoYWNxdWlyZSkKKwkJ CUxvY2tEYXRhYmFzZU9iamVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHBhcnNldHJlZS0+cmVzdWx0 VmFyaWFibGUsCisJCQkJCQkJICAgMCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJZWxzZQorCQkJVW5s b2NrRGF0YWJhc2VPYmplY3QoVmFyaWFibGVSZWxhdGlvbklkLCBwYXJzZXRyZWUtPnJlc3VsdFZh cmlhYmxlLAorCQkJCQkJCQkgMCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmggYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgKaW5kZXggZjQ0MmM1ZDNiOC4uY2ViMGQz NTdkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaApAQCAtMzksNCAr MzksNyBAQCBleHRlcm4gdm9pZCBBdEVPU3ViWGFjdF9TZXNzaW9uVmFyaWFibGUoYm9vbCBpc0Nv bW1pdCwKIAkJCQkJCQkJCQlTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCQkJCQkJU3Vi VHJhbnNhY3Rpb25JZCBwYXJlbnRTdWJpZCk7CiAKK2V4dGVybiB2b2lkIEV4ZWN1dGVMZXRTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CisJCQkJCQkJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIFF1ZXJ5Q29tcGxldGlvbiAqcWMp OworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJl Y2VpdmVyLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjYzZjZlZTliN2YKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCkBAIC0wLDAg KzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN2YXJpYWJsZVJlY2VpdmVyLmgK KyAqCSAgcHJvdG90eXBlcyBmb3Igc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUg VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3Zh cmlhYmxlUmVjZWl2ZXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYg U1ZBUklBQkxFX1JFQ0VJVkVSX0gKKyNkZWZpbmUgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKworI2lu Y2x1ZGUgInRjb3AvZGVzdC5oIgorCisKK2V4dGVybiBEZXN0UmVjZWl2ZXIgKkNyZWF0ZVZhcmlh YmxlRGVzdFJlY2VpdmVyKHZvaWQpOworCitleHRlcm4gdm9pZCBTZXRWYXJpYWJsZURlc3RSZWNl aXZlclZhcmlkKERlc3RSZWNlaXZlciAqc2VsZiwgT2lkIHZhcmlkKTsKKworI2VuZGlmCQkJCQkJ CS8qIFNWQVJJQUJMRV9SRUNFSVZFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMWYw NjdmYzg0Zi4uYjk2YjU2ZmQ2YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTQ5LDYgKzE0 OSw5IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJICovCiAJaW50CQkJcmVzdWx0UmVsYXRpb24g cGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCisJLyogdGFyZ2V0IHZhcmlhYmxl IG9mIExFVCBzdGF0ZW1lbnQgKi8KKwlPaWQJCQlyZXN1bHRWYXJpYWJsZTsKKwogCS8qIGhhcyBh Z2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNBZ2dzIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93IGZ1bmN0aW9ucyBp biB0bGlzdCAqLwpAQCAtMTkxOCw2ICsxOTIxLDIxIEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlU3Rt dAogCVdpdGhDbGF1c2UgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBNZXJnZVN0 bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlMZXQgU3RhdGVtZW50CisgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IExldFN0bXQKK3sKKwlO b2RlVGFnCQl0eXBlOworCUxpc3QJICAgKnRhcmdldDsJCQkvKiB0YXJnZXQgdmFyaWFibGUgKi8K KwlOb2RlCSAgICpxdWVyeTsJCQkvKiBzb3VyY2UgZXhwcmVzc2lvbiAqLworCWJvb2wJCXNldF9k ZWZhdWx0OwkvKiB0cnVlLCB3aGVuIHNldCB0byBERUZBVUx0IGlzIHdhbnRlZCAqLworCWJvb2wJ CXBscGdzcWxfbW9kZTsJLyogdHJ1ZSwgd2hlbiBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQKKwkJ CQkJCQkJICogKHBhcnNlZCkgYnkgcGxwZ3NxbCBydW50aW1lICovCisJaW50CQkJbG9jYXRpb247 Cit9IExldFN0bXQ7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlTZWxlY3QgU3Rh dGVtZW50CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCBkMjg3YTgwZGNlLi42OTA4NDEzNmU3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtNTAsNyArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQ bGFubmVkU3RtdAogCiAJTm9kZVRhZwkJdHlwZTsKIAotCUNtZFR5cGUJCWNvbW1hbmRUeXBlOwkv KiBzZWxlY3R8aW5zZXJ0fHVwZGF0ZXxkZWxldGV8bWVyZ2V8dXRpbGl0eSAqLworCUNtZFR5cGUJ CWNvbW1hbmRUeXBlOwkvKiBzZWxlY3R8bGV0fGluc2VydHx1cGRhdGV8ZGVsZXRlfG1lcmdlfHV0 aWxpdHkgKi8KIAogCXVpbnQ2NAkJcXVlcnlJZDsJCS8qIHF1ZXJ5IGlkZW50aWZpZXIgKGNvcGll ZCBmcm9tIFF1ZXJ5KSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggOWY3OWI5MDI1MS4uN2YyNDQ1 YzA0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIFBHX0tFWVdPUkQoImxl YWRpbmciLCBMRUFESU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgibGVha3Byb29mIiwgTEVBS1BST09GLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJsZWFzdCIsIExFQVNULCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgibGVmdCIsIExFRlQsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJsZXQiLCBMRVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImxldmVsIiwgTEVWRUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoImxpa2UiLCBMSUtFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibGltaXQiLCBMSU1JVCwgUkVTRVJWRURfS0VZV09S RCwgQVNfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5o IGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCA0ZTk2OTJkMDVhLi5jM2Yx Y2NiNGMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRl ZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTiwgLyogZ2Vu ZXJhdGlvbiBleHByZXNzaW9uIGZvciBhIGNvbHVtbiAqLwogCUVYUFJfS0lORF9DWUNMRV9NQVJL LAkJLyogY3ljbGUgbWFyayB2YWx1ZSAqLwogCUVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxULAkv KiBkZWZhdWx0IHZhbHVlIGZvciBzZXNzaW9uIHZhcmlhYmxlICovCisJRVhQUl9LSU5EX0xFVF9U QVJHRVQsCQkvKiBMRVQgYXNzaWdubWVudCAoc2hvdWxkIGJlIHNhbWUgbGlrZSBVUERBVEUpICov CiB9IFBhcnNlRXhwcktpbmQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0 YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAppbmRleCAyNTliZGM5OTRl Li42NDhhNGFmMzA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAor KysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAtMTg2LDYgKzE4Niw3IEBAIFBH X0NNRFRBRyhDTURUQUdfR1JBTlQsICJHUkFOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NN RFRBRyhDTURUQUdfR1JBTlRfUk9MRSwgIkdSQU5UIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQogUEdfQ01EVEFHKENNRFRBR19JTVBPUlRfRk9SRUlHTl9TQ0hFTUEsICJJTVBPUlQgRk9SRUlH TiBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0lOU0VSVCwg IklOU0VSVCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfTEVULCAiTEVU IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfTElTVEVOLCAiTElTVEVO IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfTE9BRCwgIkxPQUQiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19MT0NLX1RBQkxFLCAiTE9DSyBU QUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29w L2Rlc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCmluZGV4IGE3ZDg2ZTdhYmQuLmU3ZGQ3 NDk5NDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCisrKyBiL3NyYy9pbmNs dWRlL3Rjb3AvZGVzdC5oCkBAIC05NSw3ICs5NSw4IEBAIHR5cGVkZWYgZW51bQogCURlc3RDb3B5 T3V0LAkJCQkvKiByZXN1bHRzIHNlbnQgdG8gQ09QWSBUTyBjb2RlICovCiAJRGVzdFNRTEZ1bmN0 aW9uLAkJCS8qIHJlc3VsdHMgc2VudCB0byBTUUwtbGFuZ3VhZ2UgZnVuYyBtZ3IgKi8KIAlEZXN0 VHJhbnNpZW50UmVsLAkJCS8qIHJlc3VsdHMgc2VudCB0byB0cmFuc2llbnQgcmVsYXRpb24gKi8K LQlEZXN0VHVwbGVRdWV1ZQkJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8KKwlE ZXN0VHVwbGVRdWV1ZSwJCQkJLyogcmVzdWx0cyBzZW50IHRvIHR1cGxlIHF1ZXVlICovCisJRGVz dFZhcmlhYmxlCQkJCS8qIHJlc3VsdHMgc2VudHMgdG8gc2Vzc2lvbiB2YXJpYWJsZSAqLwogfSBD b21tYW5kRGVzdDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCA2OTY3MWYyYzc4Li41MDUzYWIwODFlIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtMTQwNyw2ICsxNDA3LDcgQEAgTGFyZ2VPYmplY3REZXNjCiBMYXN0QXR0bnVtSW5mbwog TGF0Y2gKIExlcnBGdW5jCitMZXRTdG10CiBMZXhEZXNjcgogTGV4ZW1lRW50cnkKIExleGVtZUhh c2hLZXkKQEAgLTI2NjgsNiArMjY2OSw3IEBAIFN1cHBvcnRSZXF1ZXN0Um93cwogU3VwcG9ydFJl cXVlc3RTZWxlY3Rpdml0eQogU3VwcG9ydFJlcXVlc3RTaW1wbGlmeQogU3VwcG9ydFJlcXVlc3RX RnVuY01vbm90b25pYworU1ZhcmlhYmxlU3RhdGUKIFNWYXJpYWJsZQogU1ZhcmlhYmxlRGF0YQog U1ZhcmlhYmxlWEFjdEFjdGlvbgotLSAKMi40MC4xCgo= --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0002-session-variables.patch" Content-Disposition: attachment; filename="v20230517-1-0002-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xes78 RnJvbSAyYzk5OGViMjY1MjkzNDUwYzM3ZjE5MGViMTZiYjExM2JiNWFlNGZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDEzIE5vdiAyMDIyIDE3OjQ1OjIzICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwMi8xMF0gc2Vzc2lvbiB2YXJpYWJsZXMKCkltcGxlbWVudGF0aW9uIHN0b3JhZ2UgYW5k IGFjY2VzcyByb3V0aW5lcy4gU2Vzc2lvbiB2YXJpYWJsZXMgYXJlIHN0b3JlZAppbiBzZXNzaW9u IG1lbW9yeSBpbnNpZGUgZGVkaWNhdGVkIGhhc2ggdGFibGUuIFR3byBsZXZlbHMgb2YgYW4gYWNj ZXNzCmFyZSBpbXBsZW1lbnRlZDogQVBJIGxldmVsIGFuZCBTUUwgbGV2ZWwuIEJvdGggbGV2ZWxz IGFyZSBpbXBsZW1lbnRlZAppbiB0aGlzIGNvbW1pdC4KClRoZSBtb3N0IGRpZmZpY3VsdCBwYXJ0 IGlzIGNsZWFuaW5nIChyZXNldCkgb2Ygc2Vzc2lvbiB2YXJpYWJsZS4gVGhlCmNvbnRlbnQgb2Yg c2Vzc2lvbiB2YXJpYWJsZSBzaG91bGQgYmUgY2xlYW5lZCB3aGVuIHJlbGF0ZWQgc2Vzc2lvbgp2 YXJpYWJsZSBpcyByZW1vdmVkIGZyb20gc3lzdGVtIGNhdGFsb2cuIEJ1dCBxdWV1ZSBvZiBzaW52 YWwgbWVzc2FnZXMKY2FuIGJlIHRydW5jYXRlZCwgb3IgY3VycmVudCB0cmFuc2FjdGlvbiBzdGF0 ZSBjYW4gZGlzYWxsb3cgYW4gYWNjZXNzCnRvIHN5c3RlbSBjYXRhbG9nLCBzbyBjbGVhbmluZyBj YW4gYmUgcG9zdHBvbmVkLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAg ICAgICAgIHwgICAgMiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAg ICAgfCAgICA1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgICAgICAgICAgIHwg IDMyNyArKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkICAgICAgICAgIHwg ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMgICB8IDEyMzUg KysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAg ICAgICAgICB8ICAgNzYgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMg ICAgIHwgICAxNyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICB8 ICAgNTggKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgfCAgMTQ3 ICsrLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICAgICAgfCAgICA2ICsK IHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgIHwgICAgOCArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICB8ICAxMTggKy0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jIHwgICAgMyArCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgICAgICB8ICAgNzQgKy0KIHNyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMgICAgICAgICAgICAgIHwgICAgNyArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jICAgICAgICAgICB8ICAyNTMgKysrKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgICAgICAgICB8ICAgNDYgKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hl LmMgICAgICAgfCAgIDI5ICstCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAg ICAgICB8ICAgMTAgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAg IHwgICAxMCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oICAgICAgICAgICB8ICAg IDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgfCAgICA5ICst CiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmggICB8ICAgMTIgKy0KIHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggICAgICAgICAgIHwgICAxMCArCiBzcmMvaW5j bHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgfCAgIDE5ICsKIHNyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCAgICAgICAgICAgICB8ICAgIDUgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmggICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAg ICAgICAgICAgIHwgICAxMiArLQogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAg ICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmggICAgICAgICAg IHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICB8ICAg IDEgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgICAzICsK IDM1IGZpbGVzIGNoYW5nZWQsIDI0MTYgaW5zZXJ0aW9ucygrKSwgMTAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCBlZTIwYzJlNTIwLi4wY2NkYjU2ZmY0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0yMjI1LDcgKzIyMjUsNyBAQCBDb21taXRU cmFuc2FjdGlvbih2b2lkKQogCSAqLwogCXNtZ3JEb1BlbmRpbmdTeW5jcyh0cnVlLCBpc19wYXJh bGxlbF93b3JrZXIpOwogCi0JLyogTGV0IE9OIENPTU1JVCBEUk9QICovCisJLyogTGV0IE9OIENP TU1JVCBEUk9QIG9yIE9OIFRSQU5TQUNUSU9OIEVORCAqLwogCUF0UHJlRU9YYWN0X1Nlc3Npb25W YXJpYWJsZSh0cnVlKTsKIAogCS8qIGNsb3NlIGxhcmdlIG9iamVjdHMgYmVmb3JlIGxvd2VyLWxl dmVsIGNsZWFudXAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5j eS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggNzdhY2JlZGE4MC4u Y2FlMWM3YzFmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTE5MTUsNiArMTkxNSwx MSBAQCBmaW5kX2V4cHJfcmVmZXJlbmNlc193YWxrZXIoTm9kZSAqbm9kZSwKIAl7CiAJCVBhcmFt CSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCisJCS8qIEEgdmFyaWFibGUgcGFyYW1ldGVy IGRlcGVuZHMgb24gdGhlIHNlc3Npb24gdmFyaWFibGUgKi8KKwkJaWYgKHBhcmFtLT5wYXJhbWtp bmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJCQlhZGRfb2JqZWN0X2FkZHJlc3MoT0NMQVNTX1ZBUklB QkxFLCBwYXJhbS0+cGFyYW12YXJpZCwgMCwKKwkJCQkJCQkgICBjb250ZXh0LT5hZGRycyk7CisK IAkJLyogQSBwYXJhbWV0ZXIgbXVzdCBkZXBlbmQgb24gdGhlIHBhcmFtZXRlcidzIGRhdGF0eXBl ICovCiAJCWFkZF9vYmplY3RfYWRkcmVzcyhPQ0xBU1NfVFlQRSwgcGFyYW0tPnBhcmFtdHlwZSwg MCwKIAkJCQkJCSAgIGNvbnRleHQtPmFkZHJzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvbmFtZXNwYWNlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCmluZGV4 IDlhMDQ1MzBkMWUuLjczZDc5OTYxNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv bmFtZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtMjk3 MCw2ICsyOTcwLDMzMyBAQCBMb29rdXBWYXJpYWJsZShjb25zdCBjaGFyICpuc3BuYW1lLAogCXJl dHVybiB2YXJvaWQ7CiB9CiAKKy8qCisgKiBUaGUgaW5wdXQgbGlzdCBjb250YWlucyBuYW1lcyB3 aXRoIGluZGlyZWN0aW9uIGV4cHJlc3Npb25zIHVzZWQgYXMgdGhlIGxlZnQKKyAqIHBhcnQgb2Yg TEVUIHN0YXRlbWVudC4gVGhlIGZvbGxvd2luZyByb3V0aW5lIHJldHVybnMgYSBuZXcgbGlzdCB3 aXRoIG9ubHkKKyAqIGluaXRpYWwgc3RyaW5ncyAobmFtZXMpIC0gd2l0aG91dCBpbmRpcmVjdGlv biBleHByZXNzaW9ucy4KKyAqLworTGlzdCAqCitOYW1lc0Zyb21MaXN0KExpc3QgKm5hbWVzKQor eworCUxpc3RDZWxsICAgKmw7CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOworCisJZm9yZWFjaChs LCBuYW1lcykKKwl7CisJCU5vZGUJICAgKm4gPSBsZmlyc3QobCk7CisKKwkJaWYgKElzQShuLCBT dHJpbmcpKQorCQl7CisJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgbik7CisJCX0KKwkJZWxz ZQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIElkZW50aWZ5 VmFyaWFibGUgLSB0cnkgdG8gZmluZCB2YXJpYWJsZSBpZGVudGlmaWVkIGJ5IGxpc3Qgb2YgbmFt ZXMuCisgKgorICogQmVmb3JlIHRoaXMgY2FsbCB3ZSBkb24ndCBrbm93LCBob3cgdGhlc2UgZmll bGRzIHNob3VsZCBiZSBtYXBwZWQgdG8KKyAqIHNjaGVtYSBuYW1lLCB2YXJpYWJsZSBuYW1lIGFu ZCBhdHRyaWJ1dGUgbmFtZS4gSW4gdGhpcyByb3V0aW5lCisgKiB3ZSB0cnkgdG8gYXBwbHkgcGFz c2VkIG5hbWVzIHRvIGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygc2NoZW1hIG5hbWUsCisg KiB2YXJpYWJsZSBuYW1lIGFuZCBhdHRyaWJ1dGUgbmFtZSwgYW5kIHdlIGNvdW50IHZhbGlkIGNv bWJpbmF0aW9ucy4KKyAqCisgKiBSZXR1cm5zIG9pZCBvZiBpZGVudGlmaWVkIHZhcmlhYmxlLiBX aGVuIGxhc3QgZmllbGQgb2YgbmFtZXMgbGlzdCBpcworICogaWRlbnRpZmllZCBhcyBhbiBhdHRy aWJ1dGUsIHRoZW4gb3V0cHV0IGF0dHJuYW1lIGFyZ3VtZW50IGlzIHNldCB0bworICogYW4gc3Ry aW5nIG9mIHRoaXMgZmllbGQuCisgKgorICogV2hlbiB0aGVyZSBpcyBub3QgYW55IHZhbGlkIGNv bWJpbmF0aW9uLCB0aGVuIHdlIGFyZSBzdXJlLCBzbyB0aGUKKyAqIGxpc3Qgb2YgbmFtZXMgY2Fu bm90IHRvIGlkZW50aWZ5IGFueSBzZXNzaW9uIHZhcmlhYmxlLiBJbiB0aGlzIGNhc2UKKyAqIHdl IHJldHVybiBJbnZhbGlkT2lkLgorICoKKyAqIFdlIGNhbiBmaW5kIG1vcmUgdmFsaWQgY29tYmlu YXRpb24gdGhhbiBvbmUuCisgKiBFeGFtcGxlOiB1c2VycyBjYW4gaGF2ZSBzZXNzaW9uIHZhcmlh YmxlIHggaW4gc2NoZW1hIHksIGFuZAorICogc2Vzc2lvbiB2YXJpYWJsZSB5IHdpdGggYXR0cmli dXRlIHggaW5zaWRlIHNvbWUgc2NoZW1hIGZyb20KKyAqIHNlYXJjaCBwYXRoLiBJbiB0aGlzIHNp dHVhdGlvbiB0aGUgbWVhbmluZyBvZiBleHByZXNzaW9uICJ5Ii4ieCIKKyAqIGlzIGFtYmlndW91 cy4gSW4gdGhpcyBjYXNlIHRoaXMgcm91dGluZSByZXR1cm5zIG9pZCBvZiB2YXJpYWJsZQorICog eCBpbiBzY2hlbWEgeSwgYW5kIHRoZSBvdXRwdXQgcGFyYW1ldGVyICJub3RfdW5pcXVlIiBpcyBz ZXQgdG8KKyAqIHRydWUuIEluIHRoaXMgY2FzZSB0aGlzIHZhcmlhYmxlIGlzIGxvY2tlZC4KKyAq CisgKiBUaGUgQWNjZXNzU2hhcmVMb2NrIGlzIGNyZWF0ZWQgb24gcmVsYXRlZCBzZXNzaW9uIHZh cmlhYmxlLiBUaGUgbG9jaworICogd2lsbCBiZSBrZXB0IGZvciB0aGUgd2hvbGUgdHJhbnNhY3Rp b24uCisgKgorICogTm90ZTogdGhlIG91dCBhdHRybmFtZSBzaG91bGQgYmUgdXNlZCBvbmx5IHdo ZW4gdGhlIHNlc3Npb24gdmFyaWFibGUKKyAqIGlzIGlkZW50aWZpZWQuIFdoZW4gdGhlIHNlc3Np b24gdmFyaWFibGUgaXMgbm90IGlkZW50aWZpZWQsIHRoZW4gdGhpcworICogb3V0cHV0IHZhcmlh YmxlIGNhbiBob2xkIHJlZmVyZW5jZSB0byBzb21lIHN0cmluZywgYnV0IGlzbid0IHN1cmUKKyAq IGFib3V0IGl0cyBzZW1hbnRpY3MuCisgKgorICogV2hlbiB3ZSB1c2UgdGhpcyByb3V0aW5lIGZv ciBpZGVudGlmaWNhdGlvbiBvZiBzaGFkb3dlZCB2YXJpYWJsZSwKKyAqIHdlIGRvbid0IHdhbnQg dG8gcmFpc2UgYW55IGVycm9yLiBTaGFkb3dpbmcgY29sdW1uIHJlZmVyZW5jZSBpcyBjb3JyZWN0 LAorICogYW5kIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgZXhlY3V0aW9uIGR1ZSBzaGFkb3dpbmcg Y2hlY2suCisgKi8KK09pZAorSWRlbnRpZnlWYXJpYWJsZShMaXN0ICpuYW1lcywgY2hhciAqKmF0 dHJuYW1lLCBib29sICpub3RfdW5pcXVlLCBib29sIG5vZXJyb3IpCit7CisJTm9kZQkgICAqZmll bGQxID0gTlVMTDsKKwlOb2RlCSAgICpmaWVsZDIgPSBOVUxMOworCU5vZGUJICAgKmZpZWxkMyA9 IE5VTEw7CisJTm9kZQkgICAqZmllbGQ0ID0gTlVMTDsKKwljaGFyCSAgICphID0gTlVMTDsKKwlj aGFyCSAgICpiID0gTlVMTDsKKwljaGFyCSAgICpjID0gTlVMTDsKKwljaGFyCSAgICpkID0gTlVM TDsKKwlPaWQJCQl2YXJpZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJb2xkX3ZhcmlkID0gSW52YWxp ZE9pZDsKKwl1aW50NjQJCWludmFsX2NvdW50OworCWJvb2wJCXJldHJ5ID0gZmFsc2U7CisKKwkv KgorCSAqIERETCBvcGVyYXRpb25zIGNhbiBjaGFuZ2UgdGhlIHJlc3VsdHMgb2YgYSBuYW1lIGxv b2t1cC4gIFNpbmNlIGFsbCBzdWNoCisJICogb3BlcmF0aW9ucyB3aWxsIGdlbmVyYXRlIGludmFs aWRhdGlvbiBtZXNzYWdlcywgd2Uga2VlcCB0cmFjayBvZgorCSAqIHdoZXRoZXIgYW55IHN1Y2gg bWVzc2FnZXMgc2hvdyB1cCB3aGlsZSB3ZSdyZSBwZXJmb3JtaW5nIHRoZSBvcGVyYXRpb24sCisJ ICogYW5kIHJldHJ5IHVudGlsIGVpdGhlciAoMSkgbm8gbW9yZSBpbnZhbGlkYXRpb24gbWVzc2Fn ZXMgc2hvdyB1cCBvciAoMikKKwkgKiB0aGUgYW5zd2VyIGRvZXNuJ3QgY2hhbmdlLgorCSAqLwor CWZvciAoOzspCisJeworCQlPaWQJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0gSW52YWxpZE9pZDsK KwkJT2lkCQkJdmFyb2lkX3dpdGhfYXR0ciA9IEludmFsaWRPaWQ7CisKKwkJKm5vdF91bmlxdWUg PSBmYWxzZTsKKwkJKmF0dHJuYW1lID0gTlVMTDsKKwkJdmFyaWQgPSBJbnZhbGlkT2lkOworCisJ CWludmFsX2NvdW50ID0gU2hhcmVkSW52YWxpZE1lc3NhZ2VDb3VudGVyOworCisJCXN3aXRjaCAo bGlzdF9sZW5ndGgobmFtZXMpKQorCQl7CisJCQljYXNlIDE6CisJCQkJZmllbGQxID0gbGluaXRp YWwobmFtZXMpOworCisJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmluZykpOworCisJCQkJdmFy aWQgPSBMb29rdXBWYXJpYWJsZShOVUxMLCBzdHJWYWwoZmllbGQxKSwgdHJ1ZSk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgMjoKKwkJCQlmaWVsZDEgPSBsaW5pdGlhbChuYW1lcyk7CisJCQkJZmll bGQyID0gbHNlY29uZChuYW1lcyk7CisKKwkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5nKSk7 CisJCQkJYSA9IHN0clZhbChmaWVsZDEpOworCisJCQkJaWYgKElzQShmaWVsZDIsIFN0cmluZykp CisJCQkJeworCQkJCQkvKiB3aGVuIGJvdGggZmllbGRzIGFyZSBvZiBzdHJpbmcgdHlwZSAqLwor CQkJCQliID0gc3RyVmFsKGZpZWxkMik7CisKKwkJCQkJLyoKKwkJCQkJICogYS5iIGNhbiBtZWFu ICJzY2hlbWEiLiJ2YXJpYWJsZSIgb3IgInZhcmlhYmxlIi4iZmllbGQiLgorCQkJCQkgKiBDaGVj ayBib3RoIHZhcmlhbnRzLCBhbmQgcmV0dXJucyBJbnZhbGlkT2lkIHdpdGgKKwkJCQkJICogbm90 X3VuaXF1ZSBmbGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRpb25zIGFyZQorCQkJCQkgKiBwb3Nz aWJsZS4KKwkJCQkJICovCisJCQkJCXZhcm9pZF93aXRob3V0X2F0dHIgPSBMb29rdXBWYXJpYWJs ZShhLCBiLCB0cnVlKTsKKwkJCQkJdmFyb2lkX3dpdGhfYXR0ciA9IExvb2t1cFZhcmlhYmxlKE5V TEwsIGEsIHRydWUpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiBUaGUgbGFzdCBm aWVsZCBvZiBsaXN0IGNhbiBiZSBzdGFyIHRvby4gKi8KKwkJCQkJQXNzZXJ0KElzQShmaWVsZDIs IEFfU3RhcikpOworCisJCQkJCS8qCisJCQkJCSAqIEluIHRoaXMgY2FzZSwgdGhlIGZpZWxkMSBz aG91bGQgYmUgdmFyaWFibGUgbmFtZS4KKwkJCQkJICogQnV0IGRpcmVjdCB1bmJveGluZyBvZiBj b21wb3NpdGUgc2Vzc2lvbiB2YXJpYWJsZXMKKwkJCQkJICogaXMgbm90IHN1cHBvcnRlZCBub3cs IGFuZCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gdHJ5CisJCQkJCSAqIGxvb2t1cCByZWxhdGVkIHZh cmlhYmxlLgorCQkJCQkgKgorCQkJCQkgKiBVbmJveGluZyBpcyBzdXBwb3J0ZWQgYnkgc3ludGF4 ICh2YXIpLioKKwkJCQkJICovCisJCQkJCXJldHVybiBJbnZhbGlkT2lkOworCQkJCX0KKworCQkJ CWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lk X3dpdGhfYXR0cikpCisJCQkJeworCQkJCQkqbm90X3VuaXF1ZSA9IHRydWU7CisJCQkJCXZhcmlk ID0gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCQl9CisJCQkJZWxzZSBpZiAoT2lkSXNWYWxpZCh2 YXJvaWRfd2l0aG91dF9hdHRyKSkKKwkJCQl7CisJCQkJCXZhcmlkID0gdmFyb2lkX3dpdGhvdXRf YXR0cjsKKwkJCQl9CisJCQkJZWxzZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aF9hdHRyKSkK KwkJCQl7CisJCQkJCSphdHRybmFtZSA9IGI7CisJCQkJCXZhcmlkID0gdmFyb2lkX3dpdGhfYXR0 cjsKKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMzoKKwkJCQl7CisJCQkJCWJvb2wJZmll bGQxX2lzX2NhdGFsb2cgPSBmYWxzZTsKKworCQkJCQlmaWVsZDEgPSBsaW5pdGlhbChuYW1lcyk7 CisJCQkJCWZpZWxkMiA9IGxzZWNvbmQobmFtZXMpOworCQkJCQlmaWVsZDMgPSBsdGhpcmQobmFt ZXMpOworCisJCQkJCUFzc2VydChJc0EoZmllbGQxLCBTdHJpbmcpKTsKKwkJCQkJQXNzZXJ0KElz QShmaWVsZDIsIFN0cmluZykpOworCisJCQkJCWEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJYiA9 IHN0clZhbChmaWVsZDIpOworCisJCQkJCWlmIChJc0EoZmllbGQzLCBTdHJpbmcpKQorCQkJCQl7 CisJCQkJCQljID0gc3RyVmFsKGZpZWxkMyk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBhLmIuYyBj YW4gbWVhbiBjYXRhbG9nLnNjaGVtYS52YXJpYWJsZQorCQkJCQkJICogb3Igc2NoZW1hLnZhcmlh YmxlLmZpZWxkLgorCQkJCQkJICoKKwkJCQkJCSAqIENoZWNrIGJvdGggdmFyaWFudHMsIGFuZCBz ZXQgbm90X3VuaXF1ZSBmbGFnLAorCQkJCQkJICogd2hlbiBib3RoIGludGVycHJldGF0aW9ucyBh cmUgcG9zc2libGUuCisJCQkJCQkgKgorCQkJCQkJICogV2hlbiB0aGlyZCBub2RlIGlzIHN0YXIs IG9ubHkgcG9zc2libGUKKwkJCQkJCSAqIGludGVycHJldGF0aW9uIGlzIHNjaGVtYS52YXJpYWJs ZS4qLCBidXQgdGhpcworCQkJCQkJICogcGF0dGVybiBpcyBub3Qgc3VwcG9ydGVkIG5vdy4KKwkJ CQkJCSAqLworCQkJCQkJdmFyb2lkX3dpdGhfYXR0ciA9IExvb2t1cFZhcmlhYmxlKGEsIGIsIHRy dWUpOworCisJCQkJCQkvKgorCQkJCQkJICogY2hlY2sgcGF0dGVybiBjYXRhbG9nLnNjaGVtYS52 YXJpYWJsZSBvbmx5IHdoZW4KKwkJCQkJCSAqIHRoZXJlIGlzIHBvc3NpYmlsaXR5IHRvIHN1Y2Nl c3MuCisJCQkJCQkgKi8KKwkJCQkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlE YXRhYmFzZUlkKSkgPT0gMCkKKwkJCQkJCXsKKwkJCQkJCQlmaWVsZDFfaXNfY2F0YWxvZyA9IHRy dWU7CisJCQkJCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9IExvb2t1cFZhcmlhYmxlKGIsIGMsIHRy dWUpOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJQXNzZXJ0KElz QShmaWVsZDMsIEFfU3RhcikpOworCQkJCQkJcmV0dXJuIEludmFsaWRPaWQ7CisJCQkJCX0KKwor CQkJCQlpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91dF9hdHRyKSAmJiBPaWRJc1ZhbGlkKHZh cm9pZF93aXRoX2F0dHIpKQorCQkJCQl7CisJCQkJCQkqbm90X3VuaXF1ZSA9IHRydWU7CisJCQkJ CQl2YXJpZCA9IHZhcm9pZF93aXRob3V0X2F0dHI7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoT2lk SXNWYWxpZCh2YXJvaWRfd2l0aG91dF9hdHRyKSkKKwkJCQkJeworCQkJCQkJdmFyaWQgPSB2YXJv aWRfd2l0aG91dF9hdHRyOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lk X3dpdGhfYXR0cikpCisJCQkJCXsKKwkJCQkJCSphdHRybmFtZSA9IGM7CisJCQkJCQl2YXJpZCA9 IHZhcm9pZF93aXRoX2F0dHI7CisJCQkJCX0KKworCQkJCQkvKgorCQkJCQkgKiBXaGVuIHdlIGRp ZG4ndCBmaW5kIHZhcmlhYmxlLCB3ZSBjYW4gKHdoZW4gaXQgaXMgYWxsb3dlZCkKKwkJCQkJICog cmFpc2UgY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlIGVycm9yLgorCQkJCQkgKi8KKwkJCQkJaWYg KCFPaWRJc1ZhbGlkKHZhcmlkKSAmJiAhbm9lcnJvciAmJiAhZmllbGQxX2lzX2NhdGFsb2cpCisJ CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMg YXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFt ZXMpKSkpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSA0OgorCQkJCXsKKwkJCQkJZmll bGQxID0gbGluaXRpYWwobmFtZXMpOworCQkJCQlmaWVsZDIgPSBsc2Vjb25kKG5hbWVzKTsKKwkJ CQkJZmllbGQzID0gbHRoaXJkKG5hbWVzKTsKKwkJCQkJZmllbGQ0ID0gbGZvdXJ0aChuYW1lcyk7 CisKKwkJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmluZykpOworCQkJCQlBc3NlcnQoSXNBKGZp ZWxkMiwgU3RyaW5nKSk7CisJCQkJCUFzc2VydChJc0EoZmllbGQzLCBTdHJpbmcpKTsKKworCQkJ CQlhID0gc3RyVmFsKGZpZWxkMSk7CisJCQkJCWIgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJYyA9 IHN0clZhbChmaWVsZDMpOworCisJCQkJCS8qCisJCQkJCSAqIEluIHRoaXMgY2FzZSwgImEiIGlz IHVzZWQgYXMgY2F0YWxvZyBuYW1lIC0gY2hlY2sgaXQuCisJCQkJCSAqLworCQkJCQlpZiAoc3Ry Y21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9IDApCisJCQkJCXsKKwkJ CQkJCWlmICghbm9lcnJvcikKKwkJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkJIGVycm1zZygiY3Jv c3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJ CQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSkpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJ eworCQkJCQkJaWYgKElzQShmaWVsZDQsIFN0cmluZykpCisJCQkJCQl7CisJCQkJCQkJZCA9IHN0 clZhbChmaWVsZDQpOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJCUFzc2Vy dChJc0EoZmllbGQ0LCBBX1N0YXIpKTsKKwkJCQkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCQkJ CX0KKworCQkJCQkJKmF0dHJuYW1lID0gZDsKKwkJCQkJCXZhcmlkID0gTG9va3VwVmFyaWFibGUo YiwgYywgdHJ1ZSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWRlZmF1bHQ6CisJ CQkJaWYgKCFub2Vycm9yKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJpbXByb3BlciBxdWFsaWZpZWQg bmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAorCQkJCQkJCQkJTmFtZUxpc3RUb1N0 cmluZyhuYW1lcykpKSk7CisJCQkJcmV0dXJuIEludmFsaWRPaWQ7CisJCX0KKworCQkvKgorCQkg KiBJZiwgdXBvbiByZXRyeSwgd2UgZ2V0IGJhY2sgdGhlIHNhbWUgT0lEIHdlIGRpZCBsYXN0IHRp bWUsIHRoZW4gdGhlCisJCSAqIGludmFsaWRhdGlvbiBtZXNzYWdlcyB3ZSBwcm9jZXNzZWQgZGlk IG5vdCBjaGFuZ2UgdGhlIGZpbmFsIGFuc3dlci4KKwkJICogU28gd2UncmUgZG9uZS4KKwkJICoK KwkJICogSWYgd2UgZ290IGEgZGlmZmVyZW50IE9JRCwgd2UndmUgbG9ja2VkIHRoZSB2YXJpYWJs ZSB0aGF0IHVzZWQgdG8KKwkJICogaGF2ZSB0aGlzIG5hbWUgcmF0aGVyIHRoYW4gdGhlIG9uZSB0 aGF0IGRvZXMgbm93LiAgU28gcmVsZWFzZSB0aGUKKwkJICogbG9jay4KKwkJICovCisJCWlmIChy ZXRyeSkKKwkJeworCQkJaWYgKG9sZF92YXJpZCA9PSB2YXJpZCkKKwkJCQlicmVhazsKKworCQkJ aWYgKE9pZElzVmFsaWQob2xkX3ZhcmlkKSkKKwkJCQlVbmxvY2tEYXRhYmFzZU9iamVjdChWYXJp YWJsZVJlbGF0aW9uSWQsIG9sZF92YXJpZCwgMCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJfQorCisJ CS8qCisJCSAqIExvY2sgdGhlIHZhcmlhYmxlLiAgVGhpcyB3aWxsIGFsc28gYWNjZXB0IGFueSBw ZW5kaW5nIGludmFsaWRhdGlvbgorCQkgKiBtZXNzYWdlcy4gIElmIHdlIGdvdCBiYWNrIEludmFs aWRPaWQsIGluZGljYXRpbmcgbm90IGZvdW5kLCB0aGVuCisJCSAqIHRoZXJlJ3Mgbm90aGluZyB0 byBsb2NrLCBidXQgd2UgYWNjZXB0IGludmFsaWRhdGlvbiBtZXNzYWdlcworCQkgKiBhbnl3YXks IHRvIGZsdXNoIGFueSBuZWdhdGl2ZSBjYXRjYWNoZSBlbnRyaWVzIHRoYXQgbWF5IGJlCisJCSAq IGxpbmdlcmluZy4KKwkJICovCisJCWlmICghT2lkSXNWYWxpZCh2YXJpZCkpCisJCQlBY2NlcHRJ bnZhbGlkYXRpb25NZXNzYWdlcygpOworCQllbHNlIGlmIChPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJ CUxvY2tEYXRhYmFzZU9iamVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCAwLCBBY2Nlc3NT aGFyZUxvY2spOworCisJCWlmIChpbnZhbF9jb3VudCA9PSBTaGFyZWRJbnZhbGlkTWVzc2FnZUNv dW50ZXIpCisJCQlicmVhazsKKworCQlyZXRyeSA9IHRydWU7CisJCW9sZF92YXJpZCA9IHZhcmlk OworCQl2YXJpZCA9IEludmFsaWRPaWQ7CisJfQorCisJcmV0dXJuIHZhcmlkOworfQorCiAvKgog ICogRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lCiAgKgkJR2l2ZW4gYSBwb3NzaWJseS1xdWFsaWZp ZWQgbmFtZSBleHByZXNzZWQgYXMgYSBsaXN0IG9mIFN0cmluZyBub2RlcywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWVzb24uYnVpbGQKaW5kZXggNDJjY2VkOWViZS4uNDA0YmUzZDIyYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWVzb24uYnVpbGQKQEAgLTM4LDYgKzM4LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAog ICAnc2NoZW1hY21kcy5jJywKICAgJ3NlY2xhYmVsLmMnLAogICAnc2VxdWVuY2UuYycsCisgICdz ZXNzaW9uX3ZhcmlhYmxlLmMnLAogICAnc3RhdHNjbWRzLmMnLAogICAnc3Vic2NyaXB0aW9uY21k cy5jJywKICAgJ3RhYmxlY21kcy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3Nlc3Npb25fdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFi bGUuYwppbmRleCA5NDZlNzNlNDY3Li5iNGE5MWVhNWEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c2Vzc2lvbl92YXJpYWJsZS5jCkBAIC04LDcgKzgsNyBAQAogICoKICAqCiAgKiBJREVOVElGSUNB VElPTgotICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9udmFyaWFibGUuYworICoJICBz cmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMKICAqCiAgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqLwpAQCAtMjIsODcgKzIyLDI0NCBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Np b25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogLyoKLSAqIFRoZSBsaWZlIGN5Y2xl IG9mIHRlbXBvcmFyeSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBiZQotICogbGltbWl0ZWQgYnkgdXNp bmcgY2xhdXNlIE9OIENPTU1JVCBEUk9QLgorICogVmFsdWVzIG9mIHNlc3Npb24gdmFyaWFibGVz IGFyZSBzdG9yZWQgaW4gdGhlIGJhY2tlbmQgbG9jYWwgbWVtb3J5LAorICogaW4gc2Vzc2lvbnZh cnMgaGFzaCB0YWJsZSBpbiBiaW5hcnkgZm9ybWF0LCBpbiBhIGRlZGljYXRlZCBtZW1vcnkKKyAq IGNvbnRleHQgU1ZhcmlhYmxlTWVtb3J5Q29udGV4dC4gIEEgc2Vzc2lvbiB2YXJpYWJsZSB2YWx1 ZSBjYW4gc3RheQorICogdmFsaWQgZm9yIGxvbmdlciB0aGFuIHRoZSB0cmFuc2FjdGlvbiB0aGF0 IGFzc2lnbnMgaXRzIHZhbHVlLiAgVG8KKyAqIG1ha2Ugc3VyZSB0aGF0IHRoZSB1bmRlcmx5aW5n IG1lbW9yeSBpcyBldmVudHVhbGx5IGZyZWVkLCBidXQgbm90CisgKiBiZWZvcmUgaXQncyBndWFy YW50ZWUgdGhhdCB0aGUgdmFsdWUgd29uJ3QgYmUgbmVlZGVkIGFueW1vcmUsIHdlCisgKiBuZWVk IHRvIGhhbmRsZSB0aGUgdHdvIGZvbGxvd2luZyBwb2ludHM6CisgKgorICogLSBXZSBuZWVkIGRl dGVjdCB3aGVuIGEgdmFyaWFibGUgaXMgZHJvcHBlZCwgd2hldGhlciBpbiB0aGUgY3VycmVudAor ICogdHJhbnNhY3Rpb24gaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbiBvciBieSBhbm90aGVyIHNlc3Np b24sIGFuZCBtYXJrCisgKiB0aGUgdW5kZXJseWluZyBlbnRyaWVzIGZvciByZW1vdmFsLiAgVG8g cHJvdGVjdCB0aGUgY29udGVudCBhZ2FpbnN0CisgKiBwb3NzaWJseSByb2xsYmFja2VkIERST1Ag VkFSSUFCTEUgY29tbWFuZHMsIHRoZSBlbnRyaWVzIChhbmQKKyAqIG1lbW9yeSkgc2hvdWxkbid0 IGJlIGZyZWVkIGltbWVkaWF0ZWx5IGJ1dCBiZSBwb3N0cG9uZWQgdW50aWwgdGhlCisgKiBlbmQg b2YgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIC0gVGhlIHNlc3Npb24gdmFyaWFibGUgY2FuIGJl IGRyb3BwZWQgZXhwbGljaXRseSAoYnkgRFJPUCBWQVJJQUJMRQorICogIGNvbW1hbmQpIG9yIGlt cGxpY2l0bHkgKHVzaW5nIE9OIENPTU1JVCBEUk9QIGNsYXVzZSksIGFuZCB0aGUKKyAqICB2YWx1 ZSBjYW4gYmUgaW1wbGljaXRseSByZW1vdmVkICh1c2luZyB0aGUgT04gVFJBTlNBQ1RJT04gRU5E CisgKiAgY2xhdXNlKS4gIEluIGFsbCB0aG9zZSBjYXNlcyB0aGUgbWVtb3J5IHNob3VsZCBhbHNv IGJlIGZyZWVkIGF0CisgKiAgdGhlIHRyYW5zYWN0aW9uIGVuZC4KKyAqCisgKiBUbyBhY2hpZXZl IHRoYXQsIHdlIG1haW50YWluIDMgcXVldWVzIG9mIGFjdGlvbnMgdG8gYmUgcGVyZm9ybWVkIGF0 CisgKiBjZXJ0YWluIHRpbWU6CisgKiAtIGEgTGlzdCBvZiBTVmFyaWFibGVYQWN0QWN0aW9uSXRl bSwgdG8gaGFuZGxlIE9OIENPTU1JVCBEUk9QCisgKiB2YXJpYWJsZXMsIGFuZCBkZWxheWVkIG1l bW9yeSBjbGVhbnVwIG9mIHZhcmlhYmxlIGRyb3BwZWQgYnkgdGhlCisgKiBjdXJyZW50IHRyYW5z YWN0aW9uLiAgVGhvc2UgYWN0aW9ucyBhcmUgdHJhbnNhY3Rpb25hbCAoZm9yIGluc3RhbmNlCisg KiB3ZSBkb24ndCB3YW50IHRvIGNsZWFudXAgdGhlIG1lbW9yeSBvZiBhIHJvbGxiYWNrZWQgRFJP UCBWQVJJQUJMRSkKKyAqIHNvIHRoZSBzdHJ1Y3R1cmUgaXMgbmVlZGVkIHRvIGtlZXAgdHJhY2sg b2YgdGhlIGZpbmFsIHRyYW5zYWN0aW9uCisgKiBzdGF0ZQorICogLSBhIExpc3Qgb2YgdmFyaWFi bGUgT2lkIGZvciB0aGUgT04gVFJBTlNBQ1RJT04gT04gUkVTRVQgdmFyaWFibGVzCisgKiAtIGEg TGlzdCBvZiB2YXJpYWJsZSBPaWQgZm9yIHRoZSBjb25jdXJyZW50IERST1AgVkFSSUFCTEUKKyAq IG5vdGlmaWNhdGlvbiB3ZSByZWNlaXZlIHZpYSBzaGFyZWQgaW52YWxpZGF0aW9ucy4KKyAqCisg KiBOb3RlIHRoYXQgYWx0aG91Z2ggcmVzZXR0aW5nIGEgdmFyaWFibGUgZG9lc24ndCB0ZWNobmlj YWxseSByZXF1aXJlCisgKiB0byByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIHNlc3Npb252YXJz IGhhc2ggdGFibGUsIHdlIGN1cnJlbnRseQorICogZG8gaXQuICBJdCdzIGEgc2ltcGxlIHdheSB0 byBpbXBsZW1lbnQgdGhlIHJlc2V0LCBhbmQgaGVscHMgdG8KKyAqIHJlZHVjZSBtZW1vcnkgdXNh Z2UgYW5kIHByZXZlbnRzIHRoZSBoYXNoIHRhYmxlIGZyb20gYmxvYXRpbmcuCisgKgorICogVGhl cmUgYXJlIHR3byBkaWZmZXJlbnQgd2F5cyB0byBkbyB0aGUgZmluYWwgYWNjZXNzIHRvIHNlc3Np b24KKyAqIHZhcmlhYmxlczogYnVmZmVyZWQgKGluZGlyZWN0KSBvciBkaXJlY3QuIEJ1ZmZlcmVk IGFjY2VzcyBpcyB1c2VkCisgKiBpbiByZWd1bGFyIERNTCBzdGF0ZW1lbnRzLCB3aGVyZSB3ZSBo YXZlIHRvIGVuc3VyZSB0aGUgc3RhYmlsaXR5IG9mCisgKiB0aGUgdmFyaWFibGUgdmFsdWVzLiAg VGhlIHNlc3Npb24gdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyCisgKiBhcyBleHRl cm5hbCBxdWVyeSBwYXJhbWV0ZXJzLCB3aGljaCBpcyBjb25zaXN0ZW50IHdpdGggdXNpbmcKKyAq IFBML3BnU1FMJ3MgdmFyaWFibGVzIGluIGVtYmVkZGVkIHF1ZXJpZXMgaW4gUEwvcGdTUUwuCisg KgorICogVGhpcyBpcyBpbXBsZW1lbnRlZCBieSB1c2luZyBhbiBhdXggYnVmZmVyIChhbiBhcnJh eSkgdGhhdCBob2xkcyBhCisgKiBjb3B5IG9mIHZhbHVlcyBvZiB1c2VkIChpbiBxdWVyeSkgc2Vz c2lvbiB2YXJpYWJsZXMsIHdoaWNoIGlzIGFsc28KKyAqIHRyYW5zbWl0dGVkIHRvIHRoZSBwYXJh bGxlbCB3b3JrZXJzLiAgVGhlIHZhbHVlcyBmcm9tIHRoaXMgYXJyYXkKKyAqIGFyZSBwYXNzZWQg YXMgY29uc3RhbnQgKEVFT1BfQ09OU1QpLgorICoKKyAqIERpcmVjdCBhY2Nlc3MgaXMgdXNlZCBi eSBzaW1wbGUgZXhwcmVzc2lvbiBldmFsdWF0aW9uIChQTHBnU1FMKS4KKyAqIEluIHRoaXMgY2Fz ZSB3ZSBkb24ndCBuZWVkIHRvIGVuc3VyZSB0aGUgc3RhYmlsaXR5IG9mIHBhc3NlZAorICogdmFs dWVzLCBhbmQgbWFpbnRhaW5pbmcgdGhlIGJ1ZmZlciB3aXRoIGNvcGllcyBvZiB2YWx1ZXMgb2Yg c2Vzc2lvbgorICogdmFyaWFibGVzIHdvdWxkIGJlIHVzZWxlc3Mgb3ZlcmhlYWQuICBJbiB0aGlz IGNhc2Ugd2UganVzdCByZWFkIHRoZQorICogdmFsdWUgb2YgdGhlIHNlc3Npb24gdmFyaWFibGUg ZGlyZWN0bHkgKEVFT1BfUEFSQU1fVkFSSUFCTEUpLiBUaGlzCisgKiBzdHJhdGVneSByZW1vdmVz IHRoZSBuZWNlc3NpdHkgdG8gbW9kaWZ5IHJlbGF0ZWQgUEwvcGdTUUwgY29kZSB0bworICogc3Vw cG9ydCBzZXNzaW9uIHZhcmlhYmxlcyAodGhlIHJlYWRpbmcgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMg aXMKKyAqIGZ1bGx5IHRyYW5zcGFyZW50IGZvciBQTC9wZ1NRTCkuCiAgKi8KIHR5cGVkZWYgZW51 bSBTVmFyaWFibGVYQWN0QWN0aW9uCiB7CiAJU1ZBUl9PTl9DT01NSVRfRFJPUCwJCS8qIHVzZWQg Zm9yIE9OIENPTU1JVCBEUk9QICovCisJU1ZBUl9PTl9DT01NSVRfUkVTRVQsCQkvKiB1c2VkIGZv ciBEUk9QIFZBUklBQkxFICovCiB9IFNWYXJpYWJsZVhBY3RBY3Rpb247CiAKIHR5cGVkZWYgc3Ry dWN0IFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtCiB7CiAJT2lkCQkJdmFyaWQ7CQkJLyogdmFyaWQg b2Ygc2Vzc2lvbiB2YXJpYWJsZSAqLworCVNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uOwogCiAJ LyoKLQkgKiBjcmVhdGluZ19zdWJpZCBpcyB0aGUgSUQgb2YgdGhlIGNyZWF0aW5nIHN1YnhhY3Qu IElmIHRoZSBhY3Rpb24gd2FzCi0JICogdW5yZWdpc3RlcmVkIGR1cmluZyB0aGUgY3VycmVudCB0 cmFuc2FjdGlvbiwgZGVsZXRpbmdfc3ViaWQgaXMgdGhlIElECi0JICogb2YgdGhlIGRlbGV0aW5n IHN1YnhhY3QsIG90aGVyd2lzZSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZC4KKwkgKiBjcmVhdGlu Z19zdWJpZCBpcyB0aGUgSUQgb2YgdGhlIHN1Yi10cmFuc2FjdGlvbiB0aGF0IHJlZ2lzdGVyZWQK KwkgKiB0aGUgYWN0aW9uLiBJZiB0aGUgYWN0aW9uIHdhcyB1bnJlZ2lzdGVyZWQgZHVyaW5nIHRo ZSBjdXJyZW50CisJICogdHJhbnNhY3Rpb24sIGRlbGV0aW5nX3N1YmlkIGlzIHRoZSBJRCBvZiB0 aGUgZGVsZXRpbmcKKwkgKiBzdWItdHJhbnNhY3Rpb24sIG90aGVyd2lzZSBJbnZhbGlkU3ViVHJh bnNhY3Rpb25JZC4KIAkgKi8KIAlTdWJUcmFuc2FjdGlvbklkIGNyZWF0aW5nX3N1YmlkOwogCVN1 YlRyYW5zYWN0aW9uSWQgZGVsZXRpbmdfc3ViaWQ7CiB9IFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVt OwogCi0vKiBMaXN0IGhvbGRzIGZpZWxkcyBvZiBTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSB0eXBl ICovCi1zdGF0aWMgTGlzdCAqeGFjdF9kcm9wX2FjdGlvbnMgPSBOSUw7Ci0KLXN0YXRpYyB2b2lk IHJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLCBTVmFyaWFi bGVYQWN0QWN0aW9uIGFjdGlvbik7Ci1zdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX3Nlc3Npb25fdmFy aWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLCBTVmFyaWFibGVYQWN0QWN0aW9uIGFjdGlvbik7 CisvKiBMaXN0IG9mIFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICovCitzdGF0aWMgTGlzdCAqeGFj dF9vbl9jb21taXRfYWN0aW9ucyA9IE5JTDsKIAorLyoKKyAqIFRvIHByb2Nlc3MgT04gVFJBTlNB Q1RJT04gRU5EIFJFU0VUIHZhcmlhYmxlcywgZm9yIHdoaWNoIHdlIGFsd2F5cworICogbmVlZCB0 byBjbGVhciB0aGUgc2F2ZWQgdmFsdWVzLgorICovCitzdGF0aWMgTGlzdCAqeGFjdF9yZXNldF92 YXJpZHMgPSBOSUw7CiAKIC8qCi0gKiBEbyB0aGUgbmVjZXNzYXJ5IHdvcmsgdG8gc2V0dXAgbG9j YWwgbWVtb3J5IG1hbmFnZW1lbnQgb2YgYSBuZXcKLSAqIHZhcmlhYmxlLgotICoKLSAqIENhbGxl ciBzaG91bGQgYWxyZWFkeSBoYXZlIGNyZWF0ZWQgdGhlIG5lY2Vzc2FyeSBlbnRyeSBpbiBjYXRh bG9nCi0gKiBhbmQgbWFkZSB0aGVtIHZpc2libGUuCisgKiBXaGVuIHRoZSBzZXNzaW9uIHZhcmlh YmxlIGlzIGRyb3BwZWQgd2UgbmVlZCB0byBmcmVlIGxvY2FsIG1lbW9yeS4gVGhlCisgKiBzZXNz aW9uIHZhcmlhYmxlIGNhbiBiZSBkcm9wcGVkIGJ5IGN1cnJlbnQgc2Vzc2lvbiwgYnV0IGl0IGNh biBiZQorICogZHJvcHBlZCBieSBvdGhlcidzIHNlc3Npb25zIHRvbywgc28gd2UgaGF2ZSB0byB3 YXRjaCBzaW52YWwgbWVzc2FnZS4KKyAqIEJ1dCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZnJl ZSBsb2NhbCBtZW1vcnkgaW1tZWRpYXRlbHksIHdlIG5lZWQgdG8KKyAqIGhvbGQgbGlzdCBvZiBw b3NzaWJseSBkcm9wcGVkIHNlc3Npb24gdmFyaWFibGVzIGFuZCBhdCB0aGUgZW5kIG9mCisgKiB0 cmFuc2FjdGlvbiwgd2UgY2hlY2sgc2Vzc2lvbiB2YXJpYWJsZXMgZnJvbSB0aGlzIGxpc3QgYWdh aW5zdCBzeXN0ZW0KKyAqIGNhdGFsb2cuIFRoaXMgY2hlY2sgY2FuIGJlIHBvc3Rwb25lZCBpbnRv IG5leHQgdHJhbnNhY3Rpb24gaWYKKyAqIGN1cnJlbnQgdHJhbnNhY3Rpb25zIGlzIGluIGFib3J0 ZWQgc3RhdGUsIGFzIHdlIHdvdWxkbid0IGJlIGFibGUgdG8KKyAqIGFjY2VzcyB0aGUgc3lzdGVt IGNhdGFsb2cuCiAgKi8KLXZvaWQKLVNlc3Npb25WYXJpYWJsZUNyZWF0ZVBvc3Rwcm9jZXNzKE9p ZCB2YXJpZCwgY2hhciBlb3hhY3Rpb24pCitzdGF0aWMgTGlzdCAqeGFjdF9yZWNoZWNrX3Zhcmlk cyA9IE5JTDsKKwordHlwZWRlZiBzdHJ1Y3QgU1ZhcmlhYmxlRGF0YQogeworCU9pZAkJCXZhcmlk OwkJCS8qIHBnX3ZhcmlhYmxlIE9JRCBvZiB0aGUgdmFyaWFibGUgKGhhc2gga2V5KSAqLworCiAJ LyoKLQkgKiBGb3IgdGVtcG9yYXJ5IHZhcmlhYmxlcywgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcg ZW5kIG9mIHhhY3QgYWN0aW9uIHRvCi0JICogZW5zdXJlIGRlbGV0aW9uIGZyb20gY2F0YWxvZy4K KwkgKiBUaGUgc2Vzc2lvbiB2YXJpYWJsZSBpcyBpZGVudGlmaWVkIGJ5IG9pZC4gVGhlIG9pZCBp cyB1bmlxdWUgaW4KKwkgKiBjYXRhbG9nLiBVbmZvcnR1bmF0ZWx5LCB0aGUgbWVtb3J5IGNsZWFu dXAgY2FuIGJlIHBvc3Rwb25lZCB0bworCSAqIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlc3Npb24g bmV4dCB0cmFuc2FjdGlvbiwgYW5kIGl0J3MgcG9zc2libGUKKwkgKiB0aGF0IHRoaXMgbmV4dCB0 cmFuc2FjdGlvbiBzZWVzIGEgZGlmZmVyZW50IHZhcmlhYmxlIHdpdGggdGhlIHNhbWUgb2lkLgor CSAqIFdlIHRoZXJlZm9yZSBuZWVkIGFuIGV4dHJhIGlkZW50aWZpZXIgdG8gZGlzdGluZ3Vpc2gg Ym90aCBjYXNlcy4gV2UKKwkgKiB1c2UgdGhlIExTTiBudW1iZXIgb2Ygc2Vzc2lvbiB2YXJpYWJs ZSBhdCBjcmVhdGlvbiB0aW1lLiBUaGUKKwkgKiB2YWx1ZSBvZiBzZXNzaW9uIHZhcmlhYmxlIChp biBtZW1vcnkpIGlzIHZhbGlkLCB3aGVuIHRoZXJlIGlzIGEKKwkgKiByZWNvcmQgaW4gcGdfdmFy aWFibGUgd2l0aCBzYW1lIG9pZCBhbmQgc2FtZSBjcmVhdGVfbHNuLgogCSAqLwotCWlmIChlb3hh Y3Rpb24gPT0gVkFSSUFCTEVfRU9YX0RST1ApCi0JewotCQlBc3NlcnQoaXNUZW1wTmFtZXNwYWNl KGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpKTsKKwlYTG9nUmVjUHRyCWNy ZWF0ZV9sc247CiAKLQkJcmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbih2YXJp ZCwgU1ZBUl9PTl9DT01NSVRfRFJPUCk7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2YWw7 CisJRGF0dW0JCXZhbHVlOworCisJT2lkCQkJdHlwaWQ7CisJaW50MTYJCXR5cGxlbjsKKwlib29s CQl0eXBieXZhbDsKKworCWJvb2wJCWlzX2RvbWFpbjsKKwl2b2lkCSAgICpkb21haW5fY2hlY2tf ZXh0cmE7CisJTG9jYWxUcmFuc2FjdGlvbklkIGRvbWFpbl9jaGVja19leHRyYV9seGlkOworCisJ LyoKKwkgKiBUb3AgbGV2ZWwgbG9jYWwgdHJhbnNhY3Rpb24gaWQgb2YgdGhlIGxhc3QgdHJhbnNh Y3Rpb24gdGhhdCBkcm9wcGVkIHRoZQorCSAqIHZhcmlhYmxlIGlmIGFueS4gIFdlIG5lZWQgdGhp cyBpbmZvcm1hdGlvbiB0byBhdm9pZCBmcmVlaW5nIG1lbW9yeSBmb3IKKwkgKiB2YXJpYWJsZSBk cm9wcGVkIGJ5IHRoZSBsb2NhbCBiYWNrZW5kIHRoYXQgbWF5IGJlIGV2ZW50dWFsbHkgcm9sbGJh Y2tlZC4KKwkgKi8KKwlMb2NhbFRyYW5zYWN0aW9uSWQgZHJvcF9seGlkOworCisJYm9vbAkJaXNf bm90X251bGw7CS8qIGRvbid0IGFsbG93IG51bGwgdmFsdWVzICovCisJYm9vbAkJaXNfaW1tdXRh YmxlOwkvKiB0cnVlIHdoZW4gdmFyaWFibGUgaXMgaW1tdXRhYmxlICovCisJYm9vbAkJaGFzX2Rl ZmV4cHI7CS8qIHRydWUgd2hlbiB2YXJpYWJsZSBoYXMgYSBkZWZhdWx0IHZhbHVlICovCisKKwli b29sCQlpc192YWxpZDsJCS8qIHRydWUgd2hlbiB2YXJpYWJsZSB3YXMgc3VjY2Vzc2Z1bGx5CisJ CQkJCQkJCSAqIGluaXRpYWxpemVkICovCisKKwl1aW50MzIJCWhhc2h2YWx1ZTsJCS8qIHVzZWQg Zm9yIHBhaXJpbmcgc2ludmFsIG1lc3NhZ2UgKi8KKworCWJvb2wJCWVveF9yZXNldDsJCS8qIHRy dWUsIHdoZW4gbGlmZWN5Y2xlIGlzIGxpbWl0dGVkIGJ5CisJCQkJCQkJCSAqIHRyYW5zYWN0aW9u ICovCit9IFNWYXJpYWJsZURhdGE7CisKK3R5cGVkZWYgU1ZhcmlhYmxlRGF0YSAqU1ZhcmlhYmxl OworCitzdGF0aWMgSFRBQiAqc2Vzc2lvbnZhcnMgPSBOVUxMOwkvKiBoYXNoIHRhYmxlIGZvciBz ZXNzaW9uIHZhcmlhYmxlcyAqLworCitzdGF0aWMgTWVtb3J5Q29udGV4dCBTVmFyaWFibGVNZW1v cnlDb250ZXh0ID0gTlVMTDsKKworc3RhdGljIHZvaWQgY3JlYXRlX3Nlc3Npb252YXJzX2hhc2h0 YWJsZXModm9pZCk7CitzdGF0aWMgdm9pZCBmcmVlX3Nlc3Npb25fdmFyaWFibGVfdmFsdWUoU1Zh cmlhYmxlIHN2YXIpOworc3RhdGljIHZvaWQgaW5pdF9zZXNzaW9uX3ZhcmlhYmxlKFNWYXJpYWJs ZSBzdmFyLCBWYXJpYWJsZSAqdmFyKTsKK3N0YXRpYyBib29sIGlzX3Nlc3Npb25fdmFyaWFibGVf dmFsaWQoU1ZhcmlhYmxlIHN2YXIpOworc3RhdGljIHZvaWQgcGdfdmFyaWFibGVfY2FjaGVfY2Fs bGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKKwkJCQkJCQkJCSAgIHVpbnQzMiBoYXNodmFs dWUpOworc3RhdGljIFNWYXJpYWJsZSBwcmVwYXJlX3ZhcmlhYmxlX2Zvcl9yZWFkaW5nKE9pZCB2 YXJpZCk7CitzdGF0aWMgdm9pZCByZWdpc3Rlcl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0aW9u KE9pZCB2YXJpZCwKKwkJCQkJCQkJCQkJCSAgU1ZhcmlhYmxlWEFjdEFjdGlvbiBhY3Rpb24pOwor c3RhdGljIHZvaWQgcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGUoU1ZhcmlhYmxlIHN2YXIpOworc3Rh dGljIHZvaWQgcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGVfYnlfaWQoT2lkIHZhcmlkKTsKK3N0YXRp YyB2b2lkIHNldF9zZXNzaW9uX3ZhcmlhYmxlKFNWYXJpYWJsZSBzdmFyLCBEYXR1bSB2YWx1ZSwg Ym9vbCBpc251bGwsCisJCQkJCQkJCSBib29sIGluaXRfbW9kZSk7CitzdGF0aWMgY29uc3QgY2hh ciAqU1ZhcmlhYmxlWEFjdEFjdGlvbk5hbWUoU1ZhcmlhYmxlWEFjdEFjdGlvbiBhY3Rpb24pOwor c3RhdGljIHZvaWQgc3luY19zZXNzaW9udmFyc19hbGwoYm9vbCBmaWx0ZXJfbHhpZCk7CitzdGF0 aWMgdm9pZCB1bnJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlk LAorCQkJCQkJCQkJCQkJCVNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uKTsKKworCisvKgorICog UmV0dXJucyBodW1hbiByZWFkYWJsZSBuYW1lIG9mIFNWYXJpYWJsZVhBY3RBY3Rpb24gdmFsdWUu CisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK1NWYXJpYWJsZVhBY3RBY3Rpb25OYW1lKFNWYXJp YWJsZVhBY3RBY3Rpb24gYWN0aW9uKQoreworCXN3aXRjaCAoYWN0aW9uKQorCXsKKwkJY2FzZSBT VkFSX09OX0NPTU1JVF9EUk9QOgorCQkJcmV0dXJuICJPTiBDT01NSVQgRFJPUCI7CisJCWNhc2Ug U1ZBUl9PTl9DT01NSVRfUkVTRVQ6CisJCQlyZXR1cm4gIk9OIENPTU1JVCBSRVNFVCI7CisJCWRl ZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5rbm93biBTVmFyaWFibGVYQWN0QWN0aW9uIGFjdGlv biAlZCIsIGFjdGlvbik7CiAJfQogfQogCiAvKgotICogSGFuZGxlIHRoZSBsb2NhbCBtZW1vcnkg Y2xlYW51cCBmb3IgYSBEUk9QIFZBUklBQkxFIGNvbW1hbmQuCi0gKgotICogQ2FsbGVyIHNob3Vs ZCB0YWtlIGNhcmUgb2YgcmVtb3ZpbmcgdGhlIHBnX3ZhcmlhYmxlIGVudHJ5IGZpcnN0LgorICog RnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIGdpdmVuIHNlc3Npb24gdmFyaWFibGUs IGJ1dAorICogcHJlc2VydmUgdGhlIGhhc2ggZW50cnkgaW4gc2Vzc2lvbnZhcnMuCiAgKi8KLXZv aWQKLVNlc3Npb25WYXJpYWJsZURyb3BQb3N0cHJvY2VzcyhPaWQgdmFyaWQpCitzdGF0aWMgdm9p ZAorZnJlZV9zZXNzaW9uX3ZhcmlhYmxlX3ZhbHVlKFNWYXJpYWJsZSBzdmFyKQogeworCS8qIENs ZWFuIGN1cnJlbnQgdmFsdWUgKi8KKwlpZiAoIXN2YXItPmlzbnVsbCkKKwl7CisJCWlmIChzdmFy LT5mcmVldmFsKQorCQl7CisJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIoc3Zhci0+dmFsdWUpKTsK KwkJCXN2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwkJfQorCisJCXN2YXItPmlzbnVsbCA9IHRydWU7 CisJfQorCisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJc3Zhci0+ZnJlZXZhbCA9IGZhbHNl OworCiAJLyoKLQkgKiBUaGUgZW50cnkgd2FzIHJlbW92ZWQgZnJvbSBjYXRhbG9nIGFscmVhZHks IHdlIG11c3Qgbm90IGRvIGl0Ci0JICogYWdhaW4gYXQgZW5kIG9mIHhhY3QgdGltZS4KKwkgKiBX ZSBjYW4gbWFyayB0aGlzIHNlc3Npb24gdmFyaWFibGUgYXMgdmFsaWQgd2hlbiBpdCBoYXMgbm90 IGRlZmF1bHQKKwkgKiBleHByZXNzaW9uLCBhbmQgd2hlbiBudWxsIGlzIGFsbG93ZWQuIFdoZW4g aXQgaGFzIGRlZmV4cHIsIHRoZW4gdGhlCisJICogY29udGVudCB3aWxsIGJlIHZhbGlkIGFmdGVy IGFuIGFzc2lnbm1lbnQgb3IgZGVmZXhwIGV2YWx1YXRpb24uCiAJICovCi0JdW5yZWdpc3Rlcl9z ZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0aW9uKHZhcmlkLCBTVkFSX09OX0NPTU1JVF9EUk9QKTsK KwlzdmFyLT5pc192YWxpZCA9ICFzdmFyLT5oYXNfZGVmZXhwciAmJiAhc3Zhci0+aXNfbm90X251 bGw7CiB9CiAKIC8qCiAgKiBSZWdpc3RyYXRpb24gb2YgYWN0aW9ucyB0byBiZSBleGVjdXRlZCBv biBzZXNzaW9uIHZhcmlhYmxlcyBhdCB0cmFuc2FjdGlvbgogICogZW5kIHRpbWUuIFdlIHdhbnQg dG8gZHJvcCB0ZW1wb3Jhcnkgc2Vzc2lvbiB2YXJpYWJsZXMgd2l0aCBjbGF1c2UgT04gQ09NTUlU Ci0gKiBEUk9QLCBvciB3ZSB3YW50IHRvIHJlc2V0IHZhbHVlcyBvZiBzZXNzaW9uIHZhcmlhYmxl cyB3aXRoIGNsYXVzZSBPTgotICogVFJBTlNBQ1RJT04gRU5EIFJFU0VUIG9yIHdlIHdhbnQgdG8g Y2xlYW4gKHJlc2V0KSBsb2NhbCBtZW1vcnkgYWxsb2NhdGVkIGJ5Ci0gKiB2YWx1ZXMgb2YgZHJv cHBlZCBzZXNzaW9uIHZhcmlhYmxlcy4KLSAqLwotCi0vKgotICogUmVnaXN0ZXIgYSBzZXNzaW9u IHZhcmlhYmxlIHhhY3QgYWN0aW9uLgorICogRFJPUCwgb3Igd2Ugd2FudCB0byBjbGVhbiAocmVz ZXQpIGxvY2FsIG1lbW9yeSBhbGxvY2F0ZWQgYnkKKyAqIHZhbHVlcyBvZiBzZXNzaW9uIHZhcmlh YmxlcyBkcm9wcGVkIGluIG90aGVyIGJhY2tlbmRzLgogICovCiBzdGF0aWMgdm9pZAogcmVnaXN0 ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbihPaWQgdmFyaWQsCkBAIC0xMTEsMjcgKzI2 OCwzMCBAQCByZWdpc3Rlcl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0aW9uKE9pZCB2YXJpZCwK IAlTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqeGFjdF9haTsKIAlNZW1vcnlDb250ZXh0IG9sZGN4 dDsKIAotCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQp OworCWVsb2coREVCVUcxLCAiU1ZhcmlhYmxlWEFjdEFjdGlvbiBcIiVzXCIgaXMgcmVnaXN0ZXJl ZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAob2lkOiV1KSIsCisJCSBTVmFyaWFibGVYQWN0QWN0aW9u TmFtZShhY3Rpb24pLCB2YXJpZCk7CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o VG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIAogCXhhY3RfYWkgPSAoU1ZhcmlhYmxlWEFjdEFjdGlv bkl0ZW0gKikKIAkJcGFsbG9jKHNpemVvZihTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSkpOwogCiAJ eGFjdF9haS0+dmFyaWQgPSB2YXJpZDsKKwl4YWN0X2FpLT5hY3Rpb24gPSBhY3Rpb247CiAKIAl4 YWN0X2FpLT5jcmVhdGluZ19zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CiAJ eGFjdF9haS0+ZGVsZXRpbmdfc3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKIAotCUFz c2VydChhY3Rpb24gPT0gU1ZBUl9PTl9DT01NSVRfRFJPUCk7Ci0JeGFjdF9kcm9wX2FjdGlvbnMg PSBsY29ucyh4YWN0X2FpLCB4YWN0X2Ryb3BfYWN0aW9ucyk7CisJeGFjdF9vbl9jb21taXRfYWN0 aW9ucyA9IGxjb25zKHhhY3RfYWksIHhhY3Rfb25fY29tbWl0X2FjdGlvbnMpOwogCiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKIC8qCi0gKiBVbnJlZ2lzdGVyIGFuIGFjdGlv biBvbiBhIGdpdmVuIHNlc3Npb24gdmFyaWFibGUgZnJvbSBhY3Rpb24gbGlzdC4gSW4gdGhpcwot ICogbW9tZW50LCB0aGUgYWN0aW9uIGlzIGp1c3QgbWFya2VkIGFzIGRlbGV0ZWQgYnkgc2V0dGlu ZyBkZWxldGluZ19zdWJpZC4gVGhlCi0gKiBjYWxsaW5nIGV2ZW4gbWlnaHQgYmUgcm9sbGJhY2tl ZCwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgbm90IGxvc2UgdGhpcwotICogYWN0aW9uLgorICog VW5yZWdpc3RlciBhbiBhY3Rpb24gb24gYSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlIGZyb20gdGhl IGFjdGlvbiBsaXN0LgorICogVGhlIGFjdGlvbiBpcyBqdXN0IG1hcmtlZCBhcyBkZWxldGVkIGJ5 IHNldHRpbmcgZGVsZXRpbmdfc3ViaWQuCisgKiBUaGUgY2FsbGluZyBzdWJ0cmFuc2FjdGlvbiBl dmVuIG1pZ2h0IGJlIHJvbGxiYWNrZWQsIGluIHdoaWNoIGNhc2UgdGhlCisgKiBhY3Rpb24gc2hv dWxkbid0IGJlIHJlbW92ZWQuCiAgKi8KIHN0YXRpYyB2b2lkCiB1bnJlZ2lzdGVyX3Nlc3Npb25f dmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLApAQCAtMTM5LDQzICsyOTksODQyIEBAIHVu cmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbihPaWQgdmFyaWQsCiB7CiAJTGlz dENlbGwgICAqbDsKIAotCUFzc2VydChhY3Rpb24gPT0gU1ZBUl9PTl9DT01NSVRfRFJPUCk7CisJ ZWxvZyhERUJVRzEsICJTVmFyaWFibGVYQWN0QWN0aW9uIFwiJXNcIiBpcyB1bnJlZ2lzdGVyZWQg Zm9yIHNlc3Npb24gdmFyaWFibGUgKG9pZDoldSkiLAorCQkgU1ZhcmlhYmxlWEFjdEFjdGlvbk5h bWUoYWN0aW9uKSwgdmFyaWQpOwogCi0JZm9yZWFjaChsLCB4YWN0X2Ryb3BfYWN0aW9ucykKKwlm b3JlYWNoKGwsIHhhY3Rfb25fY29tbWl0X2FjdGlvbnMpCiAJewogCQlTVmFyaWFibGVYQWN0QWN0 aW9uSXRlbSAqeGFjdF9haSA9CiAJCShTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqKSBsZmlyc3Qo bCk7CiAKLQkJaWYgKHhhY3RfYWktPnZhcmlkID09IHZhcmlkKQorCQlpZiAoeGFjdF9haS0+YWN0 aW9uID09IGFjdGlvbiAmJiB4YWN0X2FpLT52YXJpZCA9PSB2YXJpZCkKIAkJCXhhY3RfYWktPmRl bGV0aW5nX3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKTsKIAl9CiB9CiAKIC8q Ci0gKiBQZXJmb3JtIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCBvciBPTiBDT01NSVQgRFJPUAot ICogYW5kIENPTU1JVC9ST0xMQkFDSyBvZiB0cmFuc2FjdGlvbiBzZXNzaW9uIHZhcmlhYmxlcy4K KyAqIFJlbGVhc2UgdGhlIGdpdmVuIHNlc3Npb24gdmFyaWFibGUgZnJvbSBzZXNzaW9udmFycyBo YXNodGFiIGFuZCBmcmVlCisgKiBhbGwgdW5kZXJseWluZyBhbGxvY2F0ZWQgbWVtb3J5LgorICov CitzdGF0aWMgdm9pZAorcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGUoU1ZhcmlhYmxlIHN2YXIpCit7 CisJZnJlZV9zZXNzaW9uX3ZhcmlhYmxlX3ZhbHVlKHN2YXIpOworCisJLyoKKwkgKiBJbiB0aGlz IG1vbWVudCwgdGhlIHNlc3Npb24gdmFyaWFibGUgaXMgbm90IGluIGNhdGFsb2csIHNvIG9ubHkg c2F2ZWQKKwkgKiBvaWQgY2FuIGJlIGRpc3BsYXllZC4KKwkgKi8KKwllbG9nKERFQlVHMSwgInNl c3Npb24gdmFyaWFibGUgKG9pZDoldSkgaXMgcmVtb3ZpbmcgZnJvbSBtZW1vcnkiLAorCQkgc3Zh ci0+dmFyaWQpOworCisJaWYgKGhhc2hfc2VhcmNoKHNlc3Npb252YXJzLAorCQkJCQkodm9pZCAq KSAmc3Zhci0+dmFyaWQsCisJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQlOVUxMKSA9PSBOVUxMKQor CQllbG9nKERFQlVHMSwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7Cit9CisKKy8qCisgKiBSZWxl YXNlIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGRlZmluZWQgYnkgdmFyaWQgZnJvbSBzZXNzaW9udmFy cworICogaGFzaHRhYiBhbmQgZnJlZSBhbGwgdW5kZXJseWluZyBhbGxvY2F0ZWQgbWVtb3J5Lgor ICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGVfYnlfaWQoT2lkIHZhcmlk KQoreworCVNWYXJpYWJsZQlzdmFyOworCWJvb2wJCWZvdW5kOworCisJaWYgKCFzZXNzaW9udmFy cykKKwkJcmV0dXJuOworCisJc3ZhciA9IChTVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNlc3Npb252 YXJzLCAmdmFyaWQsCisJCQkJCQkJCSAgIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAoZm91bmQp CisJCXJlbW92ZV9zZXNzaW9uX3ZhcmlhYmxlKHN2YXIpOworfQorCisvKgorICogQ2FsbGJhY2sg ZnVuY3Rpb24gZm9yIHNlc3Npb24gdmFyaWFibGUgaW52YWxpZGF0aW9uLgorICoKKyAqIEl0IHF1 ZXVlcyBhIGxpc3Qgb2YgdmFyaWFibGUgT2lkIGluIHhhY3RfcmVjaGVja192YXJpZHMuCisgKi8K K3N0YXRpYyB2b2lkCitwZ192YXJpYWJsZV9jYWNoZV9jYWxsYmFjayhEYXR1bSBhcmcsIGludCBj YWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJ U1ZhcmlhYmxlCXN2YXI7CisKKwkvKgorCSAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiBzZXNz aW9udmFycyBiZWluZyBpbml0aWFsaXplZCwgZXZlbiB3aGVuCisJICogcmVjZWl2aW5nIGFuIGlu dmFsaWRhdGlvbiBjYWxsYmFjaywgYXMgRElTQ0FSRCBbIEFMTCB8IFZBUklBQkxFUyBdCisJICog ZGVzdHJveXMgdGhlIGhhc2ggdGFibGUgZW50aXJlbHkuCisJICovCisJaWYgKCFzZXNzaW9udmFy cykKKwkJcmV0dXJuOworCisJZWxvZyhERUJVRzEsICJwZ192YXJpYWJsZV9jYWNoZV9jYWxsYmFj ayAldSAldSIsIGNhY2hlaWQsIGhhc2h2YWx1ZSk7CisKKwkvKgorCSAqIFdoZW4gdGhlIGhhc2h2 YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgdG8gcmVjaGVjayBhbGwKKwkgKiBj dXJyZW50bHkgdXNlZCBzZXNzaW9uIHZhcmlhYmxlcy4gU2luY2Ugd2UgY2FuJ3QgZ3VhcmFudGVl IHRoZSBleGFjdAorCSAqIHNlc3Npb24gdmFyaWFibGUgZnJvbSBpdHMgaGFzaFZhbHVlLCB3ZSBh bHNvIGhhdmUgdG8gaXRlcmF0ZSBvdmVyCisJICogYWxsIGl0ZW1zIG9mIHRoZSBzZXNzaW9udmFy cyBoYXNoIHRhYmxlLgorCSAqLworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgc2Vzc2lvbnZhcnMp OworCisJd2hpbGUgKChzdmFyID0gKFNWYXJpYWJsZSkgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCXsKKwkJaWYgKGhhc2h2YWx1ZSA9PSAwIHx8IHN2YXItPmhhc2h2YWx1ZSA9 PSBoYXNodmFsdWUpCisJCXsKKwkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJCQkvKiBUaGUg bGlzdCBuZWVkcyB0byBiZSBhYmxlIHRvIHN1cnZpdmUgdGhlIHRyYW5zYWN0aW9uICovCisJCQlv bGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU1ZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisK KwkJCXhhY3RfcmVjaGVja192YXJpZHMgPSBsYXBwZW5kX29pZCh4YWN0X3JlY2hlY2tfdmFyaWRz LAorCQkJCQkJCQkJCQkgIHN2YXItPnZhcmlkKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN4dCk7CisKKwkJCWVsb2coREVCVUcxLCAic2Vzc2lvbiB2YXJpYWJsZSAob2lkOiV1KSBz aG91bGQgYmUgcmVjaGVja2VkIChmb3JjZWQgYnkgc2ludmFsKSIsCisJCQkJIHN2YXItPnZhcmlk KTsKKwkJfQorCisJCS8qCisJCSAqIGFsdGhvdWdoIGl0IHRoZXJlIGlzIGxvdyBwcm9iYWJpbGl0 eSwgd2UgaGF2ZSB0byBpdGVyYXRlIG92ZXIgYWxsCisJCSAqIGxvY2FsbHkgc2V0IHNlc3Npb24g dmFyaWFibGVzLCBiZWNhdXNlIGhhc2h2YWx1ZSBpcyBub3QgYSB1bmlxdWUKKwkJICogaWRlbnRp Zmllci4KKwkJICovCisJfQorfQorCisvKgorICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIGVudHJ5 IGluIHBnX3ZhcmlhYmxlIGlzIHZhbGlkIGZvciB0aGUgZ2l2ZW4gc2Vzc2lvbgorICogdmFyaWFi bGUuCisgKi8KK3N0YXRpYyBib29sCitpc19zZXNzaW9uX3ZhcmlhYmxlX3ZhbGlkKFNWYXJpYWJs ZSBzdmFyKQoreworCUhlYXBUdXBsZQl0cDsKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXRw ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHN2YXItPnZh cmlkKSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQkvKgorCQkgKiBJbiB0 aGlzIGNhc2UsIHRoZSBvbmx5IG9pZCBjYW5ub3QgYmUgdXNlZCBhcyB1bmlxdWUgaWRlbnRpZmll ciwKKwkJICogYmVjYXVzZSB0aGUgb2lkIGNvdW50ZXIgY2FuIHdyYXBhcm91bmQsIGFuZCB0aGUg b2lkIGNhbiBiZSB1c2VkIGZvcgorCQkgKiBuZXcgb3RoZXIgc2Vzc2lvbiB2YXJpYWJsZS4gV2Ug ZG8gYSBzZWNvbmQgY2hlY2sgYWdhaW5zdCA2NGJpdAorCQkgKiB1bmlxdWUgaWRlbnRpZmllci4K KwkJICovCisJCWlmIChzdmFyLT5jcmVhdGVfbHNuID09ICgoRm9ybV9wZ192YXJpYWJsZSkgR0VU U1RSVUNUKHRwKSktPnZhcmNyZWF0ZV9sc24pCisJCQlyZXN1bHQgPSB0cnVlOworCisJCVJlbGVh c2VTeXNDYWNoZSh0cCk7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFJlY2hl Y2sgdGhlIHBvc3NpYmx5IGludmFsaWRhdGVkIHZhcmlhYmxlcyAoaW4gbWVtb3J5KSBhZ2FpbnN0 IHN5c3RlbQorICogY2F0YWxvZy4gVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBiZWZvcmUgYW55IHJl YWQgb3IgYW55IHdyaXRlIGZyb20vdG8gc2Vzc2lvbgorICogdmFyaWFibGVzIGFuZCB3aGVuIHBy b2Nlc3NpbmcgYSBjb21taXR0ZWQgdHJhbnNhY3Rpb24uCisgKiBJZiBmaWx0ZXJfbHhpZCBpcyB0 cnVlLCB0aGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHRoZSByZWNoZWNrIGZvciB2YXJpYWJsZXMK KyAqIHRoYXQgaGF2ZSB0aGUgc2FtZSBjYWNoZWQgbG9jYWwgdHJhbnNhY3Rpb24gaWQgYXMgdGhl IHRyYW5zYWN0aW9uIGN1cnJlbnQKKyAqIHRvcCBsZXZlbCBsb2NhbCB0cmFuc2FjdGlvbiBpZCwg aWUuIHRoZSB2YXJpYWJsZXMgZHJvcHBlZCBpbiB0aGUgY3VycmVudCB0b3AKKyAqIGxldmVsIHRy YW5zYWN0aW9uIG9yIGFueSB1bmRlcmx5aW5nIHN1YnRyYW5zYWN0aW9uLgorICovCitzdGF0aWMg dm9pZAorc3luY19zZXNzaW9udmFyc19hbGwoYm9vbCBmaWx0ZXJfbHhpZCkKK3sKKwlTVmFyaWFi bGUJc3ZhcjsKKwlMaXN0Q2VsbCAgICpsOworCUxpc3QJICAgKnhhY3RfcmVjaGVja192YXJpZHNf c25hcHNob3Q7CisKKwlpZiAoIXhhY3RfcmVjaGVja192YXJpZHMpCisJCXJldHVybjsKKworCS8q CisJICogSWYgdGhlIHNlc3Npb252YXJzIGhhc2h0YWJsZSBpcyBOVUxMICh3aGljaCBjYW4gYmUg ZG9uZSBieSBESVNDQVJECisJICogVkFSSUFCTEVTKSwgd2UgYXJlIHN1cmUgdGhhdCB0aGVyZSBh cmVuJ3QgYW55IGFjdGl2ZSBzZXNzaW9uIHZhcmlhYmxlCisJICogaW4gdGhpcyBzZXNzaW9uLgor CSAqLworCWlmICghc2Vzc2lvbnZhcnMpCisJeworCQlsaXN0X2ZyZWUoeGFjdF9yZWNoZWNrX3Zh cmlkcyk7CisJCXhhY3RfcmVjaGVja192YXJpZHMgPSBOSUw7CisJCXJldHVybjsKKwl9CisKKwll bG9nKERFQlVHMSwgImVmZmVjdGl2ZSBjYWxsIG9mIHN5bmNfc2Vzc2lvbnZhcnNfYWxsKCkiKTsK KworCS8qCisJICogVGhlIHJlY2hlY2sgbGlzdCBjYW4gY29udGFpbiBtYW55IGR1cGxpY2F0ZXMs IHNvIGNsZWFuIGl0IHVwIGJlZm9yZQorCSAqIHByb2Nlc3NpbmcgdG8gYXZvaWQgZXh0cmFuZW91 cyB3b3JrLgorCSAqLworCWxpc3Rfc29ydCh4YWN0X3JlY2hlY2tfdmFyaWRzLCBsaXN0X29pZF9j bXApOworCWxpc3RfZGVkdXBsaWNhdGVfb2lkKHhhY3RfcmVjaGVja192YXJpZHMpOworCisJLyoK KwkgKiBXaGVuIHdlIGNoZWNrIHRoZSB2YXJpYWJsZXMsIHRoZSBzeXN0ZW0gY2FjaGUgY2FuIGJl IGludmFsaWRhdGVkLAorCSAqIGFuZCB0aGVuIHhhY3RfcmVjaGVja192YXJpZHMgY2FuIGJlIGV4 dGVuZGVkLiBCdXQgd2UgbmVlZCB0byBpdGVyYXRlCisJICogb3ZlciBzdGFibGUgbGlzdCwgYW5k IHdlIG11c3Qgbm90IGF0IHNhbWUgdGltZSBkaXNjYXJkIGludmFsaWRhdGlvbgorCSAqIG1lc3Nh Z2VzLgorCSAqCisJICogU3RlcHMgb2YgcG9zc2libGUgc29sdXRpb246CisJICoKKwkgKiAgIDEu IG1vdmUgeGFjdF9yZWNoZWNrX3ZhcmlkcyB0byBhdXggdmFyaWFibGUsIGFuZCByZXNldAorCSAq ICAgICAgeGFjdF9yZWNoZWNrX3ZhcmlkcywKKwkgKgorCSAqICAgMi4gcHJvY2VzcyBmaWVsZHMg aW4gbGlzdCBvZiBhdXggdmFyaWFibGUsCisJICoKKwkgKiAgIDMuIG1lcmdlIHRoZSBjb250ZW50 IG9mIGF1eCB2YXJpYWJsZSBiYWNrIHRvIHhhY3RfcmVjaGVja192YXJpZHMuCisJICovCisJeGFj dF9yZWNoZWNrX3Zhcmlkc19zbmFwc2hvdCA9IHhhY3RfcmVjaGVja192YXJpZHM7CisJeGFjdF9y ZWNoZWNrX3ZhcmlkcyA9IE5JTDsKKworCS8qCisJICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBi ZWZvcmUgYW55IHJlYWRpbmcsIHNvIHRoZSBzZXNzaW9uIHNob3VsZCBiZSBpbgorCSAqIHRyYW5z YWN0aW9uIHN0YXRlLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGFjY2VzcyB0aGUgc3lzdGVtIGNhdGFs b2cuCisJICovCisJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworCWZvcmVhY2gobCwg eGFjdF9yZWNoZWNrX3Zhcmlkc19zbmFwc2hvdCkKKwl7CisJCWJvb2wJCWZvdW5kOworCQlPaWQJ CQl2YXJpZCA9IGxmaXJzdF9vaWQobCk7CisKKwkJc3ZhciA9IChTVmFyaWFibGUpIGhhc2hfc2Vh cmNoKHNlc3Npb252YXJzLCAmdmFyaWQsCisJCQkJCQkJCQkgICBIQVNIX0ZJTkQsICZmb3VuZCk7 CisKKwkJLyoKKwkJICogUmVtb3ZlIGludmFsaWQgdmFyaWFibGVzLCBidXQgZG9uJ3QgdG91Y2gg dmFyaWFibGVzIHRoYXQgd2VyZQorCQkgKiBkcm9wcGVkIGJ5IHRoZSBjdXJyZW50IHRvcCBsZXZl bCBsb2NhbCB0cmFuc2FjdGlvbiBvciBhbnkKKwkJICogc3VidHJhbnNhY3Rpb24gdW5kZXJuZWF0 aCwgYXMgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUKKwkJICogdHJhbnNhY3Rpb24gd2ls bCBiZSBjb21taXR0ZWQuIFN1Y2ggdmFyaWFibGVzIHdpbGwgYmUgcmVtb3ZlZCBpbgorCQkgKiB0 aGUgbmV4dCB0cmFuc2FjdGlvbiBpZiBuZWVkZWQuCisJCSAqLworCQlpZiAoZm91bmQpCisJCXsK KwkJCS8qCisJCQkgKiBJZiB0aGlzIGlzIGEgdmFyaWFibGUgZHJvcHBlZCBieSB0aGUgY3VycmVu dCB0cmFuc2FjdGlvbiwKKwkJCSAqIGlnbm9yZSBpdCBhbmQga2VlcCB0aGUgb2lkIHRvIHJlY2hl Y2sgaW4gdGhlIG5leHQgdHJhbnNhY3Rpb24uCisJCQkgKi8KKwkJCWlmIChmaWx0ZXJfbHhpZCAm JiBzdmFyLT5kcm9wX2x4aWQgPT0gTXlQcm9jLT5seGlkKQorCQkJCWNvbnRpbnVlOworCisJCQlp ZiAoIWlzX3Nlc3Npb25fdmFyaWFibGVfdmFsaWQoc3ZhcikpCisJCQkJcmVtb3ZlX3Nlc3Npb25f dmFyaWFibGUoc3Zhcik7CisJCX0KKworCQkvKgorCQkgKiBJZiBjYWxsZXIgYXNrZWQgdG8gZmls dGVyIHRoZSBsaXN0LCB3ZSBoYXZlIHRvIGNsZWFuIGl0ZW1zIGFzIHRoZXkKKwkJICogYXJlIHBy b2Nlc3NlZC4KKwkJICovCisJCWlmIChmaWx0ZXJfbHhpZCkKKwkJCXhhY3RfcmVjaGVja192YXJp ZHNfc25hcHNob3QgPQorCQkJCQkJCWZvcmVhY2hfZGVsZXRlX2N1cnJlbnQoeGFjdF9yZWNoZWNr X3Zhcmlkc19zbmFwc2hvdCwKKwkJCQkJCQkJCQkJCSAgIGwpOworCX0KKworCS8qCisJICogSWYg Y2FsbGVyIGFzayB0byBmaWx0ZXIgdGhlIGxpc3QsIHNvbWUgaXRlbXMgYXJlIG5vdCBwcm9jZXNz ZWQKKwkgKiBhbmQgd2Ugc2hvdWxkIHRvIG1lcmdlIHRoZXNlIGl0ZW1zIHRvIHhhY3RfcmVjaGVj a192YXJpZHMuCisJICovCisJaWYgKGZpbHRlcl9seGlkKQorCXsKKwkJTWVtb3J5Q29udGV4dCBv bGRjeHQ7CisKKwkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNWYXJpYWJsZU1lbW9y eUNvbnRleHQpOworCisJCXhhY3RfcmVjaGVja192YXJpZHMgPSBsaXN0X2NvbmNhdCh4YWN0X3Jl Y2hlY2tfdmFyaWRzLAorCQkJCQkJCQkJCSAgeGFjdF9yZWNoZWNrX3Zhcmlkc19zbmFwc2hvdCk7 CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJfQorCisJbGlzdF9mcmVlKHhh Y3RfcmVjaGVja192YXJpZHNfc25hcHNob3QpOworfQorCisvKgorICogQ3JlYXRlIHRoZSBoYXNo IHRhYmxlIGZvciBzdG9yaW5nIHNlc3Npb24gdmFyaWFibGVzLgorICovCitzdGF0aWMgdm9pZAor Y3JlYXRlX3Nlc3Npb252YXJzX2hhc2h0YWJsZXModm9pZCkKK3sKKwlIQVNIQ1RMCQl2YXJzX2N0 bDsKKworCUFzc2VydCghc2Vzc2lvbnZhcnMpOworCisJLyogc2V0IGNhbGxiYWNrcyAqLworCWlm ICghU1ZhcmlhYmxlTWVtb3J5Q29udGV4dCkKKwl7CisJCS8qIFJlYWQgc2ludmFsIG1lc3NhZ2Vz ICovCisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFZBUklBQkxFT0lELAorCQkJCQkJ CQkJICBwZ192YXJpYWJsZV9jYWNoZV9jYWxsYmFjaywKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsK KworCQkvKiBXZSBuZWVkIG91ciBvd24gbG9uZyBsaXZlZCBtZW1vcnkgY29udGV4dCAqLworCQlT VmFyaWFibGVNZW1vcnlDb250ZXh0ID0KKwkJCUFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1v cnlDb250ZXh0LAorCQkJCQkJCQkgICJzZXNzaW9uIHZhcmlhYmxlcyIsCisJCQkJCQkJCSAgQUxM T0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCX0KKworCUFzc2VydChTVmFyaWFibGVNZW1vcnlD b250ZXh0KTsKKworCW1lbXNldCgmdmFyc19jdGwsIDAsIHNpemVvZih2YXJzX2N0bCkpOworCXZh cnNfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKKwl2YXJzX2N0bC5lbnRyeXNpemUgPSBzaXpl b2YoU1ZhcmlhYmxlRGF0YSk7CisJdmFyc19jdGwuaGN4dCA9IFNWYXJpYWJsZU1lbW9yeUNvbnRl eHQ7CisKKwlBc3NlcnQoc2Vzc2lvbnZhcnMgPT0gTlVMTCk7CisKKwlzZXNzaW9udmFycyA9IGhh c2hfY3JlYXRlKCJTZXNzaW9uIHZhcmlhYmxlcyIsIDY0LCAmdmFyc19jdGwsCisJCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKK30KKworLyoKKyAqIEFzc2ln biBzb21lIGNvbnRlbnQgdG8gdGhlIHNlc3Npb24gdmFyaWFibGUuIEl0J3MgY29waWVkIHRvCisg KiBTVmFyaWFibGVNZW1vcnlDb250ZXh0IGlmIG5lY2Vzc2FyeS4KKyAqCisgKiBpbml0X21vZGUg aXMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHZhcmlhYmxlIHNob3VsZCBiZSBpbml0 aWFsaXplZAorICogYnkgdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBpZiBhbnkuIFRoaXMgaXMgdGhl IG9ubHkgY2FzZSB3aGVyZSB3ZSBhbGxvdyB0aGUKKyAqIG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11 dGFibGUgdmFyaWFibGVzIHdpdGggZGVmYXVsdCBleHByZXNzaW9uLgorICoKKyAqIElmIGFueSBl cnJvciBoYXBwZW5zLCB0aGUgZXhpc3RpbmcgdmFsdWUgc2hvdWxkbid0IGJlIG1vZGlmaWVkLgor ICovCitzdGF0aWMgdm9pZAorc2V0X3Nlc3Npb25fdmFyaWFibGUoU1ZhcmlhYmxlIHN2YXIsIERh dHVtIHZhbHVlLCBib29sIGlzbnVsbCwgYm9vbCBpbml0X21vZGUpCit7CisJRGF0dW0JCW5ld3Zh bCA9IHZhbHVlOworCisJQXNzZXJ0KHN2YXIgJiYgT2lkSXNWYWxpZChzdmFyLT50eXBpZCkpOwor CisJLyogRG9uJ3QgYWxsb3cgYXNzaWdubWVudCBvZiBudWxsIHRvIE5PVCBOVUxMIHZhcmlhYmxl ICovCisJaWYgKGlzbnVsbCAmJiBzdmFyLT5pc19ub3RfbnVsbCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCSBlcnJt c2coIm51bGwgdmFsdWUgaXMgbm90IGFsbG93ZWQgZm9yIE5PVCBOVUxMIHNlc3Npb24gdmFyaWFi bGUgXCIlcy4lc1wiIiwKKwkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJp YWJsZV9uYW1lc3BhY2Uoc3Zhci0+dmFyaWQpKSwKKwkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxl X25hbWUoc3Zhci0+dmFyaWQpKSkpOworCisJLyoKKwkgKiBEb24ndCBhbGxvdyB0aGUgbW9kaWZp Y2F0aW9uIG9mIGFuIGltbXV0YWJsZSBzZXNzaW9uIHZhcmlhYmxlIHRoYXQKKwkgKiBhbHJlYWR5 IGhhcyBhbiBhc3NpZ25lZCB2YWx1ZSAocG9zc2libHkgTlVMTCkgb3IgaGFzIGEgZGVmYXVsdAor CSAqIGV4cHJlc3Npb24gKGluIHdoaWNoIGNhc2UgdGhlIHZhbHVlIHNob3VsZCBhbHdheXMgYmUg dGhlIHJlc3VsdCBvZgorCSAqIGRlZmF1bHQgZXhwcmVzc2lvbiBldmFsdWF0aW9uKSB1bmxlc3Mg dGhlIHZhcmlhYmxlIGlzIGJlaW5nIGluaXRpYWxpemVkLgorCSAqLworCWlmICghaW5pdF9tb2Rl ICYmCisJCShzdmFyLT5pc19pbW11dGFibGUgJiYKKwkJIChzdmFyLT5pc192YWxpZCB8fCBzdmFy LT5oYXNfZGVmZXhwcikpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RVJST1JfSU5fQVNTSUdOTUVOVCksCisJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBcIiVz LiVzXCIgaXMgZGVjbGFyZWQgSU1NVVRBQkxFIiwKKwkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShn ZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2Uoc3Zhci0+dmFyaWQpKSwKKwkJCQkJCWdldF9z ZXNzaW9uX3ZhcmlhYmxlX25hbWUoc3Zhci0+dmFyaWQpKSkpOworCisJaWYgKCFpc251bGwpCisJ eworCQlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTVmFyaWFi bGVNZW1vcnlDb250ZXh0KTsKKworCQluZXd2YWwgPSBkYXR1bUNvcHkodmFsdWUsIHN2YXItPnR5 cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OworCX0KKwllbHNlCisJeworCQkvKiBUaGUgY2FsbGVyIHNob3VsZG4ndCBoYXZlIHByb3ZpZGVk IGFueSByZWFsIHZhbHVlLiAqLworCQlBc3NlcnQodmFsdWUgPT0gKERhdHVtKSAwKTsKKwl9CisK KwlmcmVlX3Nlc3Npb25fdmFyaWFibGVfdmFsdWUoc3Zhcik7CisKKwlzdmFyLT52YWx1ZSA9IG5l d3ZhbDsKKworCXN2YXItPmlzbnVsbCA9IGlzbnVsbDsKKwlzdmFyLT5mcmVldmFsID0gbmV3dmFs ICE9IHZhbHVlOworCXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKworCS8qCisJICogWFhYIFdoaWxl IHVubGlrZWx5LCBhbiBlcnJvciBoZXJlIGlzIHBvc3NpYmxlLgorCSAqIEl0IHdvdWxkbid0IGxl YWsgbWVtb3J5IGFzIHRoZSBhbGxvY2F0ZWQgY2h1bmsgaGFzIGFscmVhZHkgYmVlbgorCSAqIGNv cnJlY3RseSBhc3NpZ25lZCB0byB0aGUgc2Vzc2lvbiB2YXJpYWJsZSwgYnV0IHdvdWxkIGNvbnRy YWRpY3QgdGhpcworCSAqIGZ1bmN0aW9uIGNvbnRyYWN0LCB3aGljaCBpcyB0aGF0IHRoaXMgZnVu Y3Rpb24gc2hvdWxkIGVpdGhlciBzdWNjZWVkIG9yCisJICogbGVhdmUgdGhlIGN1cnJlbnQgdmFs dWUgdW50b3VjaGVkLgorCSAqLworCWVsb2coREVCVUcxLCAic2Vzc2lvbiB2YXJpYWJsZSBcIiVz LiVzXCIgKG9pZDoldSkgaGFzIG5ldyB2YWx1ZSIsCisJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0 X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHN2YXItPnZhcmlkKSksCisJCSBnZXRfc2Vzc2lv bl92YXJpYWJsZV9uYW1lKHN2YXItPnZhcmlkKSwKKwkJIHN2YXItPnZhcmlkKTsKK30KKworLyoK KyAqIEluaXRpYWxpemUgc2Vzc2lvbiB2YXJpYWJsZSBzdmFyIGZyb20gdmFyaWFibGUgdmFyCisg Ki8KK3N0YXRpYyB2b2lkCitpbml0X3Nlc3Npb25fdmFyaWFibGUoU1ZhcmlhYmxlIHN2YXIsIFZh cmlhYmxlICp2YXIpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwlBc3NlcnQoT2lkSXNW YWxpZCh2YXItPm9pZCkpOworCisJc3Zhci0+dmFyaWQgPSB2YXItPm9pZDsKKwlzdmFyLT5jcmVh dGVfbHNuID0gdmFyLT5jcmVhdGVfbHNuOworCisJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwlzdmFy LT5mcmVldmFsID0gZmFsc2U7CisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisKKwlzdmFyLT50 eXBpZCA9IHZhci0+dHlwaWQ7CisJZ2V0X3R5cGxlbmJ5dmFsKHZhci0+dHlwaWQsICZzdmFyLT50 eXBsZW4sICZzdmFyLT50eXBieXZhbCk7CisKKwlzdmFyLT5pc19kb21haW4gPSAoZ2V0X3R5cHR5 cGUodmFyLT50eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pOworCXN2YXItPmRvbWFpbl9jaGVja19l eHRyYSA9IE5VTEw7CisJc3Zhci0+ZG9tYWluX2NoZWNrX2V4dHJhX2x4aWQgPSBJbnZhbGlkTG9j YWxUcmFuc2FjdGlvbklkOworCisJc3Zhci0+ZHJvcF9seGlkID0gSW52YWxpZExvY2FsVHJhbnNh Y3Rpb25JZDsKKworCXN2YXItPmlzX25vdF9udWxsID0gdmFyLT5pc19ub3RfbnVsbDsKKwlzdmFy LT5pc19pbW11dGFibGUgPSB2YXItPmlzX2ltbXV0YWJsZTsKKwlzdmFyLT5oYXNfZGVmZXhwciA9 IHZhci0+aGFzX2RlZmV4cHI7CisKKwkvKiB0aGUgdmFsdWUgb2YgdmFyaWFibGUgaXMgbm90IGtu b3duIHlldCAqLworCXN2YXItPmlzX3ZhbGlkID0gZmFsc2U7CisKKwlzdmFyLT5oYXNodmFsdWUg PSBHZXRTeXNDYWNoZUhhc2hWYWx1ZTEoVkFSSUFCTEVPSUQsCisJCQkJCQkJCQkJCU9iamVjdElk R2V0RGF0dW0odmFyLT5vaWQpKTsKKworCXN2YXItPmVveF9yZXNldCA9IHZhci0+ZW94YWN0aW9u ID09IFZBUklBQkxFX0VPWF9SRVNFVCB8fAorCQl2YXItPmVveGFjdGlvbiA9PSBWQVJJQUJMRV9F T1hfRFJPUDsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlv bkNvbnRleHQpOworCisJaWYgKHN2YXItPmVveF9yZXNldCkKKwkJeGFjdF9yZXNldF92YXJpZHMg PSBsYXBwZW5kX29pZCh4YWN0X3Jlc2V0X3ZhcmlkcywgdmFyLT5vaWQpOworCisJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBTZWFyY2ggYSBzZWVzaW9uIHZhcmlh YmxlIGluIHRoZSBoYXNoIHRhYmxlIGdpdmVuIGl0cyBvaWQuIElmIGl0CisgKiBkb2Vzbid0IGV4 aXN0LCB0aGVuIGluc2VydCBpdCAoYW5kIGNhbGN1bGF0ZSBkZWZleHByIGlmIGl0IGV4aXN0cyku CisgKgorICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBwZXJtaXNzaW9uIGNoZWNr cy4KKyAqCisgKiBBcyBzaWRlIGVmZmVjdCB0aGlzIGZ1bmN0aW9uIGFjcXVpcmVzIEFjY2Vzc1No YXJlTG9jayBvbgorICogcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlIHVudGlsIHRoZSBlbmQgb2Yg dGhlIHRyYW5zYWN0aW9uLgorICovCitzdGF0aWMgU1ZhcmlhYmxlCitwcmVwYXJlX3ZhcmlhYmxl X2Zvcl9yZWFkaW5nKE9pZCB2YXJpZCkKK3sKKwlTVmFyaWFibGUJc3ZhcjsKKwlWYXJpYWJsZQl2 YXI7CisJYm9vbAkJZm91bmQ7CisKKwl2YXIub2lkID0gSW52YWxpZE9pZDsKKworCWlmICghc2Vz c2lvbnZhcnMpCisJCWNyZWF0ZV9zZXNzaW9udmFyc19oYXNodGFibGVzKCk7CisKKwkvKiBQcm90 ZWN0IHVzZWQgc2Vzc2lvbiB2YXJpYWJsZSBhZ2FpbnN0IGRyb3AgdW50aWwgdHJhbnNhY3Rpb24g ZW5kICovCisJTG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDAs IEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGF0IGFsbCBlbnRyaWVz IGluIHNlc3Npb252YXJzIGhhc2ggdGFibGUgYXJlIHZhbGlkLCBidXQKKwkgKiBrZWVwaW5nIHZh cmlhYmxlcyBkcm9wcGVkIGJ5IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgorCSAqLworCXN5bmNf c2Vzc2lvbnZhcnNfYWxsKHRydWUpOworCisJc3ZhciA9IChTVmFyaWFibGUpIGhhc2hfc2VhcmNo KHNlc3Npb252YXJzLCAmdmFyaWQsCisJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisK KwkvKiBSZXR1cm4gY29udGVudCBpZiBpdCBpcyBhdmFpbGFibGUgYW5kIHZhbGlkICovCisJaWYg KCFmb3VuZCB8fCAhc3Zhci0+aXNfdmFsaWQpCisJeworCQkvKiBXZSBuZWVkIHRvIGxvYWQgZGVm ZXhwci4gKi8KKwkJSW5pdFZhcmlhYmxlKCZ2YXIsIHZhcmlkLCBmYWxzZSk7CisKKwkJaWYgKCFm b3VuZCkKKwkJeworCQkJaW5pdF9zZXNzaW9uX3ZhcmlhYmxlKHN2YXIsICZ2YXIpOworCisJCQll bG9nKERFQlVHMSwgInNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIChvaWQ6JXUpIGhhcyBuZXcg ZW50cnkgaW4gbWVtb3J5IChlbWl0dGVkIGJ5IFJFQUQpIiwKKwkJCQkgZ2V0X25hbWVzcGFjZV9u YW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCSBnZXRfc2Vz c2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSwKKwkJCQkgdmFyaWQpOworCQl9CisKKwkJLyoKKwkJ ICogUmFpc2UgYW4gZXJyb3IgaWYgdGhpcyBpcyBhIE5PVCBOVUxMIHZhcmlhYmxlIHdpdGhvdXQg ZGVmYXVsdAorCQkgKiBleHByZXNzaW9uLgorCQkgKi8KKwkJaWYgKHZhci5pc19ub3RfbnVsbCAm JiAhdmFyLmRlZmV4cHIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCQkgZXJybXNnKCJudWxsIHZhbHVlIGlzIG5v dCBhbGxvd2VkIGZvciBOT1QgTlVMTCBzZXNzaW9uIHZhcmlhYmxlIFwiJXMuJXNcIiIsCisJCQkJ CQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJp ZCkpLAorCQkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUodmFyaWQpKSwKKwkJCQkJIGVy cmRldGFpbCgiVGhlIHNlc3Npb24gdmFyaWFibGUgd2FzIG5vdCBpbml0aWFsaXplZCB5ZXQuIikp KTsKKworCQlpZiAoc3Zhci0+aGFzX2RlZmV4cHIpCisJCXsKKwkJCURhdHVtCQl2YWx1ZSA9IChE YXR1bSkgMDsKKwkJCWJvb2wJCWlzbnVsbDsKKwkJCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsK KwkJCUV4cHIJICAgKmRlZmV4cHI7CisJCQlFeHByU3RhdGUgICpkZWZleHByczsKKwkJCU1lbW9y eUNvbnRleHQgb2xkY3h0OworCisJCQkvKiBQcmVwYXJlIGRlZmF1bHQgZXhwciAqLworCQkJZXN0 YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCisJCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJCQlkZWZleHByID0gZXhwcmVzc2lv bl9wbGFubmVyKChFeHByICopIHZhci5kZWZleHByKTsKKwkJCWRlZmV4cHJzID0gRXhlY0luaXRF eHByKGRlZmV4cHIsIE5VTEwpOworCQkJdmFsdWUgPSBFeGVjRXZhbEV4cHJTd2l0Y2hDb250ZXh0 KGRlZmV4cHJzLAorCQkJCQkJCQkJCQkgIEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSwK KwkJCQkJCQkJCQkJICAmaXNudWxsKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7CisKKwkJCS8qIFN0b3JlIHJlc3VsdCBiZWZvcmUgcmVsZWFzaW5nIEV4ZWN1dG9yIG1lbW9y eSAqLworCQkJc2V0X3Nlc3Npb25fdmFyaWFibGUoc3ZhciwgdmFsdWUsIGlzbnVsbCwgdHJ1ZSk7 CisKKwkJCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJCX0KKwkJZWxzZQorCQkJc2V0X3Nl c3Npb25fdmFyaWFibGUoc3ZhciwgKERhdHVtKSAwLCB0cnVlLCB0cnVlKTsKKwl9CisKKwkvKgor CSAqIEFsdGhvdWdoIHRoZSB2YWx1ZSBvZiBkb21haW4gdHlwZSBzaG91bGQgYmUgdmFsaWQgKGl0 IGlzIGNoZWNrZWQgd2hlbgorCSAqIGl0IGlzIGFzc2lnbmVkIHRvIHNlc3Npb24gdmFyaWFibGUp LCB3ZSBoYXZlIHRvIGNoZWNrIHJlbGF0ZWQKKwkgKiBjb25zdHJhaW50cyBlYWNoIHRpbWUgd2Ug YWNjZXNzIHRoZSB2YXJpYWJsZS4gSXQgY2FuIGJlIG1vcmUgZXhwZW5zaXZlCisJICogdGhhbiBp biBQTC9wZ1NRTCwgYXMgUEwvcGdTUUwgZm9yY2VzIGRvbWFpbiBjaGVja3Mgb25seSB3aGVuIHRo ZSB2YWx1ZSBpcyBhc3NpZ25lZAorCSAqIHRvIHRoZSB2YXJpYWJsZSBvciB3aGVuIHRoZSB2YWx1 ZSBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9uLgorCSAqIEhvd2V2ZXIsIGRvbWFpbiB0eXBlcyBo YXZlIGEgY29uc3RyYWludCBjYWNoZSBzbyBpdCdzIG5vdCB0b28gbXVjaAorCSAqIGV4cGVuc2l2 ZS4uCisJICovCisJaWYgKHN2YXItPmlzX2RvbWFpbikKKwl7CisJCS8qCisJCSAqIFN0b3JlIGRv bWFpbl9jaGVjayBleHRyYSBpbiBUb3BUcmFuc2FjdGlvbkNvbnRleHQuIFdoZW4gd2UgYXJlIGlu CisJCSAqIG90aGVyIHRyYW5zYWN0aW9uLCB0aGUgZG9tYWluX2NoZWNrX2V4dHJhIGNhY2hlIGlz IG5vdCB2YWxpZAorCQkgKiBhbnltb3JlLgorCQkgKi8KKwkJaWYgKHN2YXItPmRvbWFpbl9jaGVj a19leHRyYV9seGlkICE9IE15UHJvYy0+bHhpZCkKKwkJCXN2YXItPmRvbWFpbl9jaGVja19leHRy YSA9IE5VTEw7CisKKwkJZG9tYWluX2NoZWNrKHN2YXItPnZhbHVlLCBzdmFyLT5pc251bGwsCisJ CQkJCSBzdmFyLT50eXBpZCwgJnN2YXItPmRvbWFpbl9jaGVja19leHRyYSwKKwkJCQkJIFRvcFRy YW5zYWN0aW9uQ29udGV4dCk7CisKKwkJc3Zhci0+ZG9tYWluX2NoZWNrX2V4dHJhX2x4aWQgPSBN eVByb2MtPmx4aWQ7CisJfQorCisJcmV0dXJuIHN2YXI7Cit9CisKKy8qCisgKiBTdG9yZSB0aGUg Z2l2ZW4gdmFsdWUgaW4gYW4gU1ZhcmlhYmxlLCBhbmQgY2FjaGUgaXQgaWYgbm90IGFscmVhZHkg cHJlc2VudC4KKyAqCisgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRvaW5nIHBlcm1pc3Np b24gY2hlY2tzLgorICoKKyAqIEFzIHNpZGUgZWZmZWN0IHRoaXMgZnVuY3Rpb24gYWNxdWlyZXMg QWNjZXNzU2hhcmVMb2NrIG9uCisgKiByZWxhdGVkIHNlc3Npb24gdmFyaWFibGUgdW50aWwgdGhl IGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCisgKi8KK3ZvaWQKK1NldFNlc3Npb25WYXJpYWJsZShP aWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCkKK3sKKwlTVmFyaWFibGUJc3ZhcjsK Kwlib29sCQlmb3VuZDsKKworCWlmICghc2Vzc2lvbnZhcnMpCisJCWNyZWF0ZV9zZXNzaW9udmFy c19oYXNodGFibGVzKCk7CisKKwkvKiBQcm90ZWN0IHVzZWQgc2Vzc2lvbiB2YXJpYWJsZSBhZ2Fp bnN0IGRyb3AgdW50aWwgdHJhbnNhY3Rpb24gZW5kICovCisJTG9ja0RhdGFiYXNlT2JqZWN0KFZh cmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDAsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKgorCSAq IE1ha2Ugc3VyZSB0aGF0IGFsbCBlbnRyaWVzIGluIHNlc3Npb252YXJzIGhhc2ggdGFibGUgYXJl IHZhbGlkLCBidXQKKwkgKiBrZWVwaW5nIHZhcmlhYmxlcyBkcm9wcGVkIGJ5IHRoZSBjdXJyZW50 IHRyYW5zYWN0aW9uLgorCSAqLworCXN5bmNfc2Vzc2lvbnZhcnNfYWxsKHRydWUpOworCisJc3Zh ciA9IChTVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNlc3Npb252YXJzLCAmdmFyaWQsCisJCQkJCQkJ CSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJVmFyaWFibGUJ dmFyOworCisJCS8qIFdlIGRvbid0IG5lZWQgdG8ga25vdyBkZWZleHByIGhlcmUgKi8KKwkJSW5p dFZhcmlhYmxlKCZ2YXIsIHZhcmlkLCB0cnVlKTsKKwkJaW5pdF9zZXNzaW9uX3ZhcmlhYmxlKHN2 YXIsICZ2YXIpOworCisJCWVsb2coREVCVUcxLCAic2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVzXCIg KG9pZDoldSkgaGFzIG5ldyBlbnRyeSBpbiBtZW1vcnkgKGVtaXR0ZWQgYnkgV1JJVEUpIiwKKwkJ CSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHN2YXIt PnZhcmlkKSksCisJCQkgZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZShzdmFyLT52YXJpZCksCisJ CQkgdmFyaWQpOworCX0KKworCS8qCisJICogVGhpcyBzaG91bGQgZWl0aGVyIHN1Y2NlZWQgb3Ig ZmFpbCB3aXRob3V0IGNoYW5naW5nIHRoZSBjdXJyZW50bHkgc3RvcmVkCisJICogdmFsdWUuCisJ ICovCisJc2V0X3Nlc3Npb25fdmFyaWFibGUoc3ZhciwgdmFsdWUsIGlzTnVsbCwgZmFsc2UpOwor fQorCisvKgorICogV3JhcHBlciBhcm91bmQgU2V0U2Vzc2lvblZhcmlhYmxlIGFmdGVyIGNoZWNr aW5nIGZvciBjb3JyZWN0IHBlcm1pc3Npb24uCisgKi8KK3ZvaWQKK1NldFNlc3Npb25WYXJpYWJs ZVdpdGhTZWN1cml0eUNoZWNrKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsKQor eworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisKKwkvKgorCSAqIElzIGNhbGxlciBhbGxvd2VkIHRv IHVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJsZT8KKwkgKi8KKwlhY2xyZXN1bHQgPSBvYmplY3Rf YWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCB2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9VUERB VEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFj bHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlk KSk7CisKKwlTZXRTZXNzaW9uVmFyaWFibGUodmFyaWQsIHZhbHVlLCBpc051bGwpOworfQorCisv KgorICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHZhbHVlIG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxl IHNwZWNpZmllZCBieSBpdHMgb2lkLgorICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkb2lu ZyBwZXJtaXNzaW9uIGNoZWNrcy4KKyAqLworRGF0dW0KK0NvcHlTZXNzaW9uVmFyaWFibGUoT2lk IHZhcmlkLCBib29sICppc051bGwsIE9pZCAqdHlwaWQpCit7CisJU1ZhcmlhYmxlCXN2YXI7CisJ RGF0dW0JCXJlc3VsdDsKKworCXN2YXIgPSBwcmVwYXJlX3ZhcmlhYmxlX2Zvcl9yZWFkaW5nKHZh cmlkKTsKKwlBc3NlcnQoc3ZhciAhPSBOVUxMICYmIHN2YXItPmlzX3ZhbGlkKTsKKworCSp0eXBp ZCA9IHN2YXItPnR5cGlkOworCisJLyogZm9yY2UgY29weSBvZiBub24gTlVMTCB2YWx1ZSAqLwor CWlmICghc3Zhci0+aXNudWxsKQorCXsKKwkJcmVzdWx0ID0gZGF0dW1Db3B5KHN2YXItPnZhbHVl LCBzdmFyLT50eXBieXZhbCwgc3Zhci0+dHlwbGVuKTsKKwkJKmlzTnVsbCA9IGZhbHNlOworCX0K KwllbHNlCisJeworCQlyZXN1bHQgPSAoRGF0dW0pIDA7CisJCSppc051bGwgPSB0cnVlOworCX0K KworCXJldHVybiAoRGF0dW0pIHJlc3VsdDsKK30KKworLyoKKyAqIFJldHVybnMgYSBjb3B5IG9m IHRocyB2YWx1ZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgaXRzIG9pZAor ICogd2l0aCBhIGNoZWNrIG9mIHRoZSBleHBlY3RlZCB0eXBlLiBMaWtlIHByZXZpb3VzIENvcHlT ZXNzaW9uVmFyaWFibGUsIHRoZQorICogY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBw ZXJtaXNzaW9uIGNoZWNrcy4KKyAqLworRGF0dW0KK0NvcHlTZXNzaW9uVmFyaWFibGVXaXRoVHlw ZUNoZWNrKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgZXhwZWN0ZWRfdHlwaWQpCit7CisJ U1ZhcmlhYmxlCXN2YXI7CisJRGF0dW0JCXJlc3VsdDsKKworCXN2YXIgPSBwcmVwYXJlX3Zhcmlh YmxlX2Zvcl9yZWFkaW5nKHZhcmlkKTsKKwlBc3NlcnQoc3ZhciAhPSBOVUxMICYmIHN2YXItPmlz X3ZhbGlkKTsKKworCWlmIChleHBlY3RlZF90eXBpZCAhPSBzdmFyLT50eXBpZCkKKwkJZWxvZyhF UlJPUiwgInR5cGUgb2YgdmFyaWFibGUgXCIlcy4lc1wiIGlzIGRpZmZlcmVudCB0aGFuIGV4cGVj dGVkIiwKKwkJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNw YWNlKHZhcmlkKSksCisJCQkgZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpOworCisJ aWYgKCFzdmFyLT5pc251bGwpCisJeworCQlyZXN1bHQgPSBkYXR1bUNvcHkoc3Zhci0+dmFsdWUs IHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCQkqaXNOdWxsID0gZmFsc2U7CisJfQor CWVsc2UKKwl7CisJCXJlc3VsdCA9IChEYXR1bSkgMDsKKwkJKmlzTnVsbCA9IHRydWU7CisJfQor CisJcmV0dXJuIChEYXR1bSkgcmVzdWx0OworfQorCisvKgorICogRG8gdGhlIG5lY2Vzc2FyeSB3 b3JrIHRvIHNldHVwIGxvY2FsIG1lbW9yeSBtYW5hZ2VtZW50IG9mIGEgbmV3CisgKiB2YXJpYWJs ZS4KKyAqCisgKiBDYWxsZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBjcmVhdGVkIHRoZSBuZWNlc3Nh cnkgZW50cnkgaW4gY2F0YWxvZworICogYW5kIG1hZGUgdGhlbSB2aXNpYmxlLgorICovCit2b2lk CitTZXNzaW9uVmFyaWFibGVDcmVhdGVQb3N0cHJvY2VzcyhPaWQgdmFyaWQsIGNoYXIgZW94YWN0 aW9uKQoreworCS8qCisJICogRm9yIHRlbXBvcmFyeSB2YXJpYWJsZXMsIHdlIG5lZWQgdG8gY3Jl YXRlIGEgbmV3IGVuZCBvZiB4YWN0IGFjdGlvbiB0bworCSAqIGVuc3VyZSBkZWxldGlvbiBmcm9t IGNhdGFsb2cuCisJICovCisJaWYgKGVveGFjdGlvbiA9PSBWQVJJQUJMRV9FT1hfRFJPUCkKKwl7 CisJCUFzc2VydChpc1RlbXBOYW1lc3BhY2UoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNl KHZhcmlkKSkpOworCisJCXJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24odmFy aWQsIFNWQVJfT05fQ09NTUlUX0RST1ApOworCX0KK30KKworLyoKKyAqIEhhbmRsZSB0aGUgbG9j YWwgbWVtb3J5IGNsZWFudXAgZm9yIGEgRFJPUCBWQVJJQUJMRSBjb21tYW5kLgorICoKKyAqIENh bGxlciBzaG91bGQgdGFrZSBjYXJlIG9mIHJlbW92aW5nIHRoZSBwZ192YXJpYWJsZSBlbnRyeSBm aXJzdC4KKyAqLwordm9pZAorU2Vzc2lvblZhcmlhYmxlRHJvcFBvc3Rwcm9jZXNzKE9pZCB2YXJp ZCkKK3sKKwkvKgorCSAqIFRoZSBlbnRyeSB3YXMgcmVtb3ZlZCBmcm9tIGNhdGFsb2cgYWxyZWFk eSwgd2UgbXVzdCBub3QgZG8gaXQKKwkgKiBhZ2FpbiBhdCBlbmQgb2YgeGFjdCB0aW1lLgorCSAq LworCXVucmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbih2YXJpZCwgU1ZBUl9P Tl9DT01NSVRfRFJPUCk7CisKKwlpZiAoc2Vzc2lvbnZhcnMpCisJeworCQlib29sCQlmb3VuZDsK KwkJU1ZhcmlhYmxlCXN2YXIgPSAoU1ZhcmlhYmxlKSBoYXNoX3NlYXJjaChzZXNzaW9udmFycywg JnZhcmlkLAorCQkJCQkJCQkJCQkJICAgSEFTSF9GSU5ELCAmZm91bmQpOworCisJCWlmIChmb3Vu ZCkKKwkJeworCQkJLyoKKwkJCSAqIFNhdmUgdGhlIGN1cnJlbnQgdG9wIGxldmVsIGxvY2FsIHRy YW5zYWN0aW9uIGlkIHRvIG1ha2Ugc3VyZSB3ZQorCQkJICogZG9uJ3QgYXV0b21hdGljYWxseSBy ZW1vdmUgdGhlIGxvY2FsIHZhcmlhYmxlIHN0b3JhZ2UgaW4KKwkJCSAqIHN5bmNfc2Vzc2lvbnZh cnNfYWxsLCBhcyB0aGUgRFJPUCBWQVJJQUJMRSB3aWxsIHNlbmQgYW4KKwkJCSAqIGludmFsaWRh dGlvbiBtZXNzYWdlLgorCQkJICovCisJCQlBc3NlcnQoTG9jYWxUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPmx4aWQpKTsKKwkJCXN2YXItPmRyb3BfbHhpZCA9IE15UHJvYy0+bHhpZDsKKwor CQkJLyoKKwkJCSAqIEZvciB2YXJpYWJsZXMgdGhhdCBhcmUgbm90IE9OIFRSQU5TQUNUSU9OIEVO RCBSRVNFVCwgd2UgbmVlZCB0bworCQkJICogcmVnaXN0ZXIgYW4gU1ZBUl9PTl9DT01NSVRfUkVT RVQgYWN0aW9uIHRvIGZyZWUgdGhlIGxvY2FsCisJCQkgKiBtZW1vcnkgZm9yIHRoaXMgdmFyaWFi bGUgd2hlbiB0aGUgdG9wIGxldmVsIHRyYW5zYWN0aW9uCisJCQkgKiBpcyBjb21taXR0ZWQgKHdl IGRvbid0IG5lZWQgdG8gd2FpdCBmb3Igc2ludmFsCisJCQkgKiBtZXNzYWdlKS4gIFRoZSBjbGVh bnVwIGFjdGlvbiBmb3Igb25lIHNlc3Npb24gdmFyaWFibGUgY2FuIGJlCisJCQkgKiBkdXBsaWNh dGVkIGluIHRoZSBhY3Rpb24gbGlzdCB3aXRob3V0IGNhdXNpbmcgYW55IHByb2JsZW0sIHNvIHdl CisJCQkgKiBkb24ndCBuZWVkIHRvIGVuc3VyZSB1bmlxdWVuZXNzLiAgV2UgbmVlZCBhIGRpZmZl cmVudCBhY3Rpb24KKwkJCSAqIGZyb20gUkVTRVQsIGJlY2F1c2UgUkVTRVQgaXMgZXhlY3V0ZWQg b24gYW55IHRyYW5zYWN0aW9uIGVuZCwKKwkJCSAqIGJ1dCB3ZSB3YW50IHRvIGV4ZWN1dGUgdGhp cyBjbGVhbnVwIG9ubHkgd2hlbiB0aGUgY3VycmVudAorCQkJICogdHJhbnNhY3Rpb24gd2lsbCBi ZSBjb21taXR0ZWQuIFRoaXMgYWN0aW9uIGNhbiBiZSByZXZlcnRlZCBieQorCQkJICogQUJPUlQg b2YgRFJPUCBWQVJJQUJMRSBjb21tYW5kLgorCQkJICovCisJCQlpZiAoIXN2YXItPmVveF9yZXNl dCkKKwkJCQlyZWdpc3Rlcl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0aW9uKHZhcmlkLAorCQkJ CQkJCQkJCQkJCSAgU1ZBUl9PTl9DT01NSVRfUkVTRVQpOworCQl9CisJfQorfQorCisvKgorICog RmFzdCBkcm9wIG9mIHRoZSBjb21wbGV0ZSBjb250ZW50IG9mIGFsbCBzZXNzaW9uIHZhcmlhYmxl cyBoYXNoIHRhYmxlLCBhbmQKKyAqIGNsZWFudXAgb2YgYW55IGxpc3QgdGhhdCB3b3VsZG4ndCBi ZSByZWxldmFudCBhbnltb3JlLgorICogVGhpcyBpcyB1c2VkIGJ5IERJU0NBUkQgVkFSSUFCTEVT IChhbmQgRElTQ0FSRCBBTEwpIGNvbW1hbmQuCisgKi8KK3ZvaWQKK1Jlc2V0U2Vzc2lvblZhcmlh Ymxlcyh2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCisJLyogRGVzdHJveSBoYXNoIHRhYmxl IGFuZCByZXNldCByZWxhdGVkIG1lbW9yeSBjb250ZXh0ICovCisJaWYgKHNlc3Npb252YXJzKQor CXsKKwkJaGFzaF9kZXN0cm95KHNlc3Npb252YXJzKTsKKwkJc2Vzc2lvbnZhcnMgPSBOVUxMOwor CX0KKworCS8qIFJlbGVhc2UgbWVtb3J5IGFsbG9jYXRlZCBieSBzZXNzaW9uIHZhcmlhYmxlcyAq LworCWlmIChTVmFyaWFibGVNZW1vcnlDb250ZXh0ICE9IE5VTEwpCisJCU1lbW9yeUNvbnRleHRS ZXNldChTVmFyaWFibGVNZW1vcnlDb250ZXh0KTsKKworCS8qCisJICogVGhlcmUgaXNuJ3QgYW55 IHNlc3Npb24gdmFyaWFibGUgbGVmdCwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gcmV0YWluIHRoZQor CSAqIE9OIENPTU1JVCBEUk9QIGFjdGlvbnMgaWYgYW55LgorCSAqLworCWZvcmVhY2gobGMsIHhh Y3Rfb25fY29tbWl0X2FjdGlvbnMpCisJeworCQlTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqeGFj dF9haSA9CisJCQkoU1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW0gKikgbGZpcnN0KGxjKTsKKworCQlp ZiAoeGFjdF9haS0+YWN0aW9uID09IFNWQVJfT05fQ09NTUlUX0RST1ApCisJCQljb250aW51ZTsK KworCQlwZnJlZSh4YWN0X2FpKTsKKwkJeGFjdF9vbl9jb21taXRfYWN0aW9ucyA9IGZvcmVhY2hf ZGVsZXRlX2N1cnJlbnQoeGFjdF9vbl9jb21taXRfYWN0aW9ucywKKwkJCQkJCQkJCQkJCQkgICBs Yyk7CisJfQorCisJLyogV2Ugc2hvdWxkIGNsZWFuIHhhY3RfcmVzZXRfdmFyaWRzICovCisJbGlz dF9mcmVlKHhhY3RfcmVzZXRfdmFyaWRzKTsKKwl4YWN0X3Jlc2V0X3ZhcmlkcyA9IE5JTDsKKwor CS8qCisJICogeGFjdF9yZWNoZWNrX3ZhcmlkcyBpcyBzdG9yZWQgaW4gU1ZhcmlhYmxlTWVtb3J5 Q29udGV4dCwgc28gaXQgaGFzCisJICogYWxyZWFkeSBiZWVuIGZyZWVkLCBqdXN0IHJlc2V0IHRo ZSBsaXN0LgorCSAqLworCXhhY3RfcmVjaGVja192YXJpZHMgPSBOSUw7Cit9CisKKy8qCisgKiBQ ZXJmb3JtIHRoZSBuZWNlc3Nhcnkgd29yayBmb3IgT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUIGFu ZCBPTiBDT01NSVQgRFJPUAorICogc2Vzc2lvbiB2YXJpYWJsZXMuCisgKiBJZiB0aGUgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkLCBhbHNvIHByb2Nlc3MgdGhlIGRlbGF5ZWQgbWVtb3J5IGNsZWFu dXAgb2YKKyAqIGxvY2FsIERST1AgVkFSSUFCTEUgYW5kIHByb2Nlc3MgYWxsIHBlbmRpbmcgcmVj aGVja3MuCiAgKi8KIHZvaWQKIEF0UHJlRU9YYWN0X1Nlc3Npb25WYXJpYWJsZShib29sIGlzQ29t bWl0KQogewogCUxpc3RDZWxsICAgKmw7CiAKLQlmb3JlYWNoKGwsIHhhY3RfZHJvcF9hY3Rpb25z KQorCS8qCisJICogQ2xlYW4gbWVtb3J5IGZvciBhbGwgT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VU ICB2YXJpYWJsZXMuIERvIGl0IGZpcnN0LAorCSAqIGFzIGl0IHJlZHVjZXMgdGhlIG92ZXJoZWFk IG9mIHRoZSBSRUNIRUNLIGFjdGlvbiBsaXN0LgorCSAqLworCWZvcmVhY2gobCwgeGFjdF9yZXNl dF92YXJpZHMpCiAJewotCQlTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqeGFjdF9haSA9Ci0JCShT VmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqKSBsZmlyc3QobCk7CisJCXJlbW92ZV9zZXNzaW9uX3Zh cmlhYmxlX2J5X2lkKGxmaXJzdF9vaWQobCkpOworCX0KIAotCQkvKiBJdGVyYXRlIG9ubHkgb3Zl ciBlbnRyaWVzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgKi8KLQkJaWYgKHhhY3RfYWktPmRlbGV0 aW5nX3N1YmlkID09IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKQorCS8qIFdlIGNhbiBub3cgY2xl YW4geGFjdF9yZXNldF92YXJpZHMgKi8KKwlsaXN0X2ZyZWUoeGFjdF9yZXNldF92YXJpZHMpOwor CXhhY3RfcmVzZXRfdmFyaWRzID0gTklMOworCisJaWYgKGlzQ29tbWl0ICYmIHhhY3Rfb25fY29t bWl0X2FjdGlvbnMpCisJeworCQlmb3JlYWNoKGwsIHhhY3Rfb25fY29tbWl0X2FjdGlvbnMpCiAJ CXsKKwkJCVNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICp4YWN0X2FpID0KKwkJCQkoU1ZhcmlhYmxl WEFjdEFjdGlvbkl0ZW0gKikgbGZpcnN0KGwpOworCisJCQkvKiBJdGVyYXRlIG9ubHkgb3ZlciBl bnRyaWVzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgKi8KKwkJCWlmICh4YWN0X2FpLT5kZWxldGlu Z19zdWJpZCAhPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCkKKwkJCQljb250aW51ZTsKIAogCQkJ LyoKLQkJCSAqIE9OIENPTU1JVCBEUk9QIGlzIGFsbG93ZWQgb25seSBmb3IgdGVtcCBzZXNzaW9u IHZhcmlhYmxlcy4gU28KLQkJCSAqIHdlIHNob3VsZCBleHBsaWNpdGx5IGRlbGV0ZSBvbmx5IHdo ZW4gY3VycmVudCB0cmFuc2FjdGlvbiB3YXMKLQkJCSAqIGNvbW1pdHRlZC4gV2hlbiBpdCdzIHJv bGxiYWNrLCB0aGVuIHNlc3Npb24gdmFyaWFibGUgaXMgcmVtb3ZlZAotCQkJICogYXV0b21hdGlj YWxseS4KKwkJCSAqIE9OIENPTU1JVCBEUk9QIGlzIGFsbG93ZWQgb25seSBmb3IgdGVtcCBzZXNz aW9uIHZhcmlhYmxlcy4KKwkJCSAqIFNvIHdlIHNob3VsZCBleHBsaWNpdGx5IGRlbGV0ZSBvbmx5 IHdoZW4gdGhlIGN1cnJlbnQKKwkJCSAqIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gV2hlbiBp dCdzIHJvbGxiYWNrZWQsIHRoZSBzZXNzaW9uCisJCQkgKiB2YXJpYWJsZSBpcyByZW1vdmVkIGF1 dG9tYXRpY2FsbHkuCiAJCQkgKi8KLQkJCWlmIChpc0NvbW1pdCkKKwkJCWlmICh4YWN0X2FpLT5h Y3Rpb24gPT0gU1ZBUl9PTl9DT01NSVRfRFJPUCkKIAkJCXsKIAkJCQlPYmplY3RBZGRyZXNzIG9i amVjdDsKIApAQCAtMTkxLDEwICsxMTUwLDMwIEBAIEF0UHJlRU9YYWN0X1Nlc3Npb25WYXJpYWJs ZShib29sIGlzQ29tbWl0KQogCQkJCWVsb2coREVCVUcxLCAic2Vzc2lvbiB2YXJpYWJsZSAob2lk OiV1KSB3aWxsIGJlIGRlbGV0ZWQgKGZvcmNlZCBieSBTVkFSX09OX0NPTU1JVF9EUk9QIGFjdGlv bikiLAogCQkJCQkgeGFjdF9haS0+dmFyaWQpOwogCisJCQkJLyoKKwkJCQkgKiBJZiB0aGUgdmFy aWFibGUgd2FzIGxvY2FsbHkgc2V0LCB0aGUgbWVtb3J5IHdpbGwgYmUKKwkJCQkgKiBhdXRvbWF0 aWNhbGx5IGNsZWFuZWQgdXAgd2hlbiB3ZSBwcm9jZXNzIHRoZSB1bmRlcmx5aW5nCisJCQkJICog c2hhcmVkIGludmFsaWRhdGlvbiBmb3IgdGhpcyBkcm9wLiAgVGhlcmUgY2FuJ3QgYmUgYSByZWNo ZWNrCisJCQkJICogYWN0aW9uIGZvciB0aGlzIHZhcmlhYmxlLCBzbyB0aGVyZSdzIG5vdGhpbmcg dG8gZ2FpbgorCQkJCSAqIGV4cGxpY2l0bHkgcmVtb3ZpbmcgaXQgaGVyZS4KKwkJCQkgKi8KIAkJ CQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9DQVNDQURFLAogCQkJCQkJCQlQRVJGT1JN X0RFTEVUSU9OX0lOVEVSTkFMIHwKIAkJCQkJCQkJUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsK IAkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdoZW4gd2UgcHJvY2VzcyBEUk9Q IFZBUklBQkxFIHN0YXRlbWVudCBpc3N1ZWQgYnkgdGhlCisJCQkJICogY3VycmVudCB0cmFuc2Fj dGlvbiwgd2UgY3JlYXRlIGFuIFNWQVJfT05fQ09NTUlUX1JFU0VUIHhhY3QKKwkJCQkgKiBhY3Rp b24uIFdlIHdhbnQgdG8gcHJvY2VzcyB0aGlzIGFjdGlvbiBvbmx5IHdoZW4gcmVsYXRlZAorCQkJ CSAqIHRyYW5zYWN0aW9uIGlzIGNvbW1pdGVkICh3aGVuIERST1AgVkFSSUFCTEUgc3RhdGVtZW50 CisJCQkJICogc3VjZXNzZnVsbHkgcHJvY2Vzc2VkKSBhcyB3ZSBuZWVkIHRvIHByZXNlcnZlIHRo ZSB2YXJpYWJsZQorCQkJCSAqIGNvbnRlbnQgaWYgdGhlIHRyYW5zYWN0aW9uIHRoYXQgaXNzdWVk IHRoZSBEUk9QIFZBUkFJQkxFCisJCQkJICogc3RhdGVtZW50IGlzIHJvbGxiYWNrZWQuCisJCQkJ ICovCisJCQkJcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGVfYnlfaWQoeGFjdF9haS0+dmFyaWQpOwor CQkJfQogCQl9CiAJfQogCkBAIC0yMDIsMTIgKzExODEsMjYgQEAgQXRQcmVFT1hhY3RfU2Vzc2lv blZhcmlhYmxlKGJvb2wgaXNDb21taXQpCiAJICogQW55IGRyb3AgYWN0aW9uIGxlZnQgaXMgYW4g ZW50cnkgdGhhdCB3YXMgdW5yZWdpc3RlcmVkIGFuZCBub3QKIAkgKiByb2xsYmFja2VkLCBzbyB3 ZSBjYW4gc2ltcGx5IHJlbW92ZSB0aGVtLgogCSAqLwotCWxpc3RfZnJlZV9kZWVwKHhhY3RfZHJv cF9hY3Rpb25zKTsKLQl4YWN0X2Ryb3BfYWN0aW9ucyA9IE5JTDsKKwlsaXN0X2ZyZWVfZGVlcCh4 YWN0X29uX2NvbW1pdF9hY3Rpb25zKTsKKwl4YWN0X29uX2NvbW1pdF9hY3Rpb25zID0gTklMOwor CisJLyoKKwkgKiBXZSBwcm9jZXNzIHRoZSBsaXN0IG9mIHJlY2hlY2sgbGFzdCBmb3IgcGVyZm9y bWFuY2UgcmVhc29uLHRoZSBwcmV2aW91cworCSAqIHN0ZXBzIG1pZ2h0IHJlbW92ZSBlbnRyaWVz IGZyb20gdGhlIGhhc2ggdGFibGUuCisJICogV2UgbmVlZCBjYXRhbG9nIGFjY2VzcyB0byBwcm9j ZXNzIHRoZSByZWNoZWNrLCBzbyB0aGlzIGNhbiBvbmx5IGJlIGRvbmUKKwkgKiBpZiB0aGUgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkLiAgT3RoZXJ3aXNlLCB3ZSBqdXN0IGtlZXAgdGhlIHJlY2hl Y2sKKwkgKiBsaXN0IGFzLWlzIGFuZCBpdCB3aWxsIGJlIHByb2Nlc3NlZCBhdCB0aGUgbmV4dCAo Y29tbWl0dGVkKSB0cmFuc2FjdGlvbi4KKwkgKi8KKwlpZiAoaXNDb21taXQgJiYgeGFjdF9yZWNo ZWNrX3ZhcmlkcykKKwl7CisJCUFzc2VydChzZXNzaW9udmFycyk7CisKKwkJc3luY19zZXNzaW9u dmFyc19hbGwoZmFsc2UpOworCX0KIH0KIAogLyoKLSAqIFBvc3Qtc3ViY29tbWl0IG9yIHBvc3Qt c3ViYWJvcnQgY2xlYW51cCBvZiB4YWN0IGFjdGlvbiBsaXN0LgorICogUG9zdC1zdWJjb21taXQg b3IgcG9zdC1zdWJhYm9ydCBjbGVhbnVwIG9mIHhhY3Rfb25fY29tbWl0X2FjdGlvbnMgbGlzdC4K ICAqCiAgKiBEdXJpbmcgc3ViYWJvcnQsIHdlIGNhbiBpbW1lZGlhdGVseSByZW1vdmUgZW50cmll cyBjcmVhdGVkIGR1cmluZyB0aGlzCiAgKiBzdWJ0cmFuc2FjdGlvbi4gRHVyaW5nIHN1YmNvbW1p dCwganVzdCB0cmFuc2ZlciBlbnRyaWVzIG1hcmtlZCBkdXJpbmcKQEAgLTIyMCwyNCArMTIxMywx MzAgQEAgQXRFT1N1YlhhY3RfU2Vzc2lvblZhcmlhYmxlKGJvb2wgaXNDb21taXQsCiB7CiAJTGlz dENlbGwgICAqY3VyX2l0ZW07CiAKLQlmb3JlYWNoKGN1cl9pdGVtLCB4YWN0X2Ryb3BfYWN0aW9u cykKKwlmb3JlYWNoKGN1cl9pdGVtLCB4YWN0X29uX2NvbW1pdF9hY3Rpb25zKQogCXsKIAkJU1Zh cmlhYmxlWEFjdEFjdGlvbkl0ZW0gKnhhY3RfYWkgPQogCQkoU1ZhcmlhYmxlWEFjdEFjdGlvbkl0 ZW0gKikgbGZpcnN0KGN1cl9pdGVtKTsKIAorCQkvKgorCQkgKiBUaGUgc3VidHJhbnNhY3Rpb24g dGhhdCBjcmVhdGVkIHRoaXMgZW50cnkgd2FzIHJvbGxiYWNrZWQsIHdlIGNhbgorCQkgKiByZW1v dmUgaXQuCisJCSAqLwogCQlpZiAoIWlzQ29tbWl0ICYmIHhhY3RfYWktPmNyZWF0aW5nX3N1Ymlk ID09IG15U3ViaWQpCiAJCXsKIAkJCS8qIGN1cl9pdGVtIG11c3QgYmUgcmVtb3ZlZCAqLwotCQkJ eGFjdF9kcm9wX2FjdGlvbnMgPSBmb3JlYWNoX2RlbGV0ZV9jdXJyZW50KHhhY3RfZHJvcF9hY3Rp b25zLCBjdXJfaXRlbSk7CisJCQl4YWN0X29uX2NvbW1pdF9hY3Rpb25zID0gZm9yZWFjaF9kZWxl dGVfY3VycmVudCh4YWN0X29uX2NvbW1pdF9hY3Rpb25zLCBjdXJfaXRlbSk7CiAJCQlwZnJlZSh4 YWN0X2FpKTsKIAkJfQogCQllbHNlCiAJCXsKLQkJCS8qIGN1cl9pdGVtIG11c3QgYmUgcHJlc2Vy dmVkICovCisJCQkvKiBPdGhlcndpc2UgY3VyX2l0ZW0gbXVzdCBiZSBwcmVzZXJ2ZWQgKi8KIAkJ CWlmICh4YWN0X2FpLT5jcmVhdGluZ19zdWJpZCA9PSBteVN1YmlkKQogCQkJCXhhY3RfYWktPmNy ZWF0aW5nX3N1YmlkID0gcGFyZW50U3ViaWQ7CiAJCQlpZiAoeGFjdF9haS0+ZGVsZXRpbmdfc3Vi aWQgPT0gbXlTdWJpZCkKLQkJCQl4YWN0X2FpLT5kZWxldGluZ19zdWJpZCA9IGlzQ29tbWl0ID8g cGFyZW50U3ViaWQgOiBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKKwkJCQl4YWN0X2FpLT5kZWxl dGluZ19zdWJpZCA9IGlzQ29tbWl0ID8gcGFyZW50U3ViaWQKKwkJCQkJCQkJCQkJCSAgIDogSW52 YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJCX0KKwl9Cit9CisKKy8qCisgKiBwZ19zZXNzaW9uX3Zh cmlhYmxlcyAtIGRlc2lnbmVkIGZvciB0ZXN0aW5nCisgKgorICogVGhpcyBpcyBhIGZ1bmN0aW9u IGRlc2lnbmVkIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuICBJdCByZXR1cm5zIHRoZQorICog Y29udGVudCBvZiBzZXNzaW9udmFycyBhcy1pcywgYW5kIGNhbiB0aGVyZWZvcmUgZGlzcGxheSBl bnRyaWVzIGFib3V0CisgKiBzZXNzaW9uIHZhcmlhYmxlcyB0aGF0IHdlcmUgZHJvcHBlZCBidXQg Zm9yIHdoaWNoIHRoaXMgYmFja2VuZCBkaWRuJ3QKKyAqIHByb2Nlc3MgdGhlIHNoYXJlZCBpbnZh bGlkYXRpb25zIHlldC4KKyAqLworRGF0dW0KK3BnX3Nlc3Npb25fdmFyaWFibGVzKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisjZGVmaW5lIE5VTV9QR19TRVNTSU9OX1ZBUklBQkxFU19BVFRTIDEwCisK KwllbG9nKERFQlVHMSwgInBnX3Nlc3Npb25fdmFyaWFibGVzIHN0YXJ0Iik7CisKKwlJbml0TWF0 ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CisKKwlpZiAoc2Vzc2lvbnZhcnMpCisJeworCQlSZXR1 cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87 CisJCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJCVNWYXJpYWJsZQlzdmFyOworCisJCS8qCisJ CSAqIE1ha2Ugc3VyZSB0aGF0IGFsbCBlbnRyaWVzIGluIHNlc3Npb252YXJzIGhhc2ggdGFibGUg YXJlIHZhbGlkLCBidXQKKwkJICoga2VlcGluZyB2YXJpYWJsZXMgZHJvcHBlZCBieSB0aGUgY3Vy cmVudCB0cmFuc2FjdGlvbi4KKwkJICovCisJCXN5bmNfc2Vzc2lvbnZhcnNfYWxsKHRydWUpOwor CisJCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgc2Vzc2lvbnZhcnMpOworCisJCXdoaWxlICgoc3Zh ciA9IChTVmFyaWFibGUpIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJewor CQkJRGF0dW0JCXZhbHVlc1tOVU1fUEdfU0VTU0lPTl9WQVJJQUJMRVNfQVRUU107CisJCQlib29s CQludWxsc1tOVU1fUEdfU0VTU0lPTl9WQVJJQUJMRVNfQVRUU107CisJCQlIZWFwVHVwbGUJdHA7 CisKKwkJCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwkJCW1lbXNldChudWxs cywgMCwgc2l6ZW9mKG51bGxzKSk7CisKKwkJCXZhbHVlc1swXSA9IE9iamVjdElkR2V0RGF0dW0o c3Zhci0+dmFyaWQpOworCQkJdmFsdWVzWzNdID0gT2JqZWN0SWRHZXREYXR1bShzdmFyLT50eXBp ZCk7CisKKwkJCS8qIGNoZWNrIGlmIHNlc3Npb24gdmFyaWFibGUgaXMgdmlzaWJsZSBpbiBzeXN0 ZW0gY2F0YWxvZyAqLworCQkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVj dElkR2V0RGF0dW0oc3Zhci0+dmFyaWQpKTsKKworCQkJLyoKKwkJCSAqIFNlc3Npb252YXJzIGNh biBob2xkIGRhdGEgb2YgdmFyaWFibGVzIHJlbW92ZWQgZnJvbSBjYXRhbG9nLAorCQkJICogKGFu ZCBub3QgcHVyZ2VkKSBhbmQgdGhlbiBuYW1lc3BhY2VuYW1lIGFuZCBuYW1lIGNhbm5vdCBiZSBy ZWFkCisJCQkgKiBmcm9tIGNhdGFsb2cuCisJCQkgKi8KKwkJCWlmIChIZWFwVHVwbGVJc1ZhbGlk KHRwKSkKKwkJCXsKKwkJCQlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm0gPSAoRm9ybV9wZ192YXJp YWJsZSkgR0VUU1RSVUNUKHRwKTsKKworCQkJCS8qIFdoZW4gd2Ugc2VlIGRhdGEgaW4gY2F0YWxv ZyAqLworCQkJCXZhbHVlc1sxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oCisJCQkJCQkJCQkJCQln ZXRfbmFtZXNwYWNlX25hbWUodmFyZm9ybS0+dmFybmFtZXNwYWNlKSk7CisKKwkJCQl2YWx1ZXNb Ml0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpOworCisJ CQkJdmFsdWVzWzRdID0gQ1N0cmluZ0dldFRleHREYXR1bShmb3JtYXRfdHlwZV9iZShzdmFyLT50 eXBpZCkpOworCQkJCXZhbHVlc1s1XSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCQkJdmFsdWVz WzZdID0gQm9vbEdldERhdHVtKHN2YXItPmlzX3ZhbGlkKTsKKworCQkJCXZhbHVlc1s4XSA9IEJv b2xHZXREYXR1bSgKKwkJCQkJCQkJCQkgb2JqZWN0X2FjbGNoZWNrKFZhcmlhYmxlUmVsYXRpb25J ZCwgc3Zhci0+dmFyaWQsCisJCQkJCQkJCQkJCQkJCSBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCkg PT0gQUNMQ0hFQ0tfT0spOworCisJCQkJdmFsdWVzWzldID0gQm9vbEdldERhdHVtKAorCQkJCQkJ CQkJCSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCBzdmFyLT52YXJpZCwKKwkJ CQkJCQkJCQkJCQkJIEdldFVzZXJJZCgpLCBBQ0xfVVBEQVRFKSA9PSBBQ0xDSEVDS19PSyk7CisK KwkJCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJ CQkJICogV2hlbiBzZXNzaW9uIHZhcmlhYmxlIHdhcyByZW1vdmVkIGZyb20gY2F0YWxvZywgYnV0 IHdlCisJCQkJICogaGF2ZW4ndCBwcm9jZXNzZWQgdGhlIGludmxpZGF0aW9uIHlldC4KKwkJCQkg Ki8KKwkJCQludWxsc1sxXSA9IHRydWU7CisJCQkJdmFsdWVzWzJdID0gQ1N0cmluZ0dldFRleHRE YXR1bSgKKwkJCQkJCQkJCQkJCURhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG9p ZG91dCwgc3Zhci0+dmFyaWQpKSk7CisJCQkJdmFsdWVzWzRdID0gUG9pbnRlckdldERhdHVtKAor CQkJCQkJCQkJCQljc3RyaW5nX3RvX3RleHQoZm9ybWF0X3R5cGVfYmUoc3Zhci0+dHlwaWQpKSk7 CisJCQkJdmFsdWVzWzVdID0gQm9vbEdldERhdHVtKHRydWUpOworCQkJCXZhbHVlc1s2XSA9IEJv b2xHZXREYXR1bShzdmFyLT5pc192YWxpZCk7CisJCQkJbnVsbHNbN10gPSB0cnVlOworCQkJCW51 bGxzWzhdID0gdHJ1ZTsKKwkJCX0KKworCQkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5z ZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CiAJCX0KIAl9CisKKwll bG9nKERFQlVHMSwgInBnX3Nlc3Npb25fdmFyaWFibGVzIGVuZCIpOworCisJcmV0dXJuIChEYXR1 bSkgMDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGJmMjU3YTQxYzguLjQ4ODFjMGM5 MGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92 YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC05ODMsNiArOTg0 LDgxIEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJ CQkJc2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CiAJCQkJCQlF eHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJCQlicmVhazsKKworCQkJCQlj YXNlIFBBUkFNX1ZBUklBQkxFOgorCQkJCQkJeworCQkJCQkJCWludAkJCWVzX251bV9zZXNzaW9u X3ZhcmlhYmxlcyA9IDA7CisJCQkJCQkJU2Vzc2lvblZhcmlhYmxlVmFsdWUgKmVzX3Nlc3Npb25f dmFyaWFibGVzID0gTlVMTDsKKworCQkJCQkJCWlmIChzdGF0ZS0+cGFyZW50ICYmIHN0YXRlLT5w YXJlbnQtPnN0YXRlKQorCQkJCQkJCXsKKwkJCQkJCQkJZXNfc2Vzc2lvbl92YXJpYWJsZXMgPSBz dGF0ZS0+cGFyZW50LT5zdGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXM7CisJCQkJCQkJCWVzX251 bV9zZXNzaW9uX3ZhcmlhYmxlcyA9IHN0YXRlLT5wYXJlbnQtPnN0YXRlLT5lc19udW1fc2Vzc2lv bl92YXJpYWJsZXM7CisJCQkJCQkJfQorCisJCQkJCQkJaWYgKGVzX3Nlc3Npb25fdmFyaWFibGVz KQorCQkJCQkJCXsKKwkJCQkJCQkJU2Vzc2lvblZhcmlhYmxlVmFsdWUgKnZhcjsKKworCQkJCQkJ CQkvKgorCQkJCQkJCQkgKiBVc2UgYnVmZmVyZWQgc2Vzc2lvbiB2YXJpYWJsZXMgd2hlbiB0aGUK KwkJCQkJCQkJICogYnVmZmVyIHdpdGggY29waWVkIHZhbHVlcyBpcyBhdmFpYWJsZQorCQkJCQkJ CQkgKiAoc3RhbmRhcmQgcXVlcnkgZXhlY3V0b3IgbW9kZSkKKwkJCQkJCQkJICovCisKKwkJCQkJ CQkJLyogUGFyYW1ldGVyIHNhbml0eSBjaGVja3MuICovCisJCQkJCQkJCWlmIChwYXJhbS0+cGFy YW1pZCA+PSBlc19udW1fc2Vzc2lvbl92YXJpYWJsZXMpCisJCQkJCQkJCQllbG9nKEVSUk9SLCAi cGFyYW1pZCBvZiBQQVJBTV9WQVJJQUJMRSBwYXJhbSBpcyBvdXQgb2YgcmFuZ2UiKTsKKworCQkJ CQkJCQl2YXIgPSAmZXNfc2Vzc2lvbl92YXJpYWJsZXNbcGFyYW0tPnBhcmFtaWRdOworCisJCQkJ CQkJCWlmICh2YXItPnR5cGlkICE9IHBhcmFtLT5wYXJhbXR5cGUpCisJCQkJCQkJCQllbG9nKEVS Uk9SLCAidHlwZSBvZiBidWZmZXJlZCB2YWx1ZSBpcyBkaWZmZXJlbnQgdGhhbiBQQVJBTV9WQVJJ QUJMRSB0eXBlIik7CisKKwkJCQkJCQkJLyoKKwkJCQkJCQkJICogSW4gdGhpcyBjYXNlLCBwYXNz IHRoZSB2YWx1ZSBsaWtlCisJCQkJCQkJCSAqIGEgY29uc3RhbnQuCisJCQkJCQkJCSAqLworCQkJ CQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQ09OU1Q7CisJCQkJCQkJCXNjcmF0Y2guZC5jb25z dHZhbC52YWx1ZSA9IHZhci0+dmFsdWU7CisJCQkJCQkJCXNjcmF0Y2guZC5jb25zdHZhbC5pc251 bGwgPSB2YXItPmlzbnVsbDsKKwkJCQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0 Y2gpOworCQkJCQkJCX0KKwkJCQkJCQllbHNlCisJCQkJCQkJeworCQkJCQkJCQlBY2xSZXN1bHQJ YWNscmVzdWx0OworCQkJCQkJCQlPaWQJCQl2YXJpZCA9IHBhcmFtLT5wYXJhbXZhcmlkOworCQkJ CQkJCQlPaWQJCQl2YXJ0eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKKworCQkJCQkJCQkvKgorCQkJ CQkJCQkgKiBXaGVuIHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBkaXJlY3RseQorCQkJCQkJ CQkgKiB3aXRob3V0IHF1ZXJ5IGV4ZWN1dG9yIHN0YXJ0IChwbHBnc3FsIHNpbXBsZQorCQkJCQkJ CQkgKiBleHByIGV2YWx1YXRpb24pLCB0aGVuIHRoZSBhcnJheSBlc19zZXNzaW9uX3ZhcmlhYmxl cworCQkJCQkJCQkgKiBpcyBudWxsLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byB1c2UgZGlyZWN0 CisJCQkJCQkJCSAqIGFjY2VzcyB0byBzZXNzaW9uIHZhcmlhYmxlcy4gVGhlIHZhbHVlcyBhcmUK KwkJCQkJCQkJICogbm90IHByb3RlY3RlZCBieSB1c2luZyBjb3B5LCBidXQgaXQgaXMgbm90CisJ CQkJCQkJCSAqIHByb2JsZW0gKHdlIGRvbid0IG5lZWQgdG8gZW11bGF0ZSBzdGFiaWxpdHkKKwkJ CQkJCQkJICogb2YgdGhlIHZhbHVlKS4KKwkJCQkJCQkJICoKKwkJCQkJCQkJICogSW4gdGhpcyBj YXNlIHdlIHNob3VsZCB0byBkbyBhY2xjaGVjaywgYmVjYXVzZQorCQkJCQkJCQkgKiB1c3VhbCBh Y2xjaGVjayBmcm9tIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQKKwkJCQkJCQkJICogaXMgbm90IGV4 ZWN1dGVkIGluIHRoaXMgY2FzZS4gRm9ydHVuYXRlbHkKKwkJCQkJCQkJICogaXQgaXMganVzdCBv bmNlIHBlciB0cmFuc2FjdGlvbi4KKwkJCQkJCQkJICovCisJCQkJCQkJCWFjbHJlc3VsdCA9IG9i amVjdF9hY2xjaGVjayhWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLAorCQkJCQkJCQkJCQkJCQkJ R2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOworCQkJCQkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENI RUNLX09LKQorCQkJCQkJCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFC TEUsCisJCQkJCQkJCQkJCQkgICBnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSk7CisK KwkJCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1BBUkFNX1ZBUklBQkxFOworCQkJCQkJCQlz Y3JhdGNoLmQudnBhcmFtLnZhcmlkID0gdmFyaWQ7CisJCQkJCQkJCXNjcmF0Y2guZC52cGFyYW0u dmFydHlwZSA9IHZhcnR5cGU7CisJCQkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3Jh dGNoKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQlicmVhazsKKwogCQkJCQljYXNlIFBBUkFN X0VYVEVSTjoKIAogCQkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCmlu ZGV4IDdjYzQ0M2VjNTIuLmM3ZDMwOWE3ZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJ bnRlcnAuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5j ZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAj aW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtNDQ5LDYgKzQ1MCw3IEBAIEV4ZWNJbnRlcnBFeHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkm JkNBU0VfRUVPUF9QQVJBTV9FWEVDLAogCQkmJkNBU0VfRUVPUF9QQVJBTV9FWFRFUk4sCiAJCSYm Q0FTRV9FRU9QX1BBUkFNX0NBTExCQUNLLAorCQkmJkNBU0VfRUVPUF9QQVJBTV9WQVJJQUJMRSwK IAkJJiZDQVNFX0VFT1BfQ0FTRV9URVNUVkFMLAogCQkmJkNBU0VfRUVPUF9NQUtFX1JFQURPTkxZ LAogCQkmJkNBU0VfRUVPUF9JT0NPRVJDRSwKQEAgLTEwODcsNiArMTA4OSwyMSBAQCBFeGVjSW50 ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlz bnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX1BBUkFNX1ZBUklB QkxFKQorCQl7CisJCQkvKgorCQkJICogZGlyZWN0IGFjY2VzcyB0byBzZXNzaW9uIHZhcmlhYmxl ICh3aXRob3V0IGJ1ZmZlcmluZykuCisJCQkgKiBCZWNhdXNlIHJldHVybmVkIHZhbHVlIGNhbiBi ZSB1c2VkICh3aXRob3V0IGFuIGFzc2lnbmVtZW50KQorCQkJICogYWZ0ZXIgdGhlIHJlZmVyZW5j ZWQgc2Vzc2lvbiB2YXJpYWJsZXMgaXMgdXBkYXRlZCwgd2UgaGF2ZQorCQkJICogdG8gcmV0dXJu IGNvcHkgb2Ygc3RvcmVkIHZhbHVlIGV2ZXJ5IHRpbWUuIFRoaXMgaXMgbm90IGFuCisJCQkgKiBp c3N1ZSBmb3IgbG9jYWwgKHBscGdzcWwpIHZhcmlhYmxlcy4KKwkJCSAqLworCQkJKm9wLT5yZXN2 YWx1ZSA9IENvcHlTZXNzaW9uVmFyaWFibGVXaXRoVHlwZUNoZWNrKG9wLT5kLnZwYXJhbS52YXJp ZCwKKwkJCQkJCQkJCQkJCQkJCSBvcC0+cmVzbnVsbCwKKwkJCQkJCQkJCQkJCQkJCSBvcC0+ZC52 cGFyYW0udmFydHlwZSk7CisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJRUVPX0NBU0UoRUVPUF9D QVNFX1RFU1RWQUwpCiAJCXsKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAwMTg2 YmU0NTJjLi5hNDA3YjUzMDM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQ4LDYgKzQ4 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvbWF0dmlldy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKKyNpbmNsdWRl ICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rl YnVnLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmb3Jl aWduL2Zkd2FwaS5oIgpAQCAtMjAxLDYgKzIwMiw2MyBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUFzc2VydChxdWVyeURlc2MtPnNv dXJjZVRleHQgIT0gTlVMTCk7CiAJZXN0YXRlLT5lc19zb3VyY2VUZXh0ID0gcXVlcnlEZXNjLT5z b3VyY2VUZXh0OwogCisJLyoKKwkgKiBUaGUgZXhlY3V0b3IgZG9lc24ndCB3b3JrIHdpdGggc2Vz c2lvbiB2YXJpYWJsZXMgZGlyZWN0bHkuIFZhbHVlcyBvZgorCSAqIHJlbGF0ZWQgc2Vzc2lvbiB2 YXJpYWJsZXMgYXJlIGNvcGllZCB0byBkZWRpY2F0ZWQgYXJyYXksIGFuZCB0aGlzIGFycmF5CisJ ICogaXMgcGFzc2VkIHRvIGV4ZWN1dG9yLgorCSAqLworCWlmIChxdWVyeURlc2MtPm51bV9zZXNz aW9uX3ZhcmlhYmxlcyA+IDApCisJeworCQkvKgorCQkgKiBXaGVuIGEgcGFyYWxsZWwgcXVlcnkg bmVlZHMgdG8gYWNjZXNzIHF1ZXJ5IHBhcmFtZXRlcnMgKGluY2x1ZGluZworCQkgKiByZWxhdGVk IHNlc3Npb24gdmFyaWFibGVzKSwgdGhlbiByZWxhdGVkIHNlc3Npb24gdmFyaWFibGVzIGFyZQor CQkgKiByZXN0b3JlZCAoZGVzZXJpYWxpemVkKSBpbiBxdWVyeURlc2MgYWxyZWFkeS4gU28ganVz dCBwdXNoIHBvaW50ZXIKKwkJICogb2YgdGhpcyBhcnJheSB0byBleGVjdXRvcidzIGVzdGF0ZS4K KwkJICovCisJCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOworCQllc3RhdGUtPmVzX3Nlc3Np b25fdmFyaWFibGVzID0gcXVlcnlEZXNjLT5zZXNzaW9uX3ZhcmlhYmxlczsKKwkJZXN0YXRlLT5l c19udW1fc2Vzc2lvbl92YXJpYWJsZXMgPSBxdWVyeURlc2MtPm51bV9zZXNzaW9uX3ZhcmlhYmxl czsKKwl9CisJZWxzZSBpZiAocXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+c2Vzc2lvblZhcmlhYmxl cykKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCQlpbnQJCQluU2Vzc2lvblZhcmlhYmxlczsKKwkJ aW50CQkJaSA9IDA7CisKKwkJLyoKKwkJICogSW4gdGhpcyBjYXNlLCB0aGUgcXVlcnkgdXNlcyBz ZXNzaW9uIHZhcmlhYmxlcywgYnV0IHdlIGhhdmUgdG8KKwkJICogcHJlcGFyZSB0aGUgYXJyYXkg d2l0aCBwYXNzZWQgdmFsdWVzIChvZiB1c2VkIHNlc3Npb24gdmFyaWFibGVzKQorCQkgKiBmaXJz dC4KKwkJICovCisJCUFzc2VydCghSXNQYXJhbGxlbFdvcmtlcigpKTsKKwkJblNlc3Npb25WYXJp YWJsZXMgPSBsaXN0X2xlbmd0aChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5zZXNzaW9uVmFyaWFi bGVzKTsKKworCQkvKiBDcmVhdGUgdGhlIGFycmF5IHVzZWQgZm9yIHBhc3NpbmcgdmFsdWVzIG9m IHVzZWQgc2Vzc2lvbiB2YXJpYWJsZXMgKi8KKwkJZXN0YXRlLT5lc19zZXNzaW9uX3ZhcmlhYmxl cyA9IChTZXNzaW9uVmFyaWFibGVWYWx1ZSAqKQorCQkJcGFsbG9jKG5TZXNzaW9uVmFyaWFibGVz ICogc2l6ZW9mKFNlc3Npb25WYXJpYWJsZVZhbHVlKSk7CisKKwkJLyogRmlsbCB0aGUgYXJyYXkg Ki8KKwkJZm9yZWFjaChsYywgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+c2Vzc2lvblZhcmlhYmxl cykKKwkJeworCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwkJCU9pZAkJCXZhcmlkID0gbGZpcnN0 X29pZChsYyk7CisKKwkJCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhWYXJpYWJsZVJlbGF0 aW9uSWQsIHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisJCQlpZiAoYWNscmVzdWx0 ICE9IEFDTENIRUNLX09LKQorCQkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZB UklBQkxFLAorCQkJCQkJCSAgIGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUodmFyaWQpKTsKKwor CQkJZXN0YXRlLT5lc19zZXNzaW9uX3ZhcmlhYmxlc1tpXS52YXJpZCA9IHZhcmlkOworCQkJZXN0 YXRlLT5lc19zZXNzaW9uX3ZhcmlhYmxlc1tpXS52YWx1ZSA9IENvcHlTZXNzaW9uVmFyaWFibGUo dmFyaWQsCisJCQkJCQkJCQkJCQkJCQkJCQkmZXN0YXRlLT5lc19zZXNzaW9uX3ZhcmlhYmxlc1tp XS5pc251bGwsCisJCQkJCQkJCQkJCQkJCQkJCQkmZXN0YXRlLT5lc19zZXNzaW9uX3ZhcmlhYmxl c1tpXS50eXBpZCk7CisKKwkJCWkrKzsKKwkJfQorCisJCWVzdGF0ZS0+ZXNfbnVtX3Nlc3Npb25f dmFyaWFibGVzID0gblNlc3Npb25WYXJpYWJsZXM7CisJfQorCiAJLyoKIAkgKiBGaWxsIGluIHRo ZSBxdWVyeSBlbnZpcm9ubWVudCwgaWYgYW55LCBmcm9tIHF1ZXJ5RGVzYy4KIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggY2MyYjhjY2FiNy4uNjRlM2I2NmU3MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyLDggKzEyLDkgQEAKICAqIHdvcmtl cnMgYW5kIGVuc3VyaW5nIHRoYXQgdGhlaXIgc3RhdGUgZ2VuZXJhbGx5IG1hdGNoZXMgdGhhdCBv ZiB0aGUKICAqIGxlYWRlcjsgc2VlIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5w YXJhbGxlbCBmb3IgZGV0YWlscy4KICAqIEhvd2V2ZXIsIHdlIG11c3Qgc2F2ZSBhbmQgcmVzdG9y ZSByZWxldmFudCBleGVjdXRvciBzdGF0ZSwgc3VjaCBhcwotICogYW55IFBhcmFtTGlzdEluZm8g YXNzb2NpYXRlZCB3aXRoIHRoZSBxdWVyeSwgYnVmZmVyL1dBTCB1c2FnZSBpbmZvLCBhbmQKLSAq IHRoZSBhY3R1YWwgcGxhbiB0byBiZSBwYXNzZWQgZG93biB0byB0aGUgd29ya2VyLgorICogYW55 IFBhcmFtTGlzdEluZm8gYXNzb2NpYXRlZCB3aXRoIHRoZSBxdWVyeSwgYnVmZmVyL1dBTCB1c2Fn ZSBpbmZvLAorICogc2Vzc2lvbiB2YXJpYWJsZXMgYnVmZmVyLCBhbmQgdGhlIGFjdHVhbCBwbGFu IHRvIGJlIHBhc3NlZCBkb3duIHRvCisgKiB0aGUgd29ya2VyLgogICoKICAqIElERU5USUZJQ0FU SU9OCiAgKgkgIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC02Niw2ICs2 Nyw3IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQlVSU5UNjRDT05TVCgweEUw MDAwMDAwMDAwMDAwMDgpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9O IFVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwOSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dB TF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxM RUxfS0VZX1NFU1NJT05fVkFSSUFCTEVTCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikK IAogI2RlZmluZSBQQVJBTExFTF9UVVBMRV9RVUVVRV9TSVpFCQk2NTUzNgogCkBAIC0xNDAsNiAr MTQyLDEyIEBAIHN0YXRpYyBib29sIEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9u KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogLyogSGVscGVyIGZ1bmN0aW9uIHRoYXQgcnVucyBpbiB0 aGUgcGFyYWxsZWwgd29ya2VyLiAqLwogc3RhdGljIERlc3RSZWNlaXZlciAqRXhlY1BhcmFsbGVs R2V0UmVjZWl2ZXIoZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsKIAorLyogSGVscGVy IGZ1bmN0aW9ucyB0aGF0IGNhbiBwYXNzIHZhbHVlcyBvZiBzZXNzaW9uIHZhcmlhYmxlcyAqLwor c3RhdGljIFNpemUgRXN0aW1hdGVTZXNzaW9uVmFyaWFibGVzKEVTdGF0ZSAqZXN0YXRlKTsKK3N0 YXRpYyB2b2lkIFNlcmlhbGl6ZVNlc3Npb25WYXJpYWJsZXMoRVN0YXRlICplc3RhdGUsIGNoYXIg KipzdGFydF9hZGRyZXNzKTsKK3N0YXRpYyBTZXNzaW9uVmFyaWFibGVWYWx1ZSAqUmVzdG9yZVNl c3Npb25WYXJpYWJsZXMoY2hhciAqKnN0YXJ0X2FkZHJlc3MsCisJCQkJCQkJCQkJCQkJIGludCAq bnVtX3Nlc3Npb25fdmFyaWFibGVzKTsKKwogLyoKICAqIENyZWF0ZSBhIHNlcmlhbGl6ZWQgcmVw cmVzZW50YXRpb24gb2YgdGhlIHBsYW4gdG8gYmUgc2VudCB0byBlYWNoIHdvcmtlci4KICAqLwpA QCAtNTk4LDYgKzYwNiw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAljaGFyCSAgICpwc3RtdF9kYXRhOwogCWNoYXIJICAgKnBz dG10X3NwYWNlOwogCWNoYXIJICAgKnBhcmFtbGlzdGluZm9fc3BhY2U7CisJY2hhcgkgICAqc2Vz c2lvbl92YXJpYWJsZXNfc3BhY2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwogCVdh bFVzYWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9u ICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwpAQCAtNjA3LDYgKzYxNiw3IEBAIEV4ZWNJbml0UGFy YWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlpbnQJCQlp bnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVudGF0aW9uX2xlbiA9 IDA7CiAJaW50CQkJaW5zdHJ1bWVudF9vZmZzZXQgPSAwOworCWludAkJCXNlc3Npb25fdmFyaWFi bGVzX2xlbiA9IDA7CiAJU2l6ZQkJZHNhX21pbnNpemUgPSBkc2FfbWluaW11bV9zaXplKCk7CiAJ Y2hhcgkgICAqcXVlcnlfc3RyaW5nOwogCWludAkJCXF1ZXJ5X2xlbjsKQEAgLTY2Miw2ICs2NzIs MTEgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAq ZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgcGFyYW1s aXN0aW5mb19sZW4pOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAx KTsKIAorCS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIHNlc3Npb24gdmFyaWFibGVz LiAqLworCXNlc3Npb25fdmFyaWFibGVzX2xlbiA9IEVzdGltYXRlU2Vzc2lvblZhcmlhYmxlcyhl c3RhdGUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc2Vzc2lv bl92YXJpYWJsZXNfbGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRv ciwgMSk7CisKIAkvKgogCSAqIEVzdGltYXRlIHNwYWNlIGZvciBCdWZmZXJVc2FnZS4KIAkgKgpA QCAtNzU2LDYgKzc3MSwxMSBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExF TF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFjZSk7CiAJU2VyaWFsaXplUGFy YW1MaXN0KGVzdGF0ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvLCAmcGFyYW1saXN0aW5mb19zcGFjZSk7 CiAKKwkvKiBTdG9yZSBzZXJpYWxpemVkIHNlc3Npb24gdmFyaWFibGVzLiAqLworCXNlc3Npb25f dmFyaWFibGVzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHNlc3Npb25fdmFy aWFibGVzX2xlbik7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfU0VT U0lPTl9WQVJJQUJMRVMsIHNlc3Npb25fdmFyaWFibGVzX3NwYWNlKTsKKwlTZXJpYWxpemVTZXNz aW9uVmFyaWFibGVzKGVzdGF0ZSwgJnNlc3Npb25fdmFyaWFibGVzX3NwYWNlKTsKKwogCS8qIEFs bG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEJ1ZmZlclVzYWdlOyBubyBuZWVkIHRvIGlu aXRpYWxpemUuICovCiAJYnVmdXNhZ2Vfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRv YywKIAkJCQkJCQkJCSAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtl cnMpKTsKQEAgLTE0MDMsNiArMTQyMyw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50 ICpzZWcsIHNobV90b2MgKnRvYykKIAlTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmppdF9pbnN0 cnVtZW50YXRpb247CiAJaW50CQkJaW5zdHJ1bWVudF9vcHRpb25zID0gMDsKIAl2b2lkCSAgICph cmVhX3NwYWNlOworCWNoYXIJICAgKnNlc3Npb252YXJpYWJsZV9zcGFjZTsKIAlkc2FfYXJlYSAg ICphcmVhOwogCVBhcmFsbGVsV29ya2VyQ29udGV4dCBwd2N4dDsKIApAQCAtMTQyOCw2ICsxNDQ5 LDE0IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAlhcmVhX3NwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfRFNBLCBmYWxz ZSk7CiAJYXJlYSA9IGRzYV9hdHRhY2hfaW5fcGxhY2UoYXJlYV9zcGFjZSwgc2VnKTsKIAorCS8q IFJlY29uc3RydWN0IHNlc3Npb24gdmFyaWFibGVzLiAqLworCXNlc3Npb252YXJpYWJsZV9zcGFj ZSA9IHNobV90b2NfbG9va3VwKHRvYywKKwkJCQkJCQkJCQkgICBQQVJBTExFTF9LRVlfU0VTU0lP Tl9WQVJJQUJMRVMsCisJCQkJCQkJCQkJICAgZmFsc2UpOworCXF1ZXJ5RGVzYy0+c2Vzc2lvbl92 YXJpYWJsZXMgPQorCQlSZXN0b3JlU2Vzc2lvblZhcmlhYmxlcygmc2Vzc2lvbnZhcmlhYmxlX3Nw YWNlLAorCQkJCQkJCQkmcXVlcnlEZXNjLT5udW1fc2Vzc2lvbl92YXJpYWJsZXMpOworCiAJLyog U3RhcnQgdXAgdGhlIGV4ZWN1dG9yICovCiAJcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+aml0Rmxh Z3MgPSBmcGVzLT5qaXRfZmxhZ3M7CiAJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGZwZXMtPmVm bGFncyk7CkBAIC0xNDk2LDMgKzE1MjUsMTE3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdt ZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CiAJcmVj ZWl2ZXItPnJEZXN0cm95KHJlY2VpdmVyKTsKIH0KKworLyoKKyAqIEVzdGltYXRlIHRoZSBhbW91 bnQgb2Ygc3BhY2UgcmVxdWlyZWQgdG8gc2VyaWFsaXplIGEgc2Vzc2lvbiB2YXJpYWJsZS4KKyAq Lworc3RhdGljIFNpemUKK0VzdGltYXRlU2Vzc2lvblZhcmlhYmxlcyhFU3RhdGUgKmVzdGF0ZSkK K3sKKwlpbnQJCQlpOworCVNpemUJCXN6ID0gc2l6ZW9mKGludCk7CisKKwlpZiAoZXN0YXRlLT5l c19zZXNzaW9uX3ZhcmlhYmxlcyA9PSBOVUxMKQorCQlyZXR1cm4gc3o7CisKKwlmb3IgKGkgPSAw OyBpIDwgZXN0YXRlLT5lc19udW1fc2Vzc2lvbl92YXJpYWJsZXM7IGkrKykKKwl7CisJCVNlc3Np b25WYXJpYWJsZVZhbHVlICpzdmFydmFsOworCQlPaWQJCQl0eXBlT2lkOworCQlpbnQxNgkJdHlw TGVuOworCQlib29sCQl0eXBCeVZhbDsKKworCQlzdmFydmFsID0gJmVzdGF0ZS0+ZXNfc2Vzc2lv bl92YXJpYWJsZXNbaV07CisKKwkJdHlwZU9pZCA9IHN2YXJ2YWwtPnR5cGlkOworCisJCXN6ID0g YWRkX3NpemUoc3osIHNpemVvZihPaWQpKTsgLyogc3BhY2UgZm9yIHR5cGUgT0lEICovCisKKwkJ Lyogc3BhY2UgZm9yIGRhdHVtL2lzbnVsbCAqLworCQlBc3NlcnQoT2lkSXNWYWxpZCh0eXBlT2lk KSk7CisJCWdldF90eXBsZW5ieXZhbCh0eXBlT2lkLCAmdHlwTGVuLCAmdHlwQnlWYWwpOworCisJ CXN6ID0gYWRkX3NpemUoc3osCisJCQkJCSAgZGF0dW1Fc3RpbWF0ZVNwYWNlKHN2YXJ2YWwtPnZh bHVlLCBzdmFydmFsLT5pc251bGwsIHR5cEJ5VmFsLCB0eXBMZW4pKTsKKwl9CisKKwlyZXR1cm4g c3o7Cit9CisKKy8qCisgKiBTZXJpYWxpemUgYSBzZXNzaW9uIHZhcmlhYmxlcyBidWZmZXIgaW50 byBjYWxsZXItcHJvdmlkZWQgc3RvcmFnZS4KKyAqCisgKiBXZSB3cml0ZSB0aGUgbnVtYmVyIG9m IHBhcmFtZXRlcnMgZmlyc3QsIGFzIGEgNC1ieXRlIGludGVnZXIsIGFuZCB0aGVuCisgKiB3cml0 ZSBkZXRhaWxzIGZvciBlYWNoIHBhcmFtZXRlciBpbiB0dXJuLiAgVGhlIGRldGFpbHMgZm9yIGVh Y2ggcGFyYW1ldGVyCisgKiBjb25zaXN0IG9mIGEgNC1ieXRlIHR5cGUgT0lELCBhbmQgdGhlbiB0 aGUgZGF0dW0gYXMgc2VyaWFsaXplZCBieQorICogZGF0dW1TZXJpYWxpemUoKS4gIFRoZSBjYWxs ZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgdGhlcmUgaXMKKyAqIGVub3VnaCBz dG9yYWdlIHRvIHN0b3JlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3aWxsIGJlIHdyaXR0ZW47 IHVzZQorICogRXN0aW1hdGVTZXNzaW9uVmFyaWFibGVzIHRvIGZpbmQgb3V0IGhvdyBtYW55IHdp bGwgYmUgbmVlZGVkLgorICogKnN0YXJ0X2FkZHJlc3MgaXMgdXBkYXRlZCB0byBwb2ludCB0byB0 aGUgYnl0ZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhvc2UKKyAqIHdyaXR0ZW4uCisgKgorICog UmVzdG9yZVNlc3Npb25WYXJpYWJsZXMgY2FuIGJlIHVzZWQgdG8gcmVjcmVhdGUgYSBzZXNzaW9u IHZhcmlhYmxlIGJ1ZmZlcgorICogYmFzZWQgb24gdGhlIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRp b247CisgKi8KK3N0YXRpYyB2b2lkCitTZXJpYWxpemVTZXNzaW9uVmFyaWFibGVzKEVTdGF0ZSAq ZXN0YXRlLCBjaGFyICoqc3RhcnRfYWRkcmVzcykKK3sKKwlpbnQJCQlucGFyYW1zOworCWludAkJ CWk7CisKKwkvKiBXcml0ZSBudW1iZXIgb2YgcGFyYW1ldGVycy4gKi8KKwlucGFyYW1zID0gZXN0 YXRlLT5lc19udW1fc2Vzc2lvbl92YXJpYWJsZXM7CisJbWVtY3B5KCpzdGFydF9hZGRyZXNzLCAm bnBhcmFtcywgc2l6ZW9mKGludCkpOworCSpzdGFydF9hZGRyZXNzICs9IHNpemVvZihpbnQpOwor CisJLyogV3JpdGUgZWFjaCBwYXJhbWV0ZXIgaW4gdHVybi4gKi8KKwlmb3IgKGkgPSAwOyBpIDwg bnBhcmFtczsgaSsrKQorCXsKKwkJU2Vzc2lvblZhcmlhYmxlVmFsdWUgKnN2YXJ2YWw7CisJCU9p ZAkJCXR5cGVPaWQ7CisJCWludDE2CQl0eXBMZW47CisJCWJvb2wJCXR5cEJ5VmFsOworCisJCXN2 YXJ2YWwgPSAmZXN0YXRlLT5lc19zZXNzaW9uX3ZhcmlhYmxlc1tpXTsKKwkJdHlwZU9pZCA9IHN2 YXJ2YWwtPnR5cGlkOworCisJCS8qIFdyaXRlIHR5cGUgT0lELiAqLworCQltZW1jcHkoKnN0YXJ0 X2FkZHJlc3MsICZ0eXBlT2lkLCBzaXplb2YoT2lkKSk7CisJCSpzdGFydF9hZGRyZXNzICs9IHNp emVvZihPaWQpOworCisJCUFzc2VydChPaWRJc1ZhbGlkKHR5cGVPaWQpKTsKKwkJZ2V0X3R5cGxl bmJ5dmFsKHR5cGVPaWQsICZ0eXBMZW4sICZ0eXBCeVZhbCk7CisKKwkJZGF0dW1TZXJpYWxpemUo c3ZhcnZhbC0+dmFsdWUsIHN2YXJ2YWwtPmlzbnVsbCwgdHlwQnlWYWwsIHR5cExlbiwKKwkJCQkJ ICAgc3RhcnRfYWRkcmVzcyk7CisJfQorfQorCitzdGF0aWMgU2Vzc2lvblZhcmlhYmxlVmFsdWUg KgorUmVzdG9yZVNlc3Npb25WYXJpYWJsZXMoY2hhciAqKnN0YXJ0X2FkZHJlc3MsIGludCAqbnVt X3Nlc3Npb25fdmFyaWFibGVzKQoreworCVNlc3Npb25WYXJpYWJsZVZhbHVlICpzZXNzaW9uX3Zh cmlhYmxlczsKKwlpbnQJCQlpOworCWludAkJCW5wYXJhbXM7CisKKwltZW1jcHkoJm5wYXJhbXMs ICpzdGFydF9hZGRyZXNzLCBzaXplb2YoaW50KSk7CisJKnN0YXJ0X2FkZHJlc3MgKz0gc2l6ZW9m KGludCk7CisKKwkqbnVtX3Nlc3Npb25fdmFyaWFibGVzID0gbnBhcmFtczsKKwlzZXNzaW9uX3Zh cmlhYmxlcyA9IChTZXNzaW9uVmFyaWFibGVWYWx1ZSAqKQorCQlwYWxsb2MobnBhcmFtcyAqIHNp emVvZihTZXNzaW9uVmFyaWFibGVWYWx1ZSkpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJhbXM7 IGkrKykKKwl7CisJCVNlc3Npb25WYXJpYWJsZVZhbHVlICpzdmFydmFsID0gJnNlc3Npb25fdmFy aWFibGVzW2ldOworCisJCS8qIFJlYWQgdHlwZSBPSUQuICovCisJCW1lbWNweSgmc3ZhcnZhbC0+ dHlwaWQsICpzdGFydF9hZGRyZXNzLCBzaXplb2YoT2lkKSk7CisJCSpzdGFydF9hZGRyZXNzICs9 IHNpemVvZihPaWQpOworCisJCS8qIFJlYWQgZGF0dW0vaXNudWxsLiAqLworCQlzdmFydmFsLT52 YWx1ZSA9IGRhdHVtUmVzdG9yZShzdGFydF9hZGRyZXNzLCAmc3ZhcnZhbC0+aXNudWxsKTsKKwl9 CisKKwlyZXR1cm4gc2Vzc2lvbl92YXJpYWJsZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRf ZXhwci5jCmluZGV4IDc3NGRiNTdhZTIuLjRlYzhiYzhkOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xs dm1qaXRfZXhwci5jCkBAIC0xMDczLDYgKzEwNzMsMTIgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhw clN0YXRlICpzdGF0ZSkKIAkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOwog CQkJCWJyZWFrOwogCisJCQljYXNlIEVFT1BfUEFSQU1fVkFSSUFCTEU6CisJCQkJYnVpbGRfRXZh bFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsUGFyYW1WYXJpYWJsZSIsCisJCQkJCQkJCXZfc3RhdGUs IG9wLCB2X2Vjb250ZXh0KTsKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0p OworCQkJCWJyZWFrOworCiAJCQljYXNlIEVFT1BfUEFSQU1fQ0FMTEJBQ0s6CiAJCQkJewogCQkJ CQlMTFZNVHlwZVJlZiB2X2Z1bmN0eXBlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j CmluZGV4IDFlNGRkMjdkYmEuLjQxNTdmNzU1YzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKQEAgLTMyMSw2ICszMjEsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJz ZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlnbG9iLT5s YXN0UGxhbk5vZGVJZCA9IDA7CiAJZ2xvYi0+dHJhbnNpZW50UGxhbiA9IGZhbHNlOwogCWdsb2It PmRlcGVuZHNPblJvbGUgPSBmYWxzZTsKKwlnbG9iLT5zZXNzaW9uVmFyaWFibGVzID0gTklMOwog CiAJLyoKIAkgKiBBc3Nlc3Mgd2hldGhlciBpdCdzIGZlYXNpYmxlIHRvIHVzZSBwYXJhbGxlbCBt b2RlIGZvciB0aGlzIHF1ZXJ5LiBXZQpAQCAtNTM0LDYgKzUzNSw3IEBAIHN0YW5kYXJkX3BsYW5u ZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRp b25zLAogCXJlc3VsdC0+cGFyYW1FeGVjVHlwZXMgPSBnbG9iLT5wYXJhbUV4ZWNUeXBlczsKIAkv KiB1dGlsaXR5U3RtdCBzaG91bGQgYmUgbnVsbCwgYnV0IHdlIG1pZ2h0IGFzIHdlbGwgY29weSBp dCAqLwogCXJlc3VsdC0+dXRpbGl0eVN0bXQgPSBwYXJzZS0+dXRpbGl0eVN0bXQ7CisJcmVzdWx0 LT5zZXNzaW9uVmFyaWFibGVzID0gZ2xvYi0+c2Vzc2lvblZhcmlhYmxlczsKIAlyZXN1bHQtPnN0 bXRfbG9jYXRpb24gPSBwYXJzZS0+c3RtdF9sb2NhdGlvbjsKIAlyZXN1bHQtPnN0bXRfbGVuID0g cGFyc2UtPnN0bXRfbGVuOwogCkBAIC03MDAsNiArNzAyLDEyIEBAIHN1YnF1ZXJ5X3BsYW5uZXIo UGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNlLAogCSAqLwogCXB1bGxfdXBfc3VicXVl cmllcyhyb290KTsKIAorCS8qCisJICogQ2hlY2sgaWYgc29tZSBzdWJxdWVyeSB1c2VzIHNlc3Np b24gdmFyaWFibGUuIEZsYWcgaGFzU2Vzc2lvblZhcmlhYmxlcworCSAqIHNob3VsZCBiZSB0cnVl IGlmIHF1ZXJ5IG9yIHNvbWUgc3VicXVlcnkgdXNlcyBhbnkgc2Vzc2lvbiB2YXJpYWJsZS4KKwkg Ki8KKwlwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlcyhyb290KTsKKwogCS8qCiAJICogSWYg dGhpcyBpcyBhIHNpbXBsZSBVTklPTiBBTEwgcXVlcnksIGZsYXR0ZW4gaXQgaW50byBhbiBhcHBl bmRyZWwuIFdlCiAJICogZG8gdGhpcyBub3cgYmVjYXVzZSBpdCByZXF1aXJlcyBhcHBseWluZyBw dWxsX3VwX3N1YnF1ZXJpZXMgdG8gdGhlIGxlYWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYwppbmRleCBmNmY4YTc5MzU0Li5mMThlZDhlZjlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jCkBAIC0yMTEsNiArMjExLDggQEAgc3RhdGljIExpc3QgKnNldF9yZXR1cm5p bmdfY2xhdXNlX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiBzdGF0aWMgTGlzdCAqc2V0 X3dpbmRvd2FnZ19ydW5jb25kaXRpb25fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCQkJCSAgIExpc3QgKnJ1bmNvbmRpdGlvbiwKIAkJCQkJCQkJCQkJCSAgIFBsYW4gKnBs YW4pOworc3RhdGljIGJvb2wgcHVsbF91cF9oYXNfc2Vzc2lvbl92YXJpYWJsZXNfd2Fsa2VyKE5v ZGUgKm5vZGUsCisJCQkJCQkJCQkJCQkgUGxhbm5lckluZm8gKnJvb3QpOwogCiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgpAQCAtMTI5NCw2ICsxMjk2LDUwIEBAIHNldF9wbGFuX3JlZnMoUGxhbm5l ckluZm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAlyZXR1cm4gcGxhbjsKIH0K IAorLyoKKyAqIFNlYXJjaCB1c2FnZSBvZiBzZXNzaW9uIHZhcmlhYmxlcyBpbiBzdWJxdWVyaWVz CisgKi8KK3ZvaWQKK3B1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzKFBsYW5uZXJJbmZvICpy b290KQoreworCVF1ZXJ5CSAgICpxdWVyeSA9IHJvb3QtPnBhcnNlOworCisJaWYgKHF1ZXJ5LT5o YXNTZXNzaW9uVmFyaWFibGVzKQorCXsKKwkJcm9vdC0+aGFzU2Vzc2lvblZhcmlhYmxlcyA9IHRy dWU7CisJfQorCWVsc2UKKwl7CisJCSh2b2lkKSBxdWVyeV90cmVlX3dhbGtlcihxdWVyeSwKKwkJ CQkJCQkJIHB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzX3dhbGtlciwKKwkJCQkJCQkJICh2 b2lkICopIHJvb3QsIDApOworCX0KK30KKworc3RhdGljIGJvb2wKK3B1bGxfdXBfaGFzX3Nlc3Np b25fdmFyaWFibGVzX3dhbGtlcihOb2RlICpub2RlLCBQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlp ZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKElzQShub2RlLCBRdWVyeSkp CisJeworCQlRdWVyeQkgICAqcXVlcnkgPSAoUXVlcnkgKikgbm9kZTsKKworCQlpZiAocXVlcnkt Pmhhc1Nlc3Npb25WYXJpYWJsZXMpCisJCXsKKwkJCXJvb3QtPmhhc1Nlc3Npb25WYXJpYWJsZXMg PSB0cnVlOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLyogUmVjdXJzZSBpbnRvIHN1YnNl bGVjdHMgKi8KKwkJcmV0dXJuIHF1ZXJ5X3RyZWVfd2Fsa2VyKChRdWVyeSAqKSBub2RlLAorCQkJ CQkJCQkgcHVsbF91cF9oYXNfc2Vzc2lvbl92YXJpYWJsZXNfd2Fsa2VyLAorCQkJCQkJCQkgKHZv aWQgKikgcm9vdCwgMCk7CisJfQorCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUs IHB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzX3dhbGtlciwKKwkJCQkJCQkJICAodm9pZCAq KSByb290KTsKK30KKwogLyoKICAqIHNldF9pbmRleG9ubHlzY2FuX3JlZmVyZW5jZXMKICAqCQlE byBzZXRfcGxhbl9yZWZlcmVuY2VzIHByb2Nlc3Npbmcgb24gYW4gSW5kZXhPbmx5U2NhbgpAQCAt MTkzMSw4ICsxOTc3LDkgQEAgY29weVZhcihWYXIgKnZhcikKICAqIFRoaXMgaXMgY29kZSB0aGF0 IGlzIGNvbW1vbiB0byBhbGwgdmFyaWFudHMgb2YgZXhwcmVzc2lvbi1maXhpbmcuCiAgKiBXZSBt dXN0IGxvb2sgdXAgb3BlcmF0b3Igb3Bjb2RlIGluZm8gZm9yIE9wRXhwciBhbmQgcmVsYXRlZCBu b2RlcywKICAqIGFkZCBPSURzIGZyb20gcmVnY2xhc3MgQ29uc3Qgbm9kZXMgaW50byByb290LT5n bG9iLT5yZWxhdGlvbk9pZHMsIGFuZAotICogYWRkIFBsYW5JbnZhbEl0ZW1zIGZvciB1c2VyLWRl ZmluZWQgZnVuY3Rpb25zIGludG8gcm9vdC0+Z2xvYi0+aW52YWxJdGVtcy4KLSAqIFdlIGFsc28g ZmlsbCBpbiBjb2x1bW4gaW5kZXggbGlzdHMgZm9yIEdST1VQSU5HKCkgZXhwcmVzc2lvbnMuCisg KiBhZGQgUGxhbkludmFsSXRlbXMgZm9yIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIHNlc3Np b24gdmFyaWFibGVzIGludG8KKyAqIHJvb3QtPmdsb2ItPmludmFsSXRlbXMuICBXZSBhbHNvIGZp bGwgaW4gY29sdW1uIGluZGV4IGxpc3RzIGZvciBHUk9VUElORygpCisgKiBleHByZXNzaW9ucy4K ICAqCiAgKiBXZSBhc3N1bWUgaXQncyBva2F5IHRvIHVwZGF0ZSBvcGNvZGUgaW5mbyBpbi1wbGFj ZS4gIFNvIHRoaXMgY291bGQgcG9zc2libHkKICAqIHNjcmliYmxlIG9uIHRoZSBwbGFubmVyJ3Mg aW5wdXQgZGF0YSBzdHJ1Y3R1cmVzLCBidXQgaXQncyBPSy4KQEAgLTIwMjIsMTUgKzIwNjksMzkg QEAgZml4X2V4cHJfY29tbW9uKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlKQogCQkJCWct PmNvbHMgPSBjb2xzOwogCQl9CiAJfQorCWVsc2UgaWYgKElzQShub2RlLCBQYXJhbSkpCisJewor CQlQYXJhbQkgICAqcCA9IChQYXJhbSAqKSBub2RlOworCisJCWlmIChwLT5wYXJhbWtpbmQgPT0g UEFSQU1fVkFSSUFCTEUpCisJCXsKKwkJCVBsYW5JbnZhbEl0ZW0gKmludmFsX2l0ZW0gPSBtYWtl Tm9kZShQbGFuSW52YWxJdGVtKTsKKworCQkJLyogcGFyYW1pZCBpcyBzdGlsbCBzZXNzaW9uIHZh cmlhYmxlIGlkICovCisJCQlpbnZhbF9pdGVtLT5jYWNoZUlkID0gVkFSSUFCTEVPSUQ7CisJCQlp bnZhbF9pdGVtLT5oYXNoVmFsdWUgPSBHZXRTeXNDYWNoZUhhc2hWYWx1ZTEoVkFSSUFCTEVPSUQs CisJCQkJCQkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwLT5wYXJhbXZhcmlkKSk7CisKKwkJ CS8qIEFwcGVuZCB0aGlzIHZhcmlhYmxlIHRvIGdsb2JhbCwgcmVnaXN0ZXIgZGVwZW5kZW5jeSAq LworCQkJcm9vdC0+Z2xvYi0+aW52YWxJdGVtcyA9IGxhcHBlbmQocm9vdC0+Z2xvYi0+aW52YWxJ dGVtcywKKwkJCQkJCQkJCQkJIGludmFsX2l0ZW0pOworCQl9CisJfQogfQogCiAvKgogICogZml4 X3BhcmFtX25vZGUKICAqCQlEbyBzZXRfcGxhbl9yZWZlcmVuY2VzIHByb2Nlc3Npbmcgb24gYSBQ YXJhbQorICoJCUNvbGxlY3Qgc2Vzc2lvbiB2YXJpYWJsZXMgbGlzdCBhbmQgcmVwbGFjZSB2YXJp YWJsZSBvaWQgYnkKKyAqCQlpbmRleCB0byBjb2xsZWN0ZWQgbGlzdC4KICAqCiAgKiBJZiBpdCdz IGEgUEFSQU1fTVVMVElFWFBSLCByZXBsYWNlIGl0IHdpdGggdGhlIGFwcHJvcHJpYXRlIFBhcmFt IGZyb20KICAqIHJvb3QtPm11bHRpZXhwcl9wYXJhbXM7IG90aGVyd2lzZSBubyBjaGFuZ2UgaXMg bmVlZGVkLgogICogSnVzdCBmb3IgcGFyYW5vaWEncyBzYWtlLCB3ZSBtYWtlIGEgY29weSBvZiB0 aGUgbm9kZSBpbiBlaXRoZXIgY2FzZS4KKyAqCisgKiBJZiBpdCdzIGEgUEFSQU1fVkFSSUFCTEUs IHRoZW4gd2UgY29sbGVjdCB1c2VkIHNlc3Npb24gdmFyaWFibGVzIGluCisgKiBsaXN0IHJvb3Qt Pmdsb2ItPnNlc3Npb25WYXJpYWJsZS4gV2Ugc2hvdWxkIHRvIGFzc2lnbiBQYXJhbSBwYXJhbXZh cmlkCisgKiB0b28sIGFuZCBpdCBpcyBwb3NpdGlvbiBvZiByZWxhdGVkIHNlc3Npb24gdmFyaWFi bGUgaW4gbWVudGlvbmVkIGxpc3QuCiAgKi8KIHN0YXRpYyBOb2RlICoKIGZpeF9wYXJhbV9ub2Rl KFBsYW5uZXJJbmZvICpyb290LCBQYXJhbSAqcCkKQEAgLTIwNDksNiArMjEyMCw0MSBAQCBmaXhf cGFyYW1fbm9kZShQbGFubmVySW5mbyAqcm9vdCwgUGFyYW0gKnApCiAJCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBQQVJBTV9NVUxUSUVYUFIgSUQ6ICVkIiwgcC0+cGFyYW1pZCk7CiAJCXJldHVy biBjb3B5T2JqZWN0KGxpc3RfbnRoKHBhcmFtcywgY29sbm8gLSAxKSk7CiAJfQorCisJaWYgKHAt PnBhcmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCQlp bnQJCQluID0gMDsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCQkvKiBXZSB3aWxsIG1vZGlm eSBvYmplY3QgKi8KKwkJcCA9IChQYXJhbSAqKSBjb3B5T2JqZWN0KHApOworCisJCS8qCisJCSAq IE5vdywgd2UgY2FuIGFjdHVhbGl6ZSBsaXN0IG9mIHNlc3Npb24gdmFyaWFibGVzLCBhbmQgd2Ug Y2FuCisJCSAqIGNvbXBsZXRlIHBhcmFtaWQgcGFyYW1ldGVyLgorCQkgKi8KKwkJZm9yZWFjaChs Yywgcm9vdC0+Z2xvYi0+c2Vzc2lvblZhcmlhYmxlcykKKwkJeworCQkJaWYgKGxmaXJzdF9vaWQo bGMpID09IHAtPnBhcmFtdmFyaWQpCisJCQl7CisJCQkJcC0+cGFyYW1pZCA9IG47CisJCQkJZm91 bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJbiArPSAxOworCQl9CisKKwkJaWYgKCFm b3VuZCkKKwkJeworCQkJcm9vdC0+Z2xvYi0+c2Vzc2lvblZhcmlhYmxlcyA9IGxhcHBlbmRfb2lk KHJvb3QtPmdsb2ItPnNlc3Npb25WYXJpYWJsZXMsCisJCQkJCQkJCQkJCQkJICAgcC0+cGFyYW12 YXJpZCk7CisJCQlwLT5wYXJhbWlkID0gbjsKKwkJfQorCisJCXJldHVybiAoTm9kZSAqKSBwOwor CX0KKwogCXJldHVybiAoTm9kZSAqKSBjb3B5T2JqZWN0KHApOwogfQogCkBAIC0yMTEwLDcgKzIy MTYsMTAgQEAgZml4X2FsdGVybmF0aXZlX3N1YnBsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFsdGVy bmF0aXZlU3ViUGxhbiAqYXNwbGFuLAogICogcmVwbGFjaW5nIEFnZ3JlZiBub2RlcyB0aGF0IHNo b3VsZCBiZSByZXBsYWNlZCBieSBpbml0cGxhbiBvdXRwdXQgUGFyYW1zLAogICogY2hvb3Npbmcg dGhlIGJlc3QgaW1wbGVtZW50YXRpb24gZm9yIEFsdGVybmF0aXZlU3ViUGxhbnMsCiAgKiBsb29r aW5nIHVwIG9wZXJhdG9yIG9wY29kZSBpbmZvIGZvciBPcEV4cHIgYW5kIHJlbGF0ZWQgbm9kZXMs Ci0gKiBhbmQgYWRkaW5nIE9JRHMgZnJvbSByZWdjbGFzcyBDb25zdCBub2RlcyBpbnRvIHJvb3Qt Pmdsb2ItPnJlbGF0aW9uT2lkcy4KKyAqIGFkZGluZyBPSURzIGZyb20gcmVnY2xhc3MgQ29uc3Qg bm9kZXMgaW50byByb290LT5nbG9iLT5yZWxhdGlvbk9pZHMsCisgKiBhbmQgYXNzaWduaW5nIHBh cmFtdmFyaWQgdG8gUEFSQU1fVkFSSUFCTEUgcGFyYW1zLCBhbmQgY29sbGVjdGluZworICogb2Yg T0lEcyBvZiBzZXNzaW9uIHZhcmlhYmxlcyBpbiByb290LT5nbG9iLT5zZXNzaW9uVmFyaWFibGVz IGxpc3QKKyAqIChwYXJhbXZhcmlkIGlzIGFuIHBvc2l0aW9uIG9mIHJlbGF0ZWQgc2Vzc2lvbiB2 YXJpYWJsZSBpbiB0aGlzIGxpc3QpLgogICoKICAqICdub2RlJzogdGhlIGV4cHJlc3Npb24gdG8g YmUgbW9kaWZpZWQKICAqICdydG9mZnNldCc6IGhvdyBtdWNoIHRvIGluY3JlbWVudCB2YXJub3Mg YnkKQEAgLTIxMzIsNyArMjI0MSw4IEBAIGZpeF9zY2FuX2V4cHIoUGxhbm5lckluZm8gKnJvb3Qs IE5vZGUgKm5vZGUsIGludCBydG9mZnNldCwgZG91YmxlIG51bV9leGVjKQogCQlyb290LT5tdWx0 aWV4cHJfcGFyYW1zICE9IE5JTCB8fAogCQlyb290LT5nbG9iLT5sYXN0UEhJZCAhPSAwIHx8CiAJ CXJvb3QtPm1pbm1heF9hZ2dzICE9IE5JTCB8fAotCQlyb290LT5oYXNBbHRlcm5hdGl2ZVN1YlBs YW5zKQorCQlyb290LT5oYXNBbHRlcm5hdGl2ZVN1YlBsYW5zIHx8CisJCXJvb3QtPmhhc1Nlc3Np b25WYXJpYWJsZXMpCiAJewogCQlyZXR1cm4gZml4X3NjYW5fZXhwcl9tdXRhdG9yKG5vZGUsICZj b250ZXh0KTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw am9pbnRyZWUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jCmlu ZGV4IDJmNTg5YjFiOTkuLjc5OTAzM2RhMTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wcmVwL3ByZXBqb2ludHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVw L3ByZXBqb2ludHJlZS5jCkBAIC0xMjY1LDYgKzEyNjUsOSBAQCBwdWxsX3VwX3NpbXBsZV9zdWJx dWVyeShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlLCBSYW5nZVRibEVudHJ5ICpydGUs CiAJLyogSWYgc3VicXVlcnkgaGFkIGFueSBSTFMgY29uZGl0aW9ucywgbm93IG1haW4gcXVlcnkg ZG9lcyB0b28gKi8KIAlwYXJzZS0+aGFzUm93U2VjdXJpdHkgfD0gc3VicXVlcnktPmhhc1Jvd1Nl Y3VyaXR5OwogCisJLyogSWYgc3VicXVlcnkgaGFkIHNlc3Npb24gdmFyaWFibGVzLCBub3cgbWFp biBxdWVyeSBkb2VzIHRvbyAqLworCXBhcnNlLT5oYXNTZXNzaW9uVmFyaWFibGVzIHw9IHN1YnF1 ZXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzOworCiAJLyoKIAkgKiBzdWJxdWVyeSB3b24ndCBiZSBw dWxsZWQgdXAgaWYgaXQgaGFzQWdncywgaGFzV2luZG93RnVuY3MsIG9yCiAJICogaGFzVGFyZ2V0 U1JGcywgc28gbm8gd29yayBuZWVkZWQgb24gdGhvc2UgZmxhZ3MKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2NsYXVzZXMuYwppbmRleCA3ZjQ1M2IwNGY4Li5lY2UwMzAzNGRkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUu aCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2Z1 bmN0aW9ucy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTg0MCwxNiArODQxLDE3IEBAIG1h eF9wYXJhbGxlbF9oYXphcmRfd2Fsa2VyKE5vZGUgKm5vZGUsIG1heF9wYXJhbGxlbF9oYXphcmRf Y29udGV4dCAqY29udGV4dCkKIAogCS8qCiAJICogV2UgY2FuJ3QgcGFzcyBQYXJhbXMgdG8gd29y a2VycyBhdCB0aGUgbW9tZW50IGVpdGhlciwgc28gdGhleSBhcmUgYWxzbwotCSAqIHBhcmFsbGVs LXJlc3RyaWN0ZWQsIHVubGVzcyB0aGV5IGFyZSBQQVJBTV9FWFRFUk4gUGFyYW1zIG9yIGFyZQot CSAqIFBBUkFNX0VYRUMgUGFyYW1zIGxpc3RlZCBpbiBzYWZlX3BhcmFtX2lkcywgbWVhbmluZyB0 aGV5IGNvdWxkIGJlCi0JICogZWl0aGVyIGdlbmVyYXRlZCB3aXRoaW4gd29ya2VycyBvciBjYW4g YmUgY29tcHV0ZWQgYnkgdGhlIGxlYWRlciBhbmQKLQkgKiB0aGVuIHRoZWlyIHZhbHVlIGNhbiBi ZSBwYXNzZWQgdG8gd29ya2Vycy4KKwkgKiBwYXJhbGxlbC1yZXN0cmljdGVkLCB1bmxlc3MgdGhl eSBhcmUgUEFSQU1fRVhURVJOIG9yIFBBUkFNX1ZBUklBQkxFCisJICogUGFyYW1zIG9yIGFyZSBQ QVJBTV9FWEVDIFBhcmFtcyBsaXN0ZWQgaW4gc2FmZV9wYXJhbV9pZHMsIG1lYW5pbmcgdGhleQor CSAqIGNvdWxkIGJlIGVpdGhlciBnZW5lcmF0ZWQgd2l0aGluIHdvcmtlcnMgb3IgY2FuIGJlIGNv bXB1dGVkIGJ5IHRoZQorCSAqIGxlYWRlciBhbmQgdGhlbiB0aGVpciB2YWx1ZSBjYW4gYmUgcGFz c2VkIHRvIHdvcmtlcnMuCiAJICovCiAJZWxzZSBpZiAoSXNBKG5vZGUsIFBhcmFtKSkKIAl7CiAJ CVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCi0JCWlmIChwYXJhbS0+cGFyYW1r aW5kID09IFBBUkFNX0VYVEVSTikKKwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhU RVJOIHx8CisJCQlwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQogCQkJcmV0dXJu IGZhbHNlOwogCiAJCWlmIChwYXJhbS0+cGFyYW1raW5kICE9IFBBUkFNX0VYRUMgfHwKQEAgLTIz MDYsNiArMjMwOCw3IEBAIGNvbnZlcnRfc2FvcF90b19oYXNoZWRfc2FvcF93YWxrZXIoTm9kZSAq bm9kZSwgdm9pZCAqY29udGV4dCkKICAqCSAgdmFsdWUgb2YgdGhlIFBhcmFtLgogICogMi4gRm9s ZCBzdGFibGUsIGFzIHdlbGwgYXMgaW1tdXRhYmxlLCBmdW5jdGlvbnMgdG8gY29uc3RhbnRzLgog ICogMy4gUmVkdWNlIFBsYWNlSG9sZGVyVmFyIG5vZGVzIHRvIHRoZWlyIGNvbnRhaW5lZCBleHBy ZXNzaW9ucy4KKyAqIDQuIEN1cnJlbnQgdmFsdWUgb2Ygc2Vzc2lvbiB2YXJpYWJsZSBjYW4gYmUg dXNlZCBmb3IgZXN0aW1hdGlvbiB0b28uCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIE5v ZGUgKgpAQCAtMjQyOCw2ICsyNDMxLDI5IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRv cihOb2RlICpub2RlLAogCQkJCQkJfQogCQkJCQl9CiAJCQkJfQorCQkJCWVsc2UgaWYgKHBhcmFt LT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUgJiYKKwkJCQkJCSBjb250ZXh0LT5lc3RpbWF0 ZSkKKwkJCQl7CisJCQkJCWludDE2CQl0eXBMZW47CisJCQkJCWJvb2wJCXR5cEJ5VmFsOworCQkJ CQlEYXR1bQkJcHZhbDsKKwkJCQkJYm9vbAkJaXNudWxsOworCisJCQkJCWdldF90eXBsZW5ieXZh bChwYXJhbS0+cGFyYW10eXBlLAorCQkJCQkJCQkJJnR5cExlbiwgJnR5cEJ5VmFsKTsKKworCQkJ CQlwdmFsID0gQ29weVNlc3Npb25WYXJpYWJsZVdpdGhUeXBlQ2hlY2socGFyYW0tPnBhcmFtdmFy aWQsCisJCQkJCQkJCQkJCQkJCQkmaXNudWxsLAorCQkJCQkJCQkJCQkJCQkJcGFyYW0tPnBhcmFt dHlwZSk7CisKKwkJCQkJcmV0dXJuIChOb2RlICopIG1ha2VDb25zdChwYXJhbS0+cGFyYW10eXBl LAorCQkJCQkJCQkJCQkgIHBhcmFtLT5wYXJhbXR5cG1vZCwKKwkJCQkJCQkJCQkJICBwYXJhbS0+ cGFyYW1jb2xsaWQsCisJCQkJCQkJCQkJCSAgKGludCkgdHlwTGVuLAorCQkJCQkJCQkJCQkgIHB2 YWwsCisJCQkJCQkJCQkJCSAgaXNudWxsLAorCQkJCQkJCQkJCQkgIHR5cEJ5VmFsKTsKKwkJCQl9 CiAKIAkJCQkvKgogCQkJCSAqIE5vdCByZXBsYWNlYWJsZSwgc28ganVzdCBjb3B5IHRoZSBQYXJh bSAobm8gbmVlZCB0bwpAQCAtNDgyOCwyMSArNDg1NCw0MyBAQCBzdWJzdGl0dXRlX2FjdHVhbF9w YXJhbWV0ZXJzX211dGF0b3IoTm9kZSAqbm9kZSwKIHsKIAlpZiAobm9kZSA9PSBOVUxMKQogCQly ZXR1cm4gTlVMTDsKKworCS8qCisJICogU1FMIGZ1bmN0aW9ucyBjYW4gY29udGFpbiB0d28gZGlm ZmVyZW50IGtpbmQgb2YgcGFyYW1zLiBUaGUgbm9kZXMgd2l0aAorCSAqIHBhcmFta2luZCBQQVJB TV9FWFRFUk4gYXJlIHJlbGF0ZWQgdG8gZnVuY3Rpb24ncyBhcmd1bWVudHMgKGFuZCBzaG91bGQK KwkgKiBiZSByZXBsYWNlZCBpbiB0aGlzIHN0ZXApLCBiZWNhdXNlIHRoaXMgaXMgaG93IHdlIGFw cGx5IHRoZSBmdW5jdGlvbidzCisJICogYXJndW1lbnRzIGZvciBhbiBleHByZXNzaW9uLgorCSAq CisJICogVGhlIG5vZGVzIHdpdGggcGFyYW1raW5kIFBBUkFNX1ZBUklBQkxFIGFyZSByZWxhdGVk IHRvIHVzYWdlIG9mIHNlc3Npb24KKwkgKiB2YXJpYWJsZXMuIFRoZSB2YWx1ZXMgb2Ygc2Vzc2lv biB2YXJpYWJsZXMgYXJlIG5vdCBwYXNzZWQgdG8gZXhwcmVzc2lvbgorCSAqIGJ5IGV4cHJlc3Np b24gYXJndW1lbnRzLCBzbyBpdCBzaG91bGQgbm90IGJlIHJlcGxhY2VkIGhlcmUgYnkKKwkgKiBm dW5jdGlvbidzIGFyZ3VtZW50cy4gQWx0aG91Z2ggd2UgY291bGQgc3Vic3RpdHV0ZSBwYXJhbXMg cmVsYXRlZCB0bworCSAqIGltbXV0YWJsZSBzZXNzaW9uIHZhcmlhYmxlcyB3aXRoIGRlZmF1bHQg ZXhwcmVzc2lvbiBieSB0aGlzIGRlZmF1bHQKKwkgKiBleHByZXNzaW9uLCBpdCBpcyBzYWZlciB0 byBub3QgZG8gaXQuIFRoaXMgd2F5IHdlIGRvbid0IGhhdmUgdG8gcnVuCisJICogc2VjdXJpdHkg Y2hlY2tzIGhlcmUuIFRoZXJlIGNhbiBiZSBzb21lIHBlcmZvcm1hbmNlIGxvc3MsIGJ1dCBhbiBh Y2Nlc3MKKwkgKiB0byBzZXNzaW9uIHZhcmlhYmxlIGlzIGZhc3QgKGFuZCB0aGUgcmVzdWx0IG9m IGRlZmF1bHQgZXhwcmVzc2lvbiBpcworCSAqIGltbWVkaWF0ZWx5IG1hdGVyaWFsaXplZCBhbmQg Y2FuIGJlIHJldXNlZCkuCisJICovCiAJaWYgKElzQShub2RlLCBQYXJhbSkpCiAJewogCQlQYXJh bQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAotCQlpZiAocGFyYW0tPnBhcmFta2luZCAh PSBQQVJBTV9FWFRFUk4pCisJCWlmIChwYXJhbS0+cGFyYW1raW5kICE9IFBBUkFNX0VYVEVSTiAm JgorCQkJcGFyYW0tPnBhcmFta2luZCAhPSBQQVJBTV9WQVJJQUJMRSkKIAkJCWVsb2coRVJST1Is ICJ1bmV4cGVjdGVkIHBhcmFta2luZDogJWQiLCAoaW50KSBwYXJhbS0+cGFyYW1raW5kKTsKLQkJ aWYgKHBhcmFtLT5wYXJhbWlkIDw9IDAgfHwgcGFyYW0tPnBhcmFtaWQgPiBjb250ZXh0LT5uYXJn cykKLQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHBhcmFtaWQ6ICVkIiwgcGFyYW0tPnBhcmFtaWQp OwogCi0JCS8qIENvdW50IHVzYWdlIG9mIHBhcmFtZXRlciAqLwotCQljb250ZXh0LT51c2Vjb3Vu dHNbcGFyYW0tPnBhcmFtaWQgLSAxXSsrOworCQlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJB TV9FWFRFUk4pCisJCXsKKwkJCWlmIChwYXJhbS0+cGFyYW1pZCA8PSAwIHx8IHBhcmFtLT5wYXJh bWlkID4gY29udGV4dC0+bmFyZ3MpCisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgcGFyYW1pZDog JWQiLCBwYXJhbS0+cGFyYW1pZCk7CisKKwkJCS8qIENvdW50IHVzYWdlIG9mIHBhcmFtZXRlciAq LworCQkJY29udGV4dC0+dXNlY291bnRzW3BhcmFtLT5wYXJhbWlkIC0gMV0rKzsKIAotCQkvKiBT ZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGFjdHVhbCBhcmcgYW5kIHJlcGxhY2UgdGhlIFBhcmFtIHdp dGggaXQgKi8KLQkJLyogV2UgZG9uJ3QgbmVlZCB0byBjb3B5IGF0IHRoaXMgdGltZSAoaXQnbGwg Z2V0IGRvbmUgbGF0ZXIpICovCi0JCXJldHVybiBsaXN0X250aChjb250ZXh0LT5hcmdzLCBwYXJh bS0+cGFyYW1pZCAtIDEpOworCQkJLyogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBhY3R1YWwgYXJn IGFuZCByZXBsYWNlIHRoZSBQYXJhbSB3aXRoIGl0ICovCisJCQkvKiBXZSBkb24ndCBuZWVkIHRv IGNvcHkgYXQgdGhpcyB0aW1lIChpdCdsbCBnZXQgZG9uZSBsYXRlcikgKi8KKwkJCXJldHVybiBs aXN0X250aChjb250ZXh0LT5hcmdzLCBwYXJhbS0+cGFyYW1pZCAtIDEpOworCQl9CiAJfQogCXJl dHVybiBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihub2RlLCBzdWJzdGl0dXRlX2FjdHVhbF9wYXJh bWV0ZXJzX211dGF0b3IsCiAJCQkJCQkJCSAgICh2b2lkICopIGNvbnRleHQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFs eXplLmMKaW5kZXggNzA5MzJkYmE2MS4uYzJmNGY0ODM2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBA IC01MjcsNiArNTI3LDggQEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IERlbGV0ZVN0bXQgKnN0bXQpCiAJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1Rh cmdldFNSRnM7CiAJcXJ5LT5oYXNBZ2dzID0gcHN0YXRlLT5wX2hhc0FnZ3M7CiAKKwlxcnktPmhh c1Nlc3Npb25WYXJpYWJsZXMgPSBwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxlczsKKwogCWFz c2lnbl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwgcXJ5KTsKIAogCS8qIHRoaXMgbXVzdCBiZSBk b25lIGFmdGVyIGNvbGxhdGlvbnMsIGZvciByZWxpYWJsZSBjb21wYXJpc29uIG9mIGV4cHJzICov CkBAIC05NTEsNiArOTUzLDcgQEAgdHJhbnNmb3JtSW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3Rh dGUsIEluc2VydFN0bXQgKnN0bXQpCiAKIAlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBf aGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1Ykxpbmtz OworCXFyeS0+aGFzU2Vzc2lvblZhcmlhYmxlcyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFi bGVzOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC0xNDA1 LDYgKzE0MDgsNyBAQCB0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2Vs ZWN0U3RtdCAqc3RtdCkKIAlxcnktPmhhc1dpbmRvd0Z1bmNzID0gcHN0YXRlLT5wX2hhc1dpbmRv d0Z1bmNzOwogCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwog CXFyeS0+aGFzQWdncyA9IHBzdGF0ZS0+cF9oYXNBZ2dzOworCXFyeS0+aGFzU2Vzc2lvblZhcmlh YmxlcyA9IHBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzOwogCiAJZm9yZWFjaChsLCBzdG10 LT5sb2NraW5nQ2xhdXNlKQogCXsKQEAgLTE2MzEsNiArMTYzNSw3IEBAIHRyYW5zZm9ybVZhbHVl c0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5qb2lu dHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBfam9pbmxpc3QsIE5VTEwpOwogCiAJcXJ5LT5o YXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKwlxcnktPmhhc1Nlc3Npb25WYXJp YWJsZXMgPSBwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxlczsKIAogCWFzc2lnbl9xdWVyeV9j b2xsYXRpb25zKHBzdGF0ZSwgcXJ5KTsKIApAQCAtMTg4MSw2ICsxODg2LDcgQEAgdHJhbnNmb3Jt U2V0T3BlcmF0aW9uU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJ cXJ5LT5oYXNXaW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKIAlxcnktPmhh c1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc0FnZ3MgPSBw c3RhdGUtPnBfaGFzQWdnczsKKwlxcnktPmhhc1Nlc3Npb25WYXJpYWJsZXMgPSBwc3RhdGUtPnBf aGFzU2Vzc2lvblZhcmlhYmxlczsKIAogCWZvcmVhY2gobCwgbG9ja2luZ0NsYXVzZSkKIAl7CkBA IC0yNDIxLDYgKzI0MjcsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAogCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9o YXNUYXJnZXRTUkZzOwogCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7 CisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJs ZXM7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCmluZGV4IDMyN2M1OTU2YjIuLjAzYjAzZGMxNDIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtMzUsMTYgKzM1LDE4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRp bHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL3htbC5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogYm9vbAkJVHJhbnNmb3JtX251 bGxfZXF1YWxzID0gZmFsc2U7Ci0KK2Jvb2wJCXNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0eV93 YXJuaW5nID0gZmFsc2U7CiAKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJz ZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVBhcmFt UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpOwpAQCAtOTUsNiArOTcsOSBA QCBzdGF0aWMgRXhwciAqbWFrZV9kaXN0aW5jdF9vcChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km9wbmFtZSwKIAkJCQkJCQkgIE5vZGUgKmx0cmVlLCBOb2RlICpydHJlZSwgaW50IGxvY2F0aW9u KTsKIHN0YXRpYyBOb2RlICptYWtlX251bGx0ZXN0X2Zyb21fZGlzdGluY3QoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJCQkJCSBBX0V4cHIgKmRpc3RpbmN0YSwgTm9kZSAqYXJnKTsKK3N0YXRp YyBOb2RlICptYWtlUGFyYW1TZXNzaW9uVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJ CQkJCQkJICBPaWQgdmFyaWQsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBPaWQgY29sbGlkLAor CQkJCQkJCQkJICBjaGFyICphdHRybmFtZSwgaW50IGxvY2F0aW9uKTsKIAogCiAvKgpAQCAtNDY3 LDYgKzQ3Miw4OCBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFf SW5kaXJlY3Rpb24gKmluZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogUmV0dXJucyB0 cnVlIGlmIHRoZSBnaXZlbiBleHByZXNzaW9uIGtpbmQgaXMgdmFsaWQgZm9yIHNlc3Npb24gdmFy aWFibGVzCisgKiBTZXNzaW9uIHZhcmlhYmxlcyBjYW4gYmUgdXNlZCBldmVyeXdoZXJlIHdoZXJl IGV4dGVybmFsIHBhcmFtZXRlcnMgY2FuIGJlCisgKiB1c2VkLiBTZXNzaW9uIHZhcmlhYmxlcyBh cmUgbm90IGFsbG93ZWQgaW4gRERMIGNvbW1hbmRzIG9yIGluIGNvbnN0cmFpbnRzLgorICoKKyAq IEFuIGlkZW50aWZpZXIgY2FuIGJlIHBhcnNlZCBhcyBhIHNlc3Npb24gdmFyaWFibGUgb25seSBm b3IgZXhwcmVzc2lvbiBraW5kcworICogd2hlcmUgc2Vzc2lvbiB2YXJpYWJsZXMgYXJlIGFsbG93 ZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgdXNhZ2Ugb2YgdGhpcworICogZnVuY3Rpb24uCisgKgor ICogU2Vjb25kIHVzYWdlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gZGVjaWRlIHdoZXRoZXIgImNv bHVtbiBkb2VzIG5vdCBleGlzdCIgb3IKKyAqICJjb2x1bW4gb3IgdmFyaWFibGUgZG9lcyBub3Qg ZXhpc3QiIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIGJlIHByaW50ZWQuCisgKiBXaGVuIHdlIGFyZSBp biBhbiBleHByZXNzaW9uIHdoZXJlIHNlc3Npb24gdmFyaWFibGVzIGNhbm5vdCBiZSB1c2VkLCB3 ZSByYWlzZQorICogdGhlIGZpcnN0IGZvcm0gb2YgZXJyb3IgbWVzc2FnZS4KKyAqLworc3RhdGlj IGJvb2wKK2V4cHJfa2luZF9hbGxvd3Nfc2Vzc2lvbl92YXJpYWJsZXMoUGFyc2VFeHByS2luZCBw X2V4cHJfa2luZCkKK3sKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXN3aXRjaCAocF9leHBy X2tpbmQpCisJeworCQljYXNlIEVYUFJfS0lORF9OT05FOgorCQkJQXNzZXJ0KGZhbHNlKTsJCS8q IGNhbid0IGhhcHBlbiAqLworCQkJcmV0dXJuIGZhbHNlOworCisJCS8qIGFsbG93ICovCisJCWNh c2UgRVhQUl9LSU5EX09USEVSOgorCQljYXNlIEVYUFJfS0lORF9KT0lOX09OOgorCQljYXNlIEVY UFJfS0lORF9GUk9NX1NVQlNFTEVDVDoKKwkJY2FzZSBFWFBSX0tJTkRfRlJPTV9GVU5DVElPTjoK KwkJY2FzZSBFWFBSX0tJTkRfV0hFUkU6CisJCWNhc2UgRVhQUl9LSU5EX0hBVklORzoKKwkJY2Fz ZSBFWFBSX0tJTkRfRklMVEVSOgorCQljYXNlIEVYUFJfS0lORF9XSU5ET1dfUEFSVElUSU9OOgor CQljYXNlIEVYUFJfS0lORF9XSU5ET1dfT1JERVI6CisJCWNhc2UgRVhQUl9LSU5EX1dJTkRPV19G UkFNRV9SQU5HRToKKwkJY2FzZSBFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX1JPV1M6CisJCWNhc2Ug RVhQUl9LSU5EX1dJTkRPV19GUkFNRV9HUk9VUFM6CisJCWNhc2UgRVhQUl9LSU5EX1NFTEVDVF9U QVJHRVQ6CisJCWNhc2UgRVhQUl9LSU5EX0lOU0VSVF9UQVJHRVQ6CisJCWNhc2UgRVhQUl9LSU5E X1VQREFURV9TT1VSQ0U6CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9UQVJHRVQ6CisJCWNhc2Ug RVhQUl9LSU5EX01FUkdFX1dIRU46CisJCWNhc2UgRVhQUl9LSU5EX0dST1VQX0JZOgorCQljYXNl IEVYUFJfS0lORF9PUkRFUl9CWToKKwkJY2FzZSBFWFBSX0tJTkRfRElTVElOQ1RfT046CisJCWNh c2UgRVhQUl9LSU5EX0xJTUlUOgorCQljYXNlIEVYUFJfS0lORF9PRkZTRVQ6CisJCWNhc2UgRVhQ Ul9LSU5EX1JFVFVSTklORzoKKwkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTOgorCQljYXNlIEVYUFJf S0lORF9WQUxVRVNfU0lOR0xFOgorCQljYXNlIEVYUFJfS0lORF9BTFRFUl9DT0xfVFJBTlNGT1JN OgorCQljYXNlIEVYUFJfS0lORF9FWEVDVVRFX1BBUkFNRVRFUjoKKwkJY2FzZSBFWFBSX0tJTkRf UE9MSUNZOgorCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgorCQljYXNlIEVYUFJfS0lO RF9DT1BZX1dIRVJFOgorCQljYXNlIEVYUFJfS0lORF9MRVRfVEFSR0VUOgorCQkJcmVzdWx0ID0g dHJ1ZTsKKwkJCWJyZWFrOworCisJCS8qIG5vdCBhbGxvdyAqLworCQljYXNlIEVYUFJfS0lORF9D SEVDS19DT05TVFJBSU5UOgorCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CisJCWNhc2Ug RVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZB VUxUOgorCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgorCQljYXNlIEVYUFJfS0lO RF9JTkRFWF9QUkVESUNBVEU6CisJCWNhc2UgRVhQUl9LSU5EX1NUQVRTX0VYUFJFU1NJT046CisJ CWNhc2UgRVhQUl9LSU5EX1RSSUdHRVJfV0hFTjoKKwkJY2FzZSBFWFBSX0tJTkRfUEFSVElUSU9O X0JPVU5EOgorCQljYXNlIEVYUFJfS0lORF9QQVJUSVRJT05fRVhQUkVTU0lPTjoKKwkJY2FzZSBF WFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVG QVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfSk9JTl9VU0lORzoKKwkJY2FzZSBFWFBSX0tJTkRfQ1lD TEVfTUFSSzoKKwkJCXJlc3VsdCA9IGZhbHNlOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKwogLyoKICAqIFRyYW5zZm9ybSBhIENvbHVtblJlZi4KICAqCkBAIC04MTUsNiAr OTAyLDEwNCBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5S ZWYgKmNyZWYpCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlv bikpKTsKIAl9CiAKKwkvKgorCSAqIFRoZXJlIGFyZSBjb250ZXh0cyB3aGVyZSBzZXNzaW9uJ3Mg dmFyaWFibGVzIGFyZSBub3QgYWxsb3dlZC4gVGhlCisJICogcXVlc3Rpb24gaXMgaWYgd2Ugd2Fu dCB0byBpZGVudGlmeSBzZXNzaW9uJ3MgdmFyaWFibGVzIGluIHRoZXNlCisJICogY29udGV4dHM/ IFRoZSBjb2RlIGNhbiBiZSBtb3JlIHNpbXBsZSwgd2hlbiB3ZSBkb24ndCBkbyBpdCwgYnV0IHRo ZW4gd2UKKwkgKiBjYW5ub3QgdG8gcmFpc2UgbWF5YmUgdXNlZnVsIG1lc3NhZ2UgbGlrZSAieW91 IGNhbm5vdCB0byB1c2Ugc2Vzc2lvbgorCSAqIHZhcmlhYmxlcyBoZXJlIi4gT24gc2Vjb25kIGhh bmQsIGluIHRoaXMgY2FzZSB0aGUgd2FybmluZ3MgYWJvdXQKKwkgKiBzZXNzaW9uJ3MgdmFyaWFi bGUgc2hhZG93aW5nIGNhbiBiZSBtZXNzeS4KKwkgKi8KKwlpZiAoZXhwcl9raW5kX2FsbG93c19z ZXNzaW9uX3ZhcmlhYmxlcyhwc3RhdGUtPnBfZXhwcl9raW5kKSkKKwl7CisJCU9pZAkJCXZhcmlk ID0gSW52YWxpZE9pZDsKKwkJY2hhcgkgICAqYXR0cm5hbWUgPSBOVUxMOworCQlib29sCQlub3Rf dW5pcXVlOworCisJCS8qCisJCSAqIFNlc3Npb24gdmFyaWFibGVzIGFyZSBzaGFkb3dlZCBieSBj b2x1bW5zLCByb3V0aW5lJ3MgdmFyaWFibGVzIG9yCisJCSAqIHJvdXRpbmUncyBhcmd1bWVudHMg ZXZlci4gV2UgZG9uJ3Qgd2FudCB0byB1c2Ugc2Vzc2lvbiB2YXJpYWJsZQorCQkgKiB3aGVuIGl0 IGlzIG5vdCBleGFjdGx5IHNoYWRvd2VkLCBidXQgUlRFIGlzIHZhbGlkIGxpa2U6CisJCSAqCisJ CSAqIENSRUFURSBUWVBFIFQgQVMgKGMgaW50KTsgQ1JFQVRFIFZBUklBQkxFIGZvbyBBUyBUOyBD UkVBVEUgVEFCTEUKKwkJICogZm9vKGEgaW50LCBiIGludCk7CisJCSAqCisJCSAqIFNFTEVDVCBm b28uYSwgZm9vLmIsIGZvby5jIEZST00gZm9vOworCQkgKgorCQkgKiBUaGlzIGNhc2UgY2FuIGJl IG1lc3N5IGFuZCB0aGVuIHdlIGRpc2FsbG93IGl0LiBXaGVuIHdlIGtub3csIHNvCisJCSAqIHBv c3NpYmxlIHZhcmlhYmxlIHdpbGwgYmUgc2hhZG93ZWQsIHdlIHRyeSB0byBpZGVudGlmeSB2YXJp YWJsZQorCQkgKiBvbmx5IHdoZW4gc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmcg aXMgcmVxdWVzdGVkLgorCQkgKi8KKwkJaWYgKG5vZGUgfHwKKwkJCSghbm9kZSAmJiByZWxuYW1l ICYmIGNyZXJyID09IENSRVJSX05PX0NPTFVNTikpCisJCXsKKwkJCS8qCisJCQkgKiBJbiB0aGlz IHBhdGggd2UganVzdCB0cnkgKGlmIGl0IGlzIHdhbnRlZCkgZGV0ZWN0IGlmIHNlc3Npb24KKwkJ CSAqIHZhcmlhYmxlIGlzIHNoYWRvd2VkLgorCQkJICovCisJCQlpZiAoc2Vzc2lvbl92YXJpYWJs ZXNfYW1iaWd1aXR5X3dhcm5pbmcpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBUaGUgQWNjZXNzU2hh cmVMb2NrIGlzIGNyZWF0ZWQgb24gcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlLiBUaGUgbG9jawor CQkJCSAqIHdpbGwgYmUga2VwdCBmb3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgorCQkJCSAqLwor CQkJCXZhcmlkID0gSWRlbnRpZnlWYXJpYWJsZShjcmVmLT5maWVsZHMsICZhdHRybmFtZSwgJm5v dF91bmlxdWUsIHRydWUpOworCisJCQkJaWYgKE9pZElzVmFsaWQodmFyaWQpKQorCQkJCXsKKwkJ CQkJLyogVGhpcyBwYXRoIHdpbGwgZW5kaW5nIGJ5IFdBUk5JTkcuIFVubG9jayB2YXJpYWJsZSBm aXJzdCAqLworCQkJCQlVbmxvY2tEYXRhYmFzZU9iamVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHZh cmlkLCAwLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQkJCWlmIChub2RlKQorCQkJCQkJZXJlcG9y dChXQVJOSU5HLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19DT0xVTU4pLAor CQkJCQkJCQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBpcyBzaGFkb3dlZCIsCisJ CQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKKwkJCQkJCQkJIGVycmRl dGFpbCgiU2Vzc2lvbiB2YXJpYWJsZXMgY2FuIGJlIHNoYWRvd2VkIGJ5IGNvbHVtbnMsIHJvdXRp bmUncyB2YXJpYWJsZXMgYW5kIHJvdXRpbmUncyBhcmd1bWVudHMgd2l0aCB0aGUgc2FtZSBuYW1l LiIpLAorCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24p KSk7CisJCQkJCWVsc2UKKwkJCQkJCS8qIHNlc3Npb24gdmFyaWFibGUgaXMgc2hhZG93ZWQgYnkg UlRFICovCisJCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf QU1CSUdVT1VTX0NPTFVNTiksCisJCQkJCQkJCSBlcnJtc2coInNlc3Npb24gdmFyaWFibGUgXCIl cy4lc1wiIGlzIHNoYWRvd2VkIiwKKwkJCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nl c3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSksCisJCQkJCQkJCQkJZ2V0X3Nlc3Npb25f dmFyaWFibGVfbmFtZSh2YXJpZCkpLAorCQkJCQkJCQkgZXJyZGV0YWlsKCJTZXNzaW9uIHZhcmlh YmxlcyBjYW4gYmUgc2hhZG93ZWQgYnkgdGFibGVzIG9yIHRhYmxlJ3MgYWxpYXNlcyB3aXRoIHRo ZSBzYW1lIG5hbWUuIiksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVm LT5sb2NhdGlvbikpKTsKKwkJCQl9CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogVGhlIEFjY2Vzc1NoYXJlTG9jayBpcyBjcmVhdGVkIG9uIHJlbGF0ZWQgc2Vzc2lvbiB2YXJp YWJsZS4gVGhlIGxvY2sKKwkJCSAqIHdpbGwgYmUga2VwdCBmb3IgdGhlIHdob2xlIHRyYW5zYWN0 aW9uLgorCQkJKi8KKwkJCXZhcmlkID0gSWRlbnRpZnlWYXJpYWJsZShjcmVmLT5maWVsZHMsICZh dHRybmFtZSwgJm5vdF91bmlxdWUsIGZhbHNlKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFyaWQp KQorCQkJeworCQkJCU9pZAkJCXR5cGlkOworCQkJCWludDMyCQl0eXBtb2Q7CisJCQkJT2lkCQkJ Y29sbGlkOworCisJCQkJaWYgKG5vdF91bmlxdWUpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9BTUJJR1VPVVNfUEFSQU1FVEVSKSwKKwkJCQkJCQkgZXJybXNn KCJzZXNzaW9uIHZhcmlhYmxlIHJlZmVyZW5jZSBcIiVzXCIgaXMgYW1iaWd1b3VzIiwKKwkJCQkJ CQkJCU5hbWVMaXN0VG9TdHJpbmcoY3JlZi0+ZmllbGRzKSksCisJCQkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCisJCQkJZ2V0X3Nlc3Npb25fdmFy aWFibGVfdHlwZV90eXBtb2RfY29sbGlkKHZhcmlkLCAmdHlwaWQsICZ0eXBtb2QsCisJCQkJCQkJ CQkJCQkJCSZjb2xsaWQpOworCisJCQkJbm9kZSA9IG1ha2VQYXJhbVNlc3Npb25WYXJpYWJsZShw c3RhdGUsCisJCQkJCQkJCQkJCQl2YXJpZCwgdHlwaWQsIHR5cG1vZCwgY29sbGlkLAorCQkJCQkJ CQkJCQkJYXR0cm5hbWUsIGNyZWYtPmxvY2F0aW9uKTsKKwkJCX0KKwkJfQorCX0KKwogCS8qCiAJ ICogVGhyb3cgZXJyb3IgaWYgbm8gdHJhbnNsYXRpb24gZm91bmQuCiAJICovCkBAIC04NDksNiAr MTAzNCw3MiBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5S ZWYgKmNyZWYpCiAJcmV0dXJuIG5vZGU7CiB9CiAKKy8qCisgKiBHZW5lcmF0ZSBwYXJhbSB2YXJp YWJsZSBmb3IgcmVmZXJlbmNlIHRvIHNlc3Npb24gdmFyaWFibGUKKyAqLworc3RhdGljIE5vZGUg KgorbWFrZVBhcmFtU2Vzc2lvblZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCSBP aWQgdmFyaWQsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBPaWQgY29sbGlkLAorCQkJCQkJIGNo YXIgKmF0dHJuYW1lLCBpbnQgbG9jYXRpb24pCit7CisJUGFyYW0JICAgKnBhcmFtOworCisJcGFy YW0gPSBtYWtlTm9kZShQYXJhbSk7CisKKwlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fVkFSSUFC TEU7CisJcGFyYW0tPnBhcmFtdmFyaWQgPSB2YXJpZDsKKwlwYXJhbS0+cGFyYW10eXBlID0gdHlw aWQ7CisJcGFyYW0tPnBhcmFtdHlwbW9kID0gdHlwbW9kOworCXBhcmFtLT5wYXJhbWNvbGxpZCA9 IGNvbGxpZDsKKworCXBzdGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzID0gdHJ1ZTsKKworCWlm IChhdHRybmFtZSAhPSBOVUxMKQorCXsKKwkJVHVwbGVEZXNjCXR1cGRlc2M7CisJCWludAkJCWk7 CisKKwkJdHVwZGVzYyA9IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2Nfbm9lcnJvcih0eXBpZCwgdHlw bW9kLCB0cnVlKTsKKwkJaWYgKCF0dXBkZXNjKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCSBlcnJtc2coInZhcmlhYmxl IFwiJXMuJXNcIiBpcyBvZiB0eXBlIFwiJXNcIiwgd2hpY2ggaXMgbm90IGEgY29tcG9zaXRlIHR5 cGUiLAorCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1l c3BhY2UodmFyaWQpKSwKKwkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSwK KwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgbG9jYXRpb24pKSk7CisKKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRz OyBpKyspCisJCXsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVw ZGVzYywgaSk7CisKKwkJCWlmIChzdHJjbXAoYXR0cm5hbWUsIE5hbWVTdHIoYXR0LT5hdHRuYW1l KSkgPT0gMCAmJgorCQkJCSFhdHQtPmF0dGlzZHJvcHBlZCkKKwkJCXsKKwkJCQkvKiBTdWNjZXNz LCBzbyBnZW5lcmF0ZSBhIEZpZWxkU2VsZWN0IGV4cHJlc3Npb24gKi8KKwkJCQlGaWVsZFNlbGVj dCAqZnNlbGVjdCA9IG1ha2VOb2RlKEZpZWxkU2VsZWN0KTsKKworCQkJCWZzZWxlY3QtPmFyZyA9 IChFeHByICopIHBhcmFtOworCQkJCWZzZWxlY3QtPmZpZWxkbnVtID0gaSArIDE7CisJCQkJZnNl bGVjdC0+cmVzdWx0dHlwZSA9IGF0dC0+YXR0dHlwaWQ7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlw bW9kID0gYXR0LT5hdHR0eXBtb2Q7CisJCQkJLyogc2F2ZSBhdHRyaWJ1dGUncyBjb2xsYXRpb24g Zm9yIHBhcnNlX2NvbGxhdGUuYyAqLworCQkJCWZzZWxlY3QtPnJlc3VsdGNvbGxpZCA9IGF0dC0+ YXR0Y29sbGF0aW9uOworCisJCQkJUmVsZWFzZVR1cGxlRGVzYyh0dXBkZXNjKTsKKwkJCQlyZXR1 cm4gKE5vZGUgKikgZnNlbGVjdDsKKwkJCX0KKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBu b3QgaWRlbnRpZnkgY29sdW1uIFwiJXNcIiBpbiB2YXJpYWJsZSIsIGF0dHJuYW1lKSwKKwkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJfQorCisJcmV0dXJuIChO b2RlICopIHBhcmFtOworfQorCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1QYXJhbVJlZihQYXJz ZVN0YXRlICpwc3RhdGUsIFBhcmFtUmVmICpwcmVmKQogewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNTU2NWYy MDBjMy4uNTM4MmM0NTBkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwor KysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC04Niw2ICs4Niw5IEBAIENyZWF0ZVF1 ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAJcWQtPnF1ZXJ5RW52ID0gcXVlcnlF bnY7CiAJcWQtPmluc3RydW1lbnRfb3B0aW9ucyA9IGluc3RydW1lbnRfb3B0aW9uczsJLyogaW5z dHJ1bWVudGF0aW9uIHdhbnRlZD8gKi8KIAorCXFkLT5udW1fc2Vzc2lvbl92YXJpYWJsZXMgPSAw OworCXFkLT5zZXNzaW9uX3ZhcmlhYmxlcyA9IE5VTEw7CisKIAkvKiBudWxsIHRoZXNlIGZpZWxk cyB1bnRpbCBzZXQgYnkgRXhlY3V0b3JTdGFydCAqLwogCXFkLT50dXBEZXNjID0gTlVMTDsKIAlx ZC0+ZXN0YXRlID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBlOTNkNjZh N2VjLi5iMmEzNDViZGE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zOCw2ICsz OCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tb24va2V5 d29yZHMuaCIKQEAgLTUxNSw2ICs1MTYsNyBAQCBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfZnVuY3Rp b25fbmFtZShPaWQgZnVuY2lkLCBpbnQgbmFyZ3MsCiBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfb3Bl cmF0b3JfbmFtZShPaWQgb3BlcmlkLCBPaWQgYXJnMSwgT2lkIGFyZzIpOwogc3RhdGljIHZvaWQg YWRkX2Nhc3RfdG8oU3RyaW5nSW5mbyBidWYsIE9pZCB0eXBpZCk7CiBzdGF0aWMgY2hhciAqZ2Vu ZXJhdGVfcXVhbGlmaWVkX3R5cGVfbmFtZShPaWQgdHlwaWQpOworc3RhdGljIGNoYXIgKmdlbmVy YXRlX3Nlc3Npb25fdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpOwogc3RhdGljIHRleHQgKnN0cmlu Z190b190ZXh0KGNoYXIgKnN0cik7CiBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9p ZCByZWxpZCk7CiBzdGF0aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0 dW0gcmVsb3B0aW9ucyk7CkBAIC04MTQ4LDYgKzgxNTAsMTQgQEAgZ2V0X3BhcmFtZXRlcihQYXJh bSAqcGFyYW0sIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAkJcmV0dXJuOwogCX0KIAorCS8q IHRyYW5zbGF0ZSBwYXJhbXZhcmlkIHRvIHNlc3Npb24gdmFyaWFibGUgbmFtZSAqLworCWlmIChw YXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5m byhjb250ZXh0LT5idWYsICIlcyIsCisJCQkJCQkgZ2VuZXJhdGVfc2Vzc2lvbl92YXJpYWJsZV9u YW1lKHBhcmFtLT5wYXJhbXZhcmlkKSk7CisJCXJldHVybjsKKwl9CisKIAkvKgogCSAqIElmIGl0 J3MgYW4gZXh0ZXJuYWwgcGFyYW1ldGVyLCBzZWUgaWYgdGhlIG91dGVybW9zdCBuYW1lc3BhY2Ug cHJvdmlkZXMKIAkgKiBmdW5jdGlvbiBhcmd1bWVudCBuYW1lcy4KQEAgLTEyNDQ5LDYgKzEyNDU5 LDQyIEBAIGdlbmVyYXRlX2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsaWQpCiAJcmV0dXJuIHJlc3Vs dDsKIH0KIAorLyoKKyAqIGdlbmVyYXRlX3Nlc3Npb25fdmFyaWFibGVfbmFtZQorICoJCUNvbXB1 dGUgdGhlIG5hbWUgdG8gZGlzcGxheSBmb3IgYSBzZXNzaW9uIHZhcmlhYmxlIHNwZWNpZmllZCBi eSBPSUQKKyAqCisgKiBUaGUgcmVzdWx0IGluY2x1ZGVzIGFsbCBuZWNlc3NhcnkgcXVvdGluZyBh bmQgc2NoZW1hLXByZWZpeGluZy4KKyAqLworc3RhdGljIGNoYXIgKgorZ2VuZXJhdGVfc2Vzc2lv bl92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdf dmFyaWFibGUgdmFyZm9ybTsKKwljaGFyCSAgICp2YXJuYW1lOworCWNoYXIJICAgKm5zcG5hbWU7 CisJY2hhcgkgICAqcmVzdWx0OworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lE LCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1Iiwg dmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsK KworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpOworCisJaWYgKCFWYXJpYWJs ZUlzVmlzaWJsZSh2YXJpZCkpCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3JfdGVt cCh2YXJmb3JtLT52YXJuYW1lc3BhY2UpOworCWVsc2UKKwkJbnNwbmFtZSA9IE5VTEw7CisKKwly ZXN1bHQgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihuc3BuYW1lLCB2YXJuYW1lKTsKKwor CVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEdp dmVuIGEgQyBzdHJpbmcsIHByb2R1Y2UgYSBURVhUIGRhdHVtLgogICoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMKaW5kZXggODcyMTBmY2Y2Mi4uYTNiZWE0ZTk1MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTU4LDYgKzU4LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vz cy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTE4 NzQsOSArMTg3NSwxMiBAQCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29s IGFjcXVpcmUpCiAKIAkvKgogCSAqIFJlY3Vyc2UgaW50byBzdWJsaW5rIHN1YnF1ZXJpZXMsIHRv by4gIEJ1dCB3ZSBhbHJlYWR5IGRpZCB0aGUgb25lcyBpbgotCSAqIHRoZSBydGFibGUgYW5kIGN0 ZUxpc3QuCisJICogdGhlIHJ0YWJsZSBhbmQgY3RlTGlzdC4gV2UgbmVlZCB0byBmb3JjZSByZWN1 cnNpdmUgY2FsbCBmb3Igc2Vzc2lvbgorCSAqIHZhcmlhYmxlcyB0b28sIHRvIGZpbmQgYW5kIGxv Y2sgdmFyaWFibGVzIHVzZWQgaW4gcXVlcnkgKHNlZQorCSAqIFNjYW5RdWVyeVdhbGtlcikuCiAJ ICovCi0JaWYgKHBhcnNldHJlZS0+aGFzU3ViTGlua3MpCisJaWYgKHBhcnNldHJlZS0+aGFzU3Vi TGlua3MgfHwKKwkJcGFyc2V0cmVlLT5oYXNTZXNzaW9uVmFyaWFibGVzKQogCXsKIAkJcXVlcnlf dHJlZV93YWxrZXIocGFyc2V0cmVlLCBTY2FuUXVlcnlXYWxrZXIsCiAJCQkJCQkgICh2b2lkICop ICZhY3F1aXJlLApAQCAtMTg4NSw3ICsxODg5LDggQEAgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkg KnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKQogfQogCiAvKgotICogV2Fsa2VyIHRvIGZpbmQgc3Vi bGluayBzdWJxdWVyaWVzIGZvciBTY2FuUXVlcnlGb3JMb2NrcworICogV2Fsa2VyIHRvIGZpbmQg c3VibGluayBzdWJxdWVyaWVzIG9yIHJlZmVyZW5jZWQgc2Vzc2lvbiB2YXJpYWJsZXMKKyAqIGZv ciBTY2FuUXVlcnlGb3JMb2NrcwogICovCiBzdGF0aWMgYm9vbAogU2NhblF1ZXJ5V2Fsa2VyKE5v ZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUpCkBAIC0xOTAwLDYgKzE5MDUsMjAgQEAgU2NhblF1ZXJ5 V2Fsa2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUpCiAJCVNjYW5RdWVyeUZvckxvY2tzKGNh c3ROb2RlKFF1ZXJ5LCBzdWItPnN1YnNlbGVjdCksICphY3F1aXJlKTsKIAkJLyogRmFsbCB0aHJv dWdoIHRvIHByb2Nlc3MgbGVmdGhhbmQgYXJncyBvZiBTdWJMaW5rICovCiAJfQorCWVsc2UgaWYg KElzQShub2RlLCBQYXJhbSkpCisJeworCQlQYXJhbQkgICAqcCA9IChQYXJhbSAqKSBub2RlOwor CisJCWlmIChwLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJCXsKKwkJCWlmIChhY3F1 aXJlKQorCQkJCUxvY2tEYXRhYmFzZU9iamVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHAtPnBhcmFt dmFyaWQsCisJCQkJCQkJCSAgIDAsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQllbHNlCisJCQkJVW5s b2NrRGF0YWJhc2VPYmplY3QoVmFyaWFibGVSZWxhdGlvbklkLCBwLT5wYXJhbXZhcmlkLAorCQkJ CQkJCQkJIDAsIEFjY2Vzc1NoYXJlTG9jayk7CisJCX0KKwl9CiAKIAkvKgogCSAqIERvIE5PVCBy ZWN1cnNlIGludG8gUXVlcnkgbm9kZXMsIGJlY2F1c2UgU2NhblF1ZXJ5Rm9yTG9ja3MgYWxyZWFk eQpAQCAtMjAzMSw3ICsyMDUwLDkgQEAgUGxhbkNhY2hlUmVsQ2FsbGJhY2soRGF0dW0gYXJnLCBP aWQgcmVsaWQpCiAKIC8qCiAgKiBQbGFuQ2FjaGVPYmplY3RDYWxsYmFjawotICoJCVN5c2NhY2hl IGludmFsIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBQUk9DT0lEIGFuZCBUWVBFT0lEIGNhY2hlcwor ICoJCVN5c2NhY2hlIGludmFsIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBUWVBFT0lELCBQUk9DT0lE LCBOQU1FU1BBQ0VPSUQsCisgKiBPUEVST0lELCBBTU9QT1BJRCwgRk9SRUlHTlNFUlZFUk9JRCwg Rk9SRUlHTkRBVEFXUkFQUEVST0lEIGFuZCBWQVJJQUJMRU9JRAorICogY2FjaGVzLgogICoKICAq IEludmFsaWRhdGUgYWxsIHBsYW5zIG1lbnRpb25pbmcgdGhlIG9iamVjdCB3aXRoIHRoZSBzcGVj aWZpZWQgaGFzaCB2YWx1ZSwKICAqIG9yIGFsbCBwbGFucyBtZW50aW9uaW5nIGFueSBtZW1iZXIg b2YgdGhpcyBjYWNoZSBpZiBoYXNodmFsdWUgPT0gMC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2ZtZ3IvZm1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXgg ZjcyZGQyNWVmYS4uMDA2YmZjNzZkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1n ci9mbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKQEAgLTE5OTgsOSAr MTk5OCwxMyBAQCBnZXRfY2FsbF9leHByX2FyZ19zdGFibGUoTm9kZSAqZXhwciwgaW50IGFyZ251 bSkKIAkgKi8KIAlpZiAoSXNBKGFyZywgQ29uc3QpKQogCQlyZXR1cm4gdHJ1ZTsKLQlpZiAoSXNB KGFyZywgUGFyYW0pICYmCi0JCSgoUGFyYW0gKikgYXJnKS0+cGFyYW1raW5kID09IFBBUkFNX0VY VEVSTikKLQkJcmV0dXJuIHRydWU7CisJaWYgKElzQShhcmcsIFBhcmFtKSkKKwl7CisJCVBhcmFt CSAgICpwID0gKFBhcmFtICopIGFyZzsKKworCQlpZiAocC0+cGFyYW1raW5kID09IFBBUkFNX0VY VEVSTiB8fCBwLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJCQlyZXR1cm4gdHJ1ZTsK Kwl9CiAKIAlyZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmlu ZGV4IDhhYmY5YmI2NDQuLjM3YjgzNzNlMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jCkBAIC0xNTM5LDYgKzE1MzksMTYgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5h bWVzQm9vbFtdID0KIAkJZmFsc2UsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJz ZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyIsIFBHQ19VU0VSU0VULCBERVZFTE9Q RVJfT1BUSU9OUywKKwkJCWdldHRleHRfbm9vcCgiUmFpc2Ugd2FybmluZyB3aGVuIHJlZmVyZW5j ZSB0byBhIHNlc3Npb24gdmFyaWFibGUgaXMgYW1iaWd1b3VzLiIpLAorCQkJTlVMTCwKKwkJCUdV Q19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZzZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2Fy bmluZywKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJeyJkYl91c2Vy X25hbWVzcGFjZSIsIFBHQ19TSUdIVVAsIENPTk5fQVVUSF9BVVRILAogCQkJZ2V0dGV4dF9ub29w KCJFbmFibGVzIHBlci1kYXRhYmFzZSB1c2VyIG5hbWVzLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNl LmgKaW5kZXggNzg3ZGUxNWVkMS4uMzEyZWNmZTViMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5o CkBAIC0xNjgsNiArMTY4LDcgQEAgZXh0ZXJuIHZvaWQgUmVzZXRUZW1wVGFibGVOYW1lc3BhY2Uo dm9pZCk7CiAKIGV4dGVybiBMaXN0ICpOYW1lc0Zyb21MaXN0KExpc3QgKm5hbWVzKTsKIGV4dGVy biBPaWQJTG9va3VwVmFyaWFibGUoY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3QgY2hhciAqdmFy bmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBPaWQJSWRlbnRpZnlWYXJpYWJsZShMaXN0 ICpuYW1lcywgY2hhciAqKmF0dHJuYW1lLCBib29sICpub3RfdW5pcXVlLCBib29sIG5vZXJyb3Ip OwogCiBleHRlcm4gT3ZlcnJpZGVTZWFyY2hQYXRoICpHZXRPdmVycmlkZVNlYXJjaFBhdGgoTWVt b3J5Q29udGV4dCBjb250ZXh0KTsKIGV4dGVybiBPdmVycmlkZVNlYXJjaFBhdGggKkNvcHlPdmVy cmlkZVNlYXJjaFBhdGgoT3ZlcnJpZGVTZWFyY2hQYXRoICpwYXRoKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IGUxMDM0ZmRjNDkuLjlkNDczNjJjYzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtMTIwMzUsNyArMTIwMzUsNiBAQAogICBwcm9uYW1lID0+ICdicmluX21pbm1heF9t dWx0aV9zdW1tYXJ5X3NlbmQnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4g J2J5dGVhJywgcHJvYXJndHlwZXMgPT4gJ3BnX2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnknLAog ICBwcm9zcmMgPT4gJ2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnlfc2VuZCcgfSwKLQogeyBvaWQg PT4gJzg5ODEnLCBkZXNjciA9PiAnYXJiaXRyYXJ5IHZhbHVlIGZyb20gYW1vbmcgaW5wdXQgdmFs dWVzJywKICAgcHJvbmFtZSA9PiAnYW55X3ZhbHVlJywgcHJva2luZCA9PiAnYScsIHByb2lzc3Ry aWN0ID0+ICdmJywKICAgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsIHByb2FyZ3R5cGVzID0+ ICdhbnllbGVtZW50JywKQEAgLTEyMDQzLDUgKzEyMDQyLDExIEBACiB7IG9pZCA9PiAnODk4Mics IGRlc2NyID0+ICdhZ2dyZWdhdGUgdHJhbnNpdGlvbiBmdW5jdGlvbicsCiAgIHByb25hbWUgPT4g J2FueV92YWx1ZV90cmFuc2ZuJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCiAgIHByb2Fy Z3R5cGVzID0+ICdhbnllbGVtZW50IGFueWVsZW1lbnQnLCBwcm9zcmMgPT4gJ2FueV92YWx1ZV90 cmFuc2ZuJyB9LAotCit7IG9pZCA9PiAnODQ4OCcsIGRlc2NyID0+ICdsaXN0IG9mIHVzZWQgc2Vz c2lvbiB2YXJpYWJsZXMnLAorICBwcm9uYW1lID0+ICdwZ19zZXNzaW9uX3ZhcmlhYmxlcycsIHBy b3Jvd3MgPT4gJzEwMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAorICBwcm92b2xhdGlsZSA9PiAncycs IHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9hbGxhcmd0 eXBlcyA9PiAne29pZCx0ZXh0LHRleHQsb2lkLHRleHQsYm9vbCxib29sLGJvb2wsYm9vbH0nLAor ICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ ICd7dmFyaWQsc2NoZW1hLG5hbWUsdHlwaWQsdHlwbmFtZSxyZW1vdmVkLGhhc192YWx1ZSxjYW5f c2VsZWN0LGNhbl91cGRhdGV9JywKKyAgcHJvc3JjID0+ICdwZ19zZXNzaW9uX3ZhcmlhYmxlcycg fSwKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUu aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaAppbmRleCAzNDNlZTA3 MGE1Li5mNDQyYzVkM2I4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNzaW9u X3ZhcmlhYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5o CkBAIC0xLDcgKzEsNyBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgotICogc2Vzc2lvbnZhcmlh YmxlLmgKLSAqCSAgcHJvdG90eXBlcyBmb3Igc2Vzc2lvbnZhcmlhYmxlLmMuCisgKiBzZXNzaW9u X3ZhcmlhYmxlLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc2Vzc2lvbl92YXJpYWJsZS5jLgogICoK ICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKQEAgLTI2LDYgKzI2LDE0IEBACiBleHRlcm4gdm9pZCBTZXNz aW9uVmFyaWFibGVDcmVhdGVQb3N0cHJvY2VzcyhPaWQgdmFyaWQsIGNoYXIgZW94YWN0aW9uKTsK IGV4dGVybiB2b2lkIFNlc3Npb25WYXJpYWJsZURyb3BQb3N0cHJvY2VzcyhPaWQgdmFyaWQpOwog CitleHRlcm4gRGF0dW0gQ29weVNlc3Npb25WYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVs bCwgT2lkICp0eXBpZCk7CitleHRlcm4gRGF0dW0gQ29weVNlc3Npb25WYXJpYWJsZVdpdGhUeXBl Q2hlY2soT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZCBleHBlY3RlZF90eXBpZCk7CisKK2V4 dGVybiB2b2lkIFNldFNlc3Npb25WYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29s IGlzTnVsbCk7CitleHRlcm4gdm9pZCBTZXRTZXNzaW9uVmFyaWFibGVXaXRoU2VjdXJpdHlDaGVj ayhPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCk7CisKK2V4dGVybiB2b2lkIFJl c2V0U2Vzc2lvblZhcmlhYmxlcyh2b2lkKTsKKwogZXh0ZXJuIHZvaWQgQXRQcmVFT1hhY3RfU2Vz c2lvblZhcmlhYmxlKGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQXRFT1N1YlhhY3RfU2Vz c2lvblZhcmlhYmxlKGJvb2wgaXNDb21taXQsCiAJCQkJCQkJCQkJU3ViVHJhbnNhY3Rpb25JZCBt eVN1YmlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggMDQ4NTczYzJiYy4uN2FlZDU1ZTdj MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC0xNTksNiArMTU5LDcgQEAgdHlwZWRlZiBl bnVtIEV4cHJFdmFsT3AKIAlFRU9QX1BBUkFNX0VYRUMsCiAJRUVPUF9QQVJBTV9FWFRFUk4sCiAJ RUVPUF9QQVJBTV9DQUxMQkFDSywKKwlFRU9QX1BBUkFNX1ZBUklBQkxFLAogCiAJLyogcmV0dXJu IENhc2VUZXN0RXhwciB2YWx1ZSAqLwogCUVFT1BfQ0FTRV9URVNUVkFMLApAQCAtMzg1LDYgKzM4 NiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCU9pZAkJCXBhcmFtdHlwZTsJ LyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0eXBlICovCiAJCX0JCQlwYXJhbTsKIAorCQkvKiBm b3IgRUVPUF9QQVJBTV9WQVJJQUJMRSAqLworCQlzdHJ1Y3QKKwkJeworCQkJT2lkCQkJdmFyaWQ7 CS8qIE9JRCBvZiBhc3NpZ25lZCB2YXJpYWJsZSAqLworCQkJT2lkCQkJdmFydHlwZTsJLyogT0lE IG9mIHBhcmFtZXRlcidzIGRhdGF0eXBlICovCisJCX0JCQl2cGFyYW07CisKIAkJLyogZm9yIEVF T1BfUEFSQU1fQ0FMTEJBQ0sgKi8KIAkJc3RydWN0CiAJCXsKQEAgLTc3Niw2ICs3ODQsOCBAQCBl eHRlcm4gdm9pZCBFeGVjRXZhbFBhcmFtRXhlYyhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wLAogCQkJCQkJCSAgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4 ZWNFdmFsUGFyYW1FeHRlcm4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJ CQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNFdmFsUGFyYW1W YXJpYWJsZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJCQkgIEV4 cHJDb250ZXh0ICplY29udGV4dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFNRTFZhbHVlRnVuY3Rp b24oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVj RXZhbEN1cnJlbnRPZkV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CiBl eHRlcm4gdm9pZCBFeGVjRXZhbE5leHRWYWx1ZUV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCBhZjJiZjM2ZGZiLi5jNGM2 MzMxNzc0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTQ4LDYgKzQ4LDEwIEBAIHR5cGVk ZWYgc3RydWN0IFF1ZXJ5RGVzYwogCUVTdGF0ZQkgICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9yJ3Mg cXVlcnktd2lkZSBzdGF0ZSAqLwogCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUgb2Yg cGVyLXBsYW4tbm9kZSBzdGF0ZSAqLwogCisJLyogcmVmZXJlbmNlIHRvIHNlc3Npb24gdmFyaWFi bGVzIGJ1ZmZlciAqLworCWludAkJCW51bV9zZXNzaW9uX3ZhcmlhYmxlczsKKwlTZXNzaW9uVmFy aWFibGVWYWx1ZSAqc2Vzc2lvbl92YXJpYWJsZXM7CisKIAkvKiBUaGlzIGZpZWxkIGlzIHNldCBi eSBFeGVjdXRvclJ1biAqLwogCWJvb2wJCWFscmVhZHlfZXhlY3V0ZWQ7CS8qIHRydWUgaWYgcHJl dmlvdXNseSBleGVjdXRlZCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDYxYjM1MTc5MDYu LjVhNDY0YzEyZTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MDEsNiArNjAxLDE4IEBAIHR5 cGVkZWYgc3RydWN0IEFzeW5jUmVxdWVzdAogCQkJCQkJCQkgKiB0dXBsZXMpICovCiB9IEFzeW5j UmVxdWVzdDsKIAorLyogLS0tLS0tLS0tLS0tLS0tLQorICogU2Vzc2lvblZhcmlhYmxlVmFsdWUK KyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2Vzc2lvblZhcmlhYmxl VmFsdWUKK3sKKwlPaWQJCQl2YXJpZDsKKwlPaWQJCQl0eXBpZDsKKwlib29sCQlpc251bGw7CisJ RGF0dW0JCXZhbHVlOworfSBTZXNzaW9uVmFyaWFibGVWYWx1ZTsKKwogLyogLS0tLS0tLS0tLS0t LS0tLQogICoJICBFU3RhdGUgaW5mb3JtYXRpb24KICAqCkBAIC02NTMsNiArNjY1LDEzIEBAIHR5 cGVkZWYgc3RydWN0IEVTdGF0ZQogCVBhcmFtTGlzdEluZm8gZXNfcGFyYW1fbGlzdF9pbmZvOwkv KiB2YWx1ZXMgb2YgZXh0ZXJuYWwgcGFyYW1zICovCiAJUGFyYW1FeGVjRGF0YSAqZXNfcGFyYW1f ZXhlY192YWxzOwkvKiB2YWx1ZXMgb2YgaW50ZXJuYWwgcGFyYW1zICovCiAKKwkvKiBWYXJpYWJs ZXMgaW5mbzogKi8KKwkvKiBudW1iZXIgb2YgdXNlZCBzZXNzaW9uIHZhcmlhYmxlcyAqLworCWlu dAkJCWVzX251bV9zZXNzaW9uX3ZhcmlhYmxlczsKKworCS8qIGFycmF5IG9mIGNvcGllZCB2YWx1 ZXMgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMgKi8KKwlTZXNzaW9uVmFyaWFibGVWYWx1ZSAqZXNfc2Vz c2lvbl92YXJpYWJsZXM7CisKIAlRdWVyeUVudmlyb25tZW50ICplc19xdWVyeUVudjsJLyogcXVl cnkgZW52aXJvbm1lbnQgKi8KIAogCS8qIE90aGVyIHdvcmtpbmcgc3RhdGU6ICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKaW5kZXggZWVjYmJkNzc2OC4uMWYwNjdmYzg0ZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaApAQCAtMTY3LDYgKzE2Nyw4IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJYm9vbAkJ aGFzRm9yVXBkYXRlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiByZXdy aXRlciBoYXMgYXBwbGllZCBzb21lIFJMUyBwb2xpY3kgKi8KIAlib29sCQloYXNSb3dTZWN1cml0 eSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJLyogdXNlcyBzZXNzaW9uIHZh cmlhYmxlcyAqLworCWJvb2wJCWhhc1Nlc3Npb25WYXJpYWJsZXMgcGdfbm9kZV9hdHRyKHF1ZXJ5 X2p1bWJsZV9pZ25vcmUpOwogCS8qIGlzIGEgUkVUVVJOIHN0YXRlbWVudCAqLwogCWJvb2wJCWlz UmV0dXJuIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaAppbmRleCA3ZDRmMjRkMjUwLi40ZjY5ODU1NmEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApA QCAtMTYwLDYgKzE2MCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAogCS8qIHBh cnRpdGlvbiBkZXNjcmlwdG9ycyAqLwogCVBhcnRpdGlvbkRpcmVjdG9yeSBwYXJ0aXRpb25fZGly ZWN0b3J5IHBnX25vZGVfYXR0cihyZWFkX3dyaXRlX2lnbm9yZSk7CisKKwkvKiBsaXN0IG9mIHVz ZWQgc2Vzc2lvbiB2YXJpYWJsZXMgKi8KKwlMaXN0CSAgICpzZXNzaW9uVmFyaWFibGVzOwogfSBQ bGFubmVyR2xvYmFsOwogCiAvKiBtYWNybyBmb3IgZmV0Y2hpbmcgdGhlIFBsYW4gYXNzb2NpYXRl ZCB3aXRoIGEgU3ViUGxhbiBub2RlICovCkBAIC00OTksNiArNTAyLDggQEAgc3RydWN0IFBsYW5u ZXJJbmZvCiAJYm9vbAkJcGxhY2Vob2xkZXJzRnJvemVuOwogCS8qIHRydWUgaWYgcGxhbm5pbmcg YSByZWN1cnNpdmUgV0lUSCBpdGVtICovCiAJYm9vbAkJaGFzUmVjdXJzaW9uOworCS8qIHRydWUg aWYgc2Vzc2lvbiB2YXJpYWJsZXMgd2VyZSB1c2VkICovCisJYm9vbAkJaGFzU2Vzc2lvblZhcmlh YmxlczsKIAogCS8qCiAJICogSW5mb3JtYXRpb24gYWJvdXQgYWdncmVnYXRlcy4gRmlsbGVkIGJ5 IHByZXByb2Nlc3NfYWdncmVmcygpLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAxYjc4N2ZlMDMx Li5kMjg3YTgwZGNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtOTUsNiArOTUsOCBAQCB0eXBl ZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCiAJTm9kZQkgICAqdXRpbGl0eVN0bXQ7CS8qIG5vbi1u dWxsIGlmIHRoaXMgaXMgdXRpbGl0eSBzdG10ICovCiAKKwlMaXN0CSAgICpzZXNzaW9uVmFyaWFi bGVzOwkvKiBPSURzIGZvciBQQVJBTV9WQVJJQUJMRSBQYXJhbXMgKi8KKwogCS8qIHN0YXRlbWVu dCBsb2NhdGlvbiBpbiBzb3VyY2Ugc3RyaW5nIChjb3BpZWQgZnJvbSBRdWVyeSkgKi8KIAlpbnQJ CQlzdG10X2xvY2F0aW9uOwkvKiBzdGFydCBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwog CWludAkJCXN0bXRfbGVuOwkJLyogbGVuZ3RoIGluIGJ5dGVzOyAwIG1lYW5zICJyZXN0IG9mIHN0 cmluZyIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggMDhlN2RhZTczZi4uZDI3MDM4YTI0MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTQzLDcgKzQzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQWxp YXMKIAlMaXN0CSAgICpjb2xuYW1lczsJCS8qIG9wdGlvbmFsIGxpc3Qgb2YgY29sdW1uIGFsaWFz ZXMgKi8KIH0gQWxpYXM7CiAKLS8qIFdoYXQgdG8gZG8gYXQgY29tbWl0IHRpbWUgZm9yIHRlbXBv cmFyeSByZWxhdGlvbnMgKi8KKy8qCisgKiBXaGF0IHRvIGRvIGF0IGNvbW1pdCB0aW1lIGZvciB0 ZW1wb3JhcnkgcmVsYXRpb25zIG9yIHNlc3Npb24gdmFyaWFibGVzLgorICovCiB0eXBlZGVmIGVu dW0gT25Db21taXRBY3Rpb24KIHsKIAlPTkNPTU1JVF9OT09QLAkJCQkvKiBObyBPTiBDT01NSVQg Y2xhdXNlIChkbyBub3RoaW5nKSAqLwpAQCAtMzM5LDEzICszNDEsMTcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ29uc3QKICAqCQkJCW9mIHRoZSBgcGFyYW1pZCcgZmllbGQgY29udGFpbiB0aGUgU3ViTGlu aydzIHN1YkxpbmtJZCwgYW5kCiAgKgkJCQl0aGUgbG93LW9yZGVyIDE2IGJpdHMgY29udGFpbiB0 aGUgY29sdW1uIG51bWJlci4gIChUaGlzIHR5cGUKICAqCQkJCW9mIFBhcmFtIGlzIGFsc28gY29u dmVydGVkIHRvIFBBUkFNX0VYRUMgZHVyaW5nIHBsYW5uaW5nLikKKyAqCisgKgkJUEFSQU1fVkFS SUFCTEU6ICBUaGUgcGFyYW1ldGVyIGlzIGFuIGFjY2VzcyB0byBzZXNzaW9uIHZhcmlhYmxlCisg KgkJCQlwYXJhbWlkIGhvbGRzIHZhcmlkLgogICovCiB0eXBlZGVmIGVudW0gUGFyYW1LaW5kCiB7 CiAJUEFSQU1fRVhURVJOLAogCVBBUkFNX0VYRUMsCiAJUEFSQU1fU1VCTElOSywKLQlQQVJBTV9N VUxUSUVYUFIKKwlQQVJBTV9NVUxUSUVYUFIsCisJUEFSQU1fVkFSSUFCTEUKIH0gUGFyYW1LaW5k OwogCiB0eXBlZGVmIHN0cnVjdCBQYXJhbQpAQCAtMzU4LDYgKzM2NCw4IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcmFtCiAJaW50MzIJCXBhcmFtdHlwbW9kIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVf aWdub3JlKTsKIAkvKiBPSUQgb2YgY29sbGF0aW9uLCBvciBJbnZhbGlkT2lkIGlmIG5vbmUgKi8K IAlPaWQJCQlwYXJhbWNvbGxpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJ LyogT0lEIG9mIHNlc3Npb24gdmFyaWFibGUgaWYgaXQgaXMgdXNlZCAqLworCU9pZAkJCXBhcmFt dmFyaWQ7CiAJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIAlpbnQJCQls b2NhdGlvbjsKIH0gUGFyYW07CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxh bm1haW4uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCmluZGV4IDVmYzkwMDcz N2QuLmYxMDY3NjhiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFp bi5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCkBAIC0xMTQsNCArMTE0 LDYgQEAgZXh0ZXJuIHZvaWQgcmVjb3JkX3BsYW5fZnVuY3Rpb25fZGVwZW5kZW5jeShQbGFubmVy SW5mbyAqcm9vdCwgT2lkIGZ1bmNpZCk7CiBleHRlcm4gdm9pZCByZWNvcmRfcGxhbl90eXBlX2Rl cGVuZGVuY3koUGxhbm5lckluZm8gKnJvb3QsIE9pZCB0eXBpZCk7CiBleHRlcm4gYm9vbCBleHRy YWN0X3F1ZXJ5X2RlcGVuZGVuY2llc193YWxrZXIoTm9kZSAqbm9kZSwgUGxhbm5lckluZm8gKmNv bnRleHQpOwogCitleHRlcm4gdm9pZCBwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlcyhQbGFu bmVySW5mbyAqcm9vdCk7CisKICNlbmRpZgkJCQkJCQkvKiBQTEFOTUFJTl9IICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX2V4cHIuaAppbmRleCA3ZDM4Y2E3NWY3Li5mNmE1Y2NiMGMxIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9leHByLmgKQEAgLTE3LDYgKzE3LDcgQEAKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4 dGVybiBQR0RMTElNUE9SVCBib29sIFRyYW5zZm9ybV9udWxsX2VxdWFsczsKK2V4dGVybiBQR0RM TElNUE9SVCBib29sIHNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0eV93YXJuaW5nOwogCiBleHRl cm4gTm9kZSAqdHJhbnNmb3JtRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIFBh cnNlRXhwcktpbmQgZXhwcktpbmQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBlY2Nk ZTgzNjI4Li40ZTk2OTJkMDVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTIyNSw2ICsy MjUsNyBAQCBzdHJ1Y3QgUGFyc2VTdGF0ZQogCWJvb2wJCXBfaGFzVGFyZ2V0U1JGczsKIAlib29s CQlwX2hhc1N1YkxpbmtzOwogCWJvb2wJCXBfaGFzTW9kaWZ5aW5nQ1RFOworCWJvb2wJCXBfaGFz U2Vzc2lvblZhcmlhYmxlczsKIAogCU5vZGUJICAgKnBfbGFzdF9zcmY7CQkvKiBtb3N0IHJlY2Vu dCBzZXQtcmV0dXJuaW5nIGZ1bmMvb3AgZm91bmQgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCA4YzFkZjRiMWZkLi42OTY3MWYyYzc4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtMjQ4Myw2ICsyNDgzLDcgQEAgU2VyaWFsaXplZFRyYW5zYWN0aW9uU3RhdGUKIFNlc3Np b24KIFNlc3Npb25CYWNrdXBTdGF0ZQogU2Vzc2lvbkVuZFR5cGUKK1Nlc3Npb25WYXJpYWJsZVZh bHVlCiBTZXRDb25zdHJhaW50U3RhdGUKIFNldENvbnN0cmFpbnRTdGF0ZURhdGEKIFNldENvbnN0 cmFpbnRUcmlnZ2VyRGF0YQpAQCAtMjY2Nyw2ICsyNjY4LDggQEAgU3VwcG9ydFJlcXVlc3RSb3dz CiBTdXBwb3J0UmVxdWVzdFNlbGVjdGl2aXR5CiBTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5CiBTdXBw b3J0UmVxdWVzdFdGdW5jTW9ub3RvbmljCitTVmFyaWFibGUKK1NWYXJpYWJsZURhdGEKIFNWYXJp YWJsZVhBY3RBY3Rpb24KIFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtCiBTeW4KLS0gCjIuNDAuMQoK --00000000000044e15505fbdb2de8 Content-Type: text/x-patch; charset="US-ASCII"; name="v20230517-1-0001-catalog-support-for-session-variables.patch" Content-Disposition: attachment; filename="v20230517-1-0001-catalog-support-for-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lhr4xes99 RnJvbSBkNjNmOGFiZTNiMzBhNTE4Y2E0ZjkyMGJmOTAxZmJiZmJmYTI3MTM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDEzIE5vdiAyMDIyIDE3OjM5OjM3ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwMS8xMF0gY2F0YWxvZyBzdXBwb3J0IGZvciBzZXNzaW9uIHZhcmlhYmxlcwoKSW1wbGVt ZW50YXRpb24gbmV3IHN5c3RlbSBvYmplY3QgY2xhc3MgLSBzZXNzaW9uIHZhcmlhYmxlIHdpdGgg bmV3IGFjY2VzcyByaWdodHMgU0VMRUNULCBVUERBVEUsCndpdGggcm91dGluZXMgZm9yIGNyZWF0 aW5nIHNlc3Npb24gdmFyaWFibGUsIGluaXRpYWxpemF0aW9uIG9mIHNlc3Npb24gdmFyaWFibGUg ZnJvbSBzeXN0ZW0KY2F0YWxvZywgYW5kIGxvb2t1cHMgcm91dGluZXMgZm9yIGlkZW50aWZpY2F0 aW9uIG9mIHNlc3Npb24gdmFyaWFibGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICB8 ICA3NyArKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgIHwgIDEz ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxkICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyAgICAgICAgIHwgMTQwICsrKysrKysrKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgICAgIHwgMTIyICsrKysrKystCiBzcmMv YmFja2VuZC9jYXRhbG9nL3BnX3NoZGVwZW5kLmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ192YXJpYWJsZS5jICAgICAgIHwgMzc4ICsrKysrKysrKysrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgICAgICAgICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC9j b21tYW5kcy9kcm9wY21kcy5jICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXZlbnRfdHJpZ2dlci5jICAgIHwgICA2ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxl LmMgfCAyNDMgKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgfCAgNDMgKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAg ICAgfCAxNDUgKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgIHwgICA1 ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQv dGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgIHwgIDE2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hY2wuYyAgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYyAgICAgfCAxMTMgKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2Fj aGUuYyAgICAgIHwgIDE0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oICAgICAg ICB8ICAgNSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZCAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmggICAgICAgICB8ICAgNSArCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmggICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfdmFyaWFibGUuaCAgICAgICB8IDEzMCArKysrKysrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMv c2Vzc2lvbl92YXJpYWJsZS5oIHwgIDM0ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oICAgICAgICAgIHwgIDIwICsrCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oICAgICAgICAgICB8ICAgMyArCiBz cmMvaW5jbHVkZS91dGlscy9hY2wuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3N5c2NhY2hlLmggICAgICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vaWRqb2lucy5vdXQgIHwgICA0ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICB8ICAgNSArCiA0MSBmaWxlcyBjaGFuZ2VkLCAxNTg4IGluc2VydGlvbnMoKyksIDEy IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdf dmFyaWFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Np b25fdmFyaWFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf dmFyaWFibGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Np b25fdmFyaWFibGUuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hh Y3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA2YTgzN2UxNTM5 Li5lZTIwYzJlNTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0zNiw2ICszNiw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19lbnVtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9y YWdlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9z ZXNzaW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCkBA IC0yMjI0LDYgKzIyMjUsOSBAQCBDb21taXRUcmFuc2FjdGlvbih2b2lkKQogCSAqLwogCXNtZ3JE b1BlbmRpbmdTeW5jcyh0cnVlLCBpc19wYXJhbGxlbF93b3JrZXIpOwogCisJLyogTGV0IE9OIENP TU1JVCBEUk9QICovCisJQXRQcmVFT1hhY3RfU2Vzc2lvblZhcmlhYmxlKHRydWUpOworCiAJLyog Y2xvc2UgbGFyZ2Ugb2JqZWN0cyBiZWZvcmUgbG93ZXItbGV2ZWwgY2xlYW51cCAqLwogCUF0RU9Y YWN0X0xhcmdlT2JqZWN0KHRydWUpOwogCkBAIC0yODAwLDYgKzI4MDQsOSBAQCBBYm9ydFRyYW5z YWN0aW9uKHZvaWQpCiAJQXRBYm9ydF9Qb3J0YWxzKCk7CiAJc21nckRvUGVuZGluZ1N5bmNzKGZh bHNlLCBpc19wYXJhbGxlbF93b3JrZXIpOwogCUF0RU9YYWN0X0xhcmdlT2JqZWN0KGZhbHNlKTsK KworCS8qICdmYWxzZScgbWVhbnMgaXQncyBhYm9ydCAqLworCUF0UHJlRU9YYWN0X1Nlc3Npb25W YXJpYWJsZShmYWxzZSk7CiAJQXRBYm9ydF9Ob3RpZnkoKTsKIAlBdEVPWGFjdF9SZWxhdGlvbk1h cChmYWxzZSwgaXNfcGFyYWxsZWxfd29ya2VyKTsKIAlBdEFib3J0X1R3b3BoYXNlKCk7CkBAIC01 MDI0LDYgKzUwMzEsOCBAQCBDb21taXRTdWJUcmFuc2FjdGlvbih2b2lkKQogCUF0RU9TdWJYYWN0 X1NQSSh0cnVlLCBzLT5zdWJUcmFuc2FjdGlvbklkKTsKIAlBdEVPU3ViWGFjdF9vbl9jb21taXRf YWN0aW9ucyh0cnVlLCBzLT5zdWJUcmFuc2FjdGlvbklkLAogCQkJCQkJCQkgIHMtPnBhcmVudC0+ c3ViVHJhbnNhY3Rpb25JZCk7CisJQXRFT1N1YlhhY3RfU2Vzc2lvblZhcmlhYmxlKHRydWUsIHMt PnN1YlRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCXMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7 CiAJQXRFT1N1YlhhY3RfTmFtZXNwYWNlKHRydWUsIHMtPnN1YlRyYW5zYWN0aW9uSWQsCiAJCQkJ CQkgIHMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7CiAJQXRFT1N1YlhhY3RfRmlsZXModHJ1 ZSwgcy0+c3ViVHJhbnNhY3Rpb25JZCwKQEAgLTUxODcsNiArNTE5Niw4IEBAIEFib3J0U3ViVHJh bnNhY3Rpb24odm9pZCkKIAkJQXRFT1N1YlhhY3RfU1BJKGZhbHNlLCBzLT5zdWJUcmFuc2FjdGlv bklkKTsKIAkJQXRFT1N1YlhhY3Rfb25fY29tbWl0X2FjdGlvbnMoZmFsc2UsIHMtPnN1YlRyYW5z YWN0aW9uSWQsCiAJCQkJCQkJCQkgIHMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7CisJCUF0 RU9TdWJYYWN0X1Nlc3Npb25WYXJpYWJsZShmYWxzZSwgcy0+c3ViVHJhbnNhY3Rpb25JZCwKKwkJ CQkJCQkJCXMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7CiAJCUF0RU9TdWJYYWN0X05hbWVz cGFjZShmYWxzZSwgcy0+c3ViVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkgIHMtPnBhcmVudC0+c3Vi VHJhbnNhY3Rpb25JZCk7CiAJCUF0RU9TdWJYYWN0X0ZpbGVzKGZhbHNlLCBzLT5zdWJUcmFuc2Fj dGlvbklkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggYTYwMTA3YmY5NC4uMzRhOGFjOThhOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL01ha2VmaWxlCkBAIC00NSw2ICs0NSw3IEBAIE9CSlMgPSBcCiAJcGdfc2hkZXBlbmQu byBcCiAJcGdfc3Vic2NyaXB0aW9uLm8gXAogCXBnX3R5cGUubyBcCisJcGdfdmFyaWFibGUubyBc CiAJc3RvcmFnZS5vIFwKIAl0b2FzdGluZy5vCiAKQEAgLTcyLDcgKzczLDggQEAgQ0FUQUxPR19I RUFERVJTIDo9IFwKIAlwZ19jb2xsYXRpb24uaCBwZ19wYXJhbWV0ZXJfYWNsLmggcGdfcGFydGl0 aW9uZWRfdGFibGUuaCBcCiAJcGdfcmFuZ2UuaCBwZ190cmFuc2Zvcm0uaCBcCiAJcGdfc2VxdWVu Y2UuaCBwZ19wdWJsaWNhdGlvbi5oIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oIFwKLQlwZ19w dWJsaWNhdGlvbl9yZWwuaCBwZ19zdWJzY3JpcHRpb24uaCBwZ19zdWJzY3JpcHRpb25fcmVsLmgK KwlwZ19wdWJsaWNhdGlvbl9yZWwuaCBwZ19zdWJzY3JpcHRpb24uaCBwZ19zdWJzY3JpcHRpb25f cmVsLmggXAorCXBnX3ZhcmlhYmxlLmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRBTE9H X0hFQURFUlM6JS5oPSVfZC5oKSBzY2hlbWFwZy5oIHN5c3RlbV9ma19pbmZvLmgKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv YWNsY2hrLmMKaW5kZXggNDVjZGNkM2RjNi4uYzJmNmNhNGExZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5j CkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRl ICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCkBAIC0yODEsNiArMjgyLDkgQEAgcmVzdHJpY3Rf YW5kX2NoZWNrX2dyYW50KGJvb2wgaXNfZ3JhbnQsIEFjbE1vZGUgYXZhaWxfZ29wdGlvbnMsIGJv b2wgYWxsX3ByaXZzLAogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgogCQkJd2hvbGVfbWFz ayA9IEFDTF9BTExfUklHSFRTX1BBUkFNRVRFUl9BQ0w7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CisJCQl3aG9sZV9tYXNrID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0 IHR5cGU6ICVkIiwgb2JqdHlwZSk7CiAJCQkvKiBub3QgcmVhY2hlZCwgYnV0IGtlZXAgY29tcGls ZXIgcXVpZXQgKi8KQEAgLTUyNSw2ICs1MjksMTAgQEAgRXhlY3V0ZUdyYW50U3RtdChHcmFudFN0 bXQgKnN0bXQpCiAJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1BBUkFNRVRFUl9B Q0w7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2aWxlZ2UgdHlwZSAl cyBmb3IgcGFyYW1ldGVyIik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJ CQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJZXJyb3Jtc2cg PSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNlc3Npb24gdmFy aWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0eXBlKTsK QEAgLTYzMCw2ICs2MzgsOSBAQCBFeGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFudCAqaXN0 bXQpCiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6CiAJCQlFeGVjR3JhbnRfUGFyYW1ldGVy KGlzdG10KTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCUV4ZWNHcmFu dF9jb21tb24oaXN0bXQsIFZhcmlhYmxlUmVsYXRpb25JZCwgQUNMX0FMTF9SSUdIVFNfVkFSSUFC TEUsIE5VTEwpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNv Z25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGlzdG10LT5vYmp0eXBl KTsKQEAgLTgyMCw2ICs4MzEsMTggQEAgb2JqZWN0TmFtZXNUb09pZHMoT2JqZWN0VHlwZSBvYmp0 eXBlLCBMaXN0ICpvYmpuYW1lcywgYm9vbCBpc19ncmFudCkKIAkJCQkJb2JqZWN0cyA9IGxhcHBl bmRfb2lkKG9iamVjdHMsIHBhcmFtZXRlcklkKTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIE9C SkVDVF9WQVJJQUJMRToKKwkJCWZvcmVhY2goY2VsbCwgb2JqbmFtZXMpCisJCQl7CisJCQkJUmFu Z2VWYXIgICAqdmFydmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChjZWxsKTsKKwkJCQlPaWQJCQly ZWxPaWQ7CisKKwkJCQlyZWxPaWQgPSBMb29rdXBWYXJpYWJsZSh2YXJ2YXItPnNjaGVtYW5hbWUs CisJCQkJCQkJCQkJdmFydmFyLT5yZWxuYW1lLAorCQkJCQkJCQkJCWZhbHNlKTsKKwkJCQlvYmpl Y3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgcmVsT2lkKTsKKwkJCX0KKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTog JWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsKQEAgLTkwOSw2ICs5MzIsMzIgQEAgb2JqZWN0c0lu U2NoZW1hVG9PaWRzKE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqbnNwbmFtZXMpCiAJCQkJCXRh YmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIAkJCQl9CiAJCQkJYnJlYWs7CisJCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQl7CisJCQkJCVNjYW5LZXlEYXRhIGtleTsKKwkJCQkJ UmVsYXRpb24JcmVsOworCQkJCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCQkJCUhlYXBUdXBsZQl0 dXBsZTsKKworCQkJCQlTY2FuS2V5SW5pdCgma2V5LAorCQkJCQkJCQlBbnVtX3BnX3ZhcmlhYmxl X3Zhcm5hbWVzcGFjZSwKKwkJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAor CQkJCQkJCQlPYmplY3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisKKwkJCQkJcmVsID0gdGFi bGVfb3BlbihWYXJpYWJsZVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJCXNjYW4g PSB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhyZWwsIDEsICZrZXkpOworCisJCQkJCXdoaWxlICgo dHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxM KQorCQkJCQl7CisJCQkJCQlPaWQJCQlvaWQgPSAoKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHR1 cGxlKSktPm9pZDsKKworCQkJCQkJb2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIG9pZCk7 CisJCQkJCX0KKworCQkJCQl0YWJsZV9lbmRzY2FuKHNjYW4pOworCQkJCQl0YWJsZV9jbG9zZShy ZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJ CQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg R3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKQEAgLTEwNjgsNiArMTExNywxMCBAQCBFeGVjQWx0ZXJE ZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckRlZmF1bHRQcml2 aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7 CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBm b3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxf cHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0 ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNlc3Npb24gdmFyaWFibGUi KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBH cmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBhY3Rpb24tPm9ianR5cGUpOwpAQCAt MTI1OSw2ICsxMzEyLDEyIEBAIFNldERlZmF1bHRBQ0woSW50ZXJuYWxEZWZhdWx0QUNMICppYWNs cykKIAkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQlicmVh azsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW9ianR5cGUgPSBERUZBQ0xPQkpfVkFS SUFCTEU7CisJCQlpZiAoaWFjbHMtPmFsbF9wcml2cyAmJiB0aGlzX3ByaXZpbGVnZXMgPT0gQUNM X05PX1JJR0hUUykKKwkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJM RTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IG9iamVjdCB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGlhY2xzLT5vYmp0eXBlKTsKQEAgLTE0OTAs NiArMTU0OSw5IEBAIFJlbW92ZVJvbGVGcm9tT2JqZWN0QUNMKE9pZCByb2xlaWQsIE9pZCBjbGFz c2lkLCBPaWQgb2JqaWQpCiAJCQljYXNlIERFRkFDTE9CSl9OQU1FU1BBQ0U6CiAJCQkJaWFjbHMu b2JqdHlwZSA9IE9CSkVDVF9TQ0hFTUE7CiAJCQkJYnJlYWs7CisJCQljYXNlIERFRkFDTE9CSl9W QVJJQUJMRToKKwkJCQlpYWNscy5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQkvKiBTaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBkZWZhdWx0IEFDTCB0eXBlOiAlZCIsCkBAIC0xNTUwLDYgKzE2MTIs OSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lk IG9iamlkKQogCQkJY2FzZSBQYXJhbWV0ZXJBY2xSZWxhdGlvbklkOgogCQkJCWlzdG10Lm9ianR5 cGUgPSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDsKIAkJCQlicmVhazsKKwkJCWNhc2UgVmFyaWFibGVS ZWxhdGlvbklkOgorCQkJCWlzdG10Lm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJYnJl YWs7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG9iamVjdCBjbGFz cyAldSIsIGNsYXNzaWQpOwogCQkJCWJyZWFrOwpAQCAtMjc4Myw2ICsyODQ4LDkgQEAgYWNsY2hl Y2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNl IE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmll ZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2Vzc2lv biB2YXJpYWJsZSAlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJ CQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciB2aWV3ICVzIik7 CiAJCQkJCQlicmVhazsKQEAgLTI4OTQsNiArMjk2Miw5IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJl c3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfVFlQRToK IAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiB0eXBlICVzIik7CiAJ CQkJCQlicmVhazsKKwkJCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCQltc2cgPSBnZXR0 ZXh0X25vb3AoIm11c3QgYmUgb3duZXIgb2Ygc2Vzc2lvbiB2YXJpYWJsZSAlcyIpOworCQkJCQkJ YnJlYWs7CiAJCQkJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3Ao Im11c3QgYmUgb3duZXIgb2YgdmlldyAlcyIpOwogCQkJCQkJYnJlYWs7CkBAIC0zMDQyLDYgKzMx MTMsOCBAQCBwZ19hY2xtYXNrKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG9iamVjdF9vaWQsIEF0 dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAogCQkJcmV0dXJuIEFDTF9OT19SSUdIVFM7CiAJ CWNhc2UgT0JKRUNUX1RZUEU6CiAJCQlyZXR1cm4gb2JqZWN0X2FjbG1hc2soVHlwZVJlbGF0aW9u SWQsIG9iamVjdF9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFC TEU6CisJCQlyZXR1cm4gb2JqZWN0X2FjbG1hc2soVmFyaWFibGVSZWxhdGlvbklkLCBvYmplY3Rf b2lkLCByb2xlaWQsIG1hc2ssIGhvdyk7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAtNDE2 Niw2ICs0MjM5LDEwIEBAIGdldF91c2VyX2RlZmF1bHRfYWNsKE9iamVjdFR5cGUgb2JqdHlwZSwg T2lkIG93bmVySWQsIE9pZCBuc3Bfb2lkKQogCQkJZGVmYWNsb2JqdHlwZSA9IERFRkFDTE9CSl9O QU1FU1BBQ0U7CiAJCQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWRlZmFj bG9ianR5cGUgPSBERUZBQ0xPQkpfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0Ogog CQkJcmV0dXJuIE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBl bmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCBmOGExMzZi YTBhLi43N2FjYmVkYTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVu Y3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNjUsMTIgKzY1 LDE1IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1l bnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9l dmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9uLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvcG9saWN5LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3Nlc3Npb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5o IgpAQCAtMTg4LDcgKzE5MSw4IEBAIHN0YXRpYyBjb25zdCBPaWQgb2JqZWN0X2NsYXNzZXNbXSA9 IHsKIAlQdWJsaWNhdGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfUFVCTElDQVRJT04gKi8KIAlQ dWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsCS8qIE9DTEFTU19QVUJMSUNBVElPTl9SRUwgKi8KIAlT dWJzY3JpcHRpb25SZWxhdGlvbklkLAkJLyogT0NMQVNTX1NVQlNDUklQVElPTiAqLwotCVRyYW5z Zm9ybVJlbGF0aW9uSWQJCQkvKiBPQ0xBU1NfVFJBTlNGT1JNICovCisJVHJhbnNmb3JtUmVsYXRp b25JZCwJCS8qIE9DTEFTU19UUkFOU0ZPUk0gKi8KKwlWYXJpYWJsZVJlbGF0aW9uSWQJCQkvKiBP Q0xBU1NfVkFSSUFCTEUgKi8KIH07CiAKIC8qCkBAIC0xNTE0LDYgKzE1MTgsMTAgQEAgZG9EZWxl dGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGludCBmbGFncykKIAkJCURyb3BPYmpl Y3RCeUlkKG9iamVjdCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19WQVJJQUJMRToKKwkJ CURyb3BWYXJpYWJsZShvYmplY3QtPm9iamVjdElkKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJ ICogVGhlc2UgZ2xvYmFsIG9iamVjdCB0eXBlcyBhcmUgbm90IHN1cHBvcnRlZCBoZXJlLgogCQkJ ICovCkBAIC0yOTY2LDYgKzI5NzQsOSBAQCBnZXRPYmplY3RDbGFzcyhjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QpCiAKIAkJY2FzZSBUcmFuc2Zvcm1SZWxhdGlvbklkOgogCQkJcmV0dXJuIE9D TEFTU19UUkFOU0ZPUk07CisKKwkJY2FzZSBWYXJpYWJsZVJlbGF0aW9uSWQ6CisJCQlyZXR1cm4g T0NMQVNTX1ZBUklBQkxFOwogCX0KIAogCS8qIHNob3VsZG4ndCBnZXQgaGVyZSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvbWVzb24uYnVpbGQKaW5kZXggZmE2NjA5ZTU3Ny4uZjQ4ZTNjYjA3ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L21lc29uLmJ1aWxkCkBAIC0zMiw2ICszMiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygK ICAgJ3BnX3NoZGVwZW5kLmMnLAogICAncGdfc3Vic2NyaXB0aW9uLmMnLAogICAncGdfdHlwZS5j JywKKyAgJ3BnX3ZhcmlhYmxlLmMnLAogICAnc3RvcmFnZS5jJywKICAgJ3RvYXN0aW5nLmMnLAog KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggNzNkZGI2Nzg4Mi4uOWEwNDUzMGQxZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJs ZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTc2NSw2ICs3NjYsNjkgQEAgUmVsYXRp b25Jc1Zpc2libGUoT2lkIHJlbGlkKQogCXJldHVybiB2aXNpYmxlOwogfQogCisvKgorICogVmFy aWFibGVJc1Zpc2libGUKKyAqCQlEZXRlcm1pbmUgd2hldGhlciBhIHZhcmlhYmxlIChpZGVudGlm aWVkIGJ5IE9JRCkgaXMgdmlzaWJsZSBpbiB0aGUKKyAqCQljdXJyZW50IHNlYXJjaCBwYXRoLiBW aXNpYmxlIG1lYW5zICJ3b3VsZCBiZSBmb3VuZCBieSBzZWFyY2hpbmcKKyAqCQlmb3IgdGhlIHVu cXVhbGlmaWVkIHZhcmlhYmxlIG5hbWUiLgorICovCitib29sCitWYXJpYWJsZUlzVmlzaWJsZShP aWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXZhcnR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZv cm07CisJT2lkCQkJdmFybmFtZXNwYWNlOworCWJvb2wJCXZpc2libGU7CisKKwl2YXJ0dXAgPSBT ZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodmFydHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJdmFyZm9ybSA9IChG b3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodmFydHVwKTsKKworCXJlY29tcHV0ZU5hbWVzcGFj ZVBhdGgoKTsKKworCS8qCisJICogUXVpY2sgY2hlY2s6IGlmIGl0IGFpbid0IGluIHRoZSBwYXRo IGF0IGFsbCwgaXQgYWluJ3QgdmlzaWJsZS4gSXRlbXMgaW4KKwkgKiB0aGUgc3lzdGVtIG5hbWVz cGFjZSBhcmUgc3VyZWx5IGluIHRoZSBwYXRoIGFuZCBzbyB3ZSBuZWVkbid0IGV2ZW4gZG8KKwkg KiBsaXN0X21lbWJlcl9vaWQoKSBmb3IgdGhlbS4KKwkgKi8KKwl2YXJuYW1lc3BhY2UgPSB2YXJm b3JtLT52YXJuYW1lc3BhY2U7CisJaWYgKHZhcm5hbWVzcGFjZSAhPSBQR19DQVRBTE9HX05BTUVT UEFDRSAmJgorCQkhbGlzdF9tZW1iZXJfb2lkKGFjdGl2ZVNlYXJjaFBhdGgsIHZhcm5hbWVzcGFj ZSkpCisJCXZpc2libGUgPSBmYWxzZTsKKwllbHNlCisJeworCQkvKgorCQkgKiBJZiBpdCBpcyBp biB0aGUgcGF0aCwgaXQgbWlnaHQgc3RpbGwgbm90IGJlIHZpc2libGU7IGl0IGNvdWxkIGJlCisJ CSAqIGhpZGRlbiBieSBhbm90aGVyIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUgZWFybGllciBp biB0aGUgcGF0aC4gU28KKwkJICogd2UgbXVzdCBkbyBhIHNsb3cgY2hlY2sgZm9yIGNvbmZsaWN0 aW5nIHJlbGF0aW9ucy4KKwkJICovCisJCWNoYXIJICAgKnZhcm5hbWUgPSBOYW1lU3RyKHZhcmZv cm0tPnZhcm5hbWUpOworCQlMaXN0Q2VsbCAgICpsOworCisJCXZpc2libGUgPSBmYWxzZTsKKwkJ Zm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQlPaWQJCQluYW1lc3BhY2VJZCA9 IGxmaXJzdF9vaWQobCk7CisKKwkJCWlmIChuYW1lc3BhY2VJZCA9PSB2YXJuYW1lc3BhY2UpCisJ CQl7CisJCQkJLyogRm91bmQgaXQgZmlyc3QgaW4gcGF0aCAqLworCQkJCXZpc2libGUgPSB0cnVl OworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKE9pZElzVmFsaWQoZ2V0X3Zhcm5hbWVfdmFyaWQo dmFybmFtZSwgbmFtZXNwYWNlSWQpKSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBzb21ldGhpbmcgZWxz ZSBmaXJzdCBpbiBwYXRoICovCisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlSZWxlYXNl U3lzQ2FjaGUodmFydHVwKTsKKworCXJldHVybiB2aXNpYmxlOworfQogCiAvKgogICogVHlwZW5h bWVHZXRUeXBpZApAQCAtMjg0MCw2ICsyOTA0LDcxIEBAIFRTQ29uZmlnSXNWaXNpYmxlKE9pZCBj ZmdpZCkKIAlyZXR1cm4gdmlzaWJsZTsKIH0KIAorLyoKKyAqIFJldHVybnMgb2lkIG9mIHNlc3Np b24gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IHBvc3NpYmx5IHF1YWxpZmllZCBpZGVudGlmaWVyLgor ICoKKyAqIElmIG5vdCBmb3VuZCwgcmV0dXJucyBJbnZhbGlkT2lkIGlmIG1pc3Npbmdfb2ssIGVs c2UgdGhyb3dzIGVycm9yLgorICogV2hlbiByb3d0eXBlX29ubHkgYXJndW1lbnQgaXMgdHJ1ZSB0 aGUgc2Vzc2lvbiB2YXJpYWJsZXMgb2Ygbm90CisgKiBjb21wb3NpdGUgdHlwZXMgYXJlIGlnbm9y ZWQuIFRoaXMgc2hvdWxkIHRvIHJlZHVjZSBwb3NzaWJsZSBjb2xsaXNpb25zLgorICovCitPaWQK K0xvb2t1cFZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsCisJCQkgICBjb25zdCBjaGFyICp2 YXJuYW1lLAorCQkJICAgYm9vbCBtaXNzaW5nX29rKQoreworCU9pZAkJCW5hbWVzcGFjZUlkOwor CU9pZAkJCXZhcm9pZCA9IEludmFsaWRPaWQ7CisJTGlzdENlbGwgICAqbDsKKworCWlmIChuc3Bu YW1lKQorCXsKKwkJbmFtZXNwYWNlSWQgPSBMb29rdXBFeHBsaWNpdE5hbWVzcGFjZShuc3BuYW1l LCBtaXNzaW5nX29rKTsKKworCQkvKgorCQkgKiBJZiBuc3BuYW1lIGlzIG5vdCBhIGtub3duIG5h bWVzcGFjZSwgdGhlbiBuc3BuYW1lLnZhcm5hbWUgY2Fubm90IGJlCisJCSAqIGFueSB1c2FibGUg c2Vzc2lvbiB2YXJpYWJsZS4KKwkJICovCisJCWlmIChPaWRJc1ZhbGlkKG5hbWVzcGFjZUlkKSkK KwkJeworCQkJdmFyb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxFTkFNRU5TUCwgQW51bV9w Z192YXJpYWJsZV9vaWQsCisJCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKHZhcm5hbWUpLAorCQkJ CQkJCQkJIE9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKwkJfQorCX0KKwllbHNlCisJ eworCQkvKiBJdGVyYXRlIG92ZXIgc2NoZW1hcyBpbiBzZWFyY2hfcGF0aCAqLworCQlyZWNvbXB1 dGVOYW1lc3BhY2VQYXRoKCk7CisKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7 CisJCQluYW1lc3BhY2VJZCA9IGxmaXJzdF9vaWQobCk7CisKKwkJCXZhcm9pZCA9IEdldFN5c0Nh Y2hlT2lkMihWQVJJQUJMRU5BTUVOU1AsIEFudW1fcGdfdmFyaWFibGVfb2lkLAorCQkJCQkJCQkJ IFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG5h bWVzcGFjZUlkKSk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZCkpCisJCQkJYnJlYWs7CisJ CX0KKwl9CisKKwlpZiAoIU9pZElzVmFsaWQodmFyb2lkKSAmJiAhbWlzc2luZ19vaykKKwl7CisJ CWlmIChuc3BuYW1lKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVz XCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCW5zcG5hbWUsIHZhcm5hbWUpKSk7CisJCWVsc2UK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVD VCksCisJCQkJCSBlcnJtc2coInNlc3Npb24gdmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCQl2YXJuYW1lKSkpOworCX0KKworCXJldHVybiB2YXJvaWQ7Cit9CiAKIC8qCiAg KiBEZWNvbnN0cnVjdFF1YWxpZmllZE5hbWUKQEAgLTQ2NjEsMyArNDc5MCwxNCBAQCBwZ19pc19v dGhlcl90ZW1wX3NjaGVtYShQR19GVU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX0JPT0woaXNP dGhlclRlbXBOYW1lc3BhY2Uob2lkKSk7CiB9CisKK0RhdHVtCitwZ192YXJpYWJsZV9pc192aXNp YmxlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJb2lkID0gUEdfR0VUQVJHX09JRCgwKTsK KworCWlmICghU2VhcmNoU3lzQ2FjaGVFeGlzdHMxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERh dHVtKG9pZCkpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJUEdfUkVUVVJOX0JPT0woVmFyaWFi bGVJc1Zpc2libGUob2lkKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL29i amVjdGFkZHJlc3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCmluZGV4 IDk1ZmVmYzc1NjUuLmQ1OTMwZjI2MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv b2JqZWN0YWRkcmVzcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5j CkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9t YXBwaW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNs dWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCkBAIC02MzMsNiArNjM0LDIwIEBAIHN0YXRp YyBjb25zdCBPYmplY3RQcm9wZXJ0eVR5cGUgT2JqZWN0UHJvcGVydHlbXSA9CiAJCU9CSkVDVF9V U0VSX01BUFBJTkcsCiAJCWZhbHNlCiAJfSwKKwl7CisJCSJzZXNzaW9uIHZhcmlhYmxlIiwKKwkJ VmFyaWFibGVSZWxhdGlvbklkLAorCQlWYXJpYWJsZU9iamVjdEluZGV4SWQsCisJCVZBUklBQkxF T0lELAorCQlWQVJJQUJMRU5BTUVOU1AsCisJCUFudW1fcGdfdmFyaWFibGVfb2lkLAorCQlBbnVt X3BnX3ZhcmlhYmxlX3Zhcm5hbWUsCisJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAor CQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCwK KwkJT0JKRUNUX1ZBUklBQkxFLAorCQl0cnVlCisJfQogfTsKIAogLyoKQEAgLTg2OSw2ICs4ODQs MTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlwZV9tYXAKIAkvKiBPQ0xBU1NfU1RB VElTVElDX0VYVCAqLwogCXsKIAkJInN0YXRpc3RpY3Mgb2JqZWN0IiwgT0JKRUNUX1NUQVRJU1RJ Q19FWFQKKwl9LAorCS8qIE9DTEFTU19WQVJJQUJMRSAqLworCXsKKwkJInNlc3Npb24gdmFyaWFi bGUiLCBPQkpFQ1RfVkFSSUFCTEUKIAl9CiB9OwogCkBAIC04OTQsNiArOTEzLDcgQEAgc3RhdGlj IE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX2F0dHJkZWYoT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQkJCQkJCQkJYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNz IGdldF9vYmplY3RfYWRkcmVzc190eXBlKE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJCQkJCQkJ IFR5cGVOYW1lICp0eXBlbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyBPYmplY3RBZGRy ZXNzIGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2lu Z19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BjZihPYmpl Y3RUeXBlIG9ianR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCQkJCQkJIGJvb2wgbWlzc2luZ19v ayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BmX21lbWJlcihP YmplY3RUeXBlIG9ianR5cGUsCkBAIC0xMTY0LDYgKzExODQsOSBAQCBnZXRfb2JqZWN0X2FkZHJl c3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQkJCQkJCQkJCQkJCQkgbWlz c2luZ19vayk7CiAJCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CiAJCQkJYnJlYWs7CisJCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQlhZGRyZXNzID0gZ2V0X29iamVjdF9hZGRyZXNzX3Zh cmlhYmxlKGNhc3ROb2RlKExpc3QsIG9iamVjdCksIG1pc3Npbmdfb2spOworCQkJCWJyZWFrOwog CQkJCS8qIG5vIGRlZmF1bHQsIHRvIGxldCBjb21waWxlciB3YXJuIGFib3V0IG1pc3NpbmcgY2Fz ZSAqLwogCQl9CiAKQEAgLTIwMzgsMTYgKzIwNjEsMjAgQEAgZ2V0X29iamVjdF9hZGRyZXNzX2Rl ZmFjbChMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFN RVNQQUNFOgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBE RUZBQ0xPQkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGRl ZmF1bHQgQUNMIG9iamVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUpLAotCQkJCQkgZXJyaGludCgi VmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwi JWNcIi4iLAorCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwi JWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIsCiAJCQkJCQkJIERFRkFDTE9C Sl9SRUxBVElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNFLAogCQkJCQkJCSBERUZBQ0xP QkpfRlVOQ1RJT04sCiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAotCQkJCQkJCSBERUZBQ0xPQkpf TkFNRVNQQUNFKSkpOworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFLAorCQkJCQkJCSBERUZB Q0xPQkpfVkFSSUFCTEUpKSk7CiAJfQogCiAJLyoKQEAgLTIxMzEsNiArMjE1OCwyNCBAQCB0ZXh0 YXJyYXlfdG9fc3RydmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQogCXJldHVybiBsaXN0OwogfQog CisvKgorICogRmluZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSBzZXNzaW9uIHZhcmlhYmxlCisg Ki8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitnZXRfb2JqZWN0X2FkZHJlc3NfdmFyaWFibGUoTGlz dCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCit7CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwor CWNoYXIJICAgKm5zcG5hbWUgPSBOVUxMOworCWNoYXIJICAgKnZhcm5hbWUgPSBOVUxMOworCisJ T2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBWYXJpYWJsZVJlbGF0aW9uSWQsIEludmFsaWRPaWQp OworCisJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9iamVjdCwgJm5zcG5hbWUsICZ2YXJuYW1l KTsKKwlhZGRyZXNzLm9iamVjdElkID0gTG9va3VwVmFyaWFibGUobnNwbmFtZSwgdmFybmFtZSwg bWlzc2luZ19vayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKwogLyoKICAqIFNRTC1jYWxsYWJs ZSB2ZXJzaW9uIG9mIGdldF9vYmplY3RfYWRkcmVzcwogICovCkBAIC0yMzI1LDYgKzIzNzAsNyBA QCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSBPQkpFQ1Rf VEFCQ09OU1RSQUlOVDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BG QU1JTFk6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJb2Jqbm9kZSA9IChOb2RlICopIG5h bWU7CiAJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfQUNDRVNTX01FVEhPRDoKQEAgLTI0OTYsNiAr MjU0Miw3IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBv Ymp0eXBlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19F WFQ6CiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1RfVFNDT05GSUdV UkFUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCWlmICghb2JqZWN0X293bmVyY2hl Y2soYWRkcmVzcy5jbGFzc0lkLCBhZGRyZXNzLm9iamVjdElkLCByb2xlaWQpKQogCQkJCWFjbGNo ZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwKIAkJCQkJCQkgICBOYW1lTGlz dFRvU3RyaW5nKGNhc3ROb2RlKExpc3QsIG9iamVjdCkpKTsKQEAgLTM0ODQsNiArMzUzMSwzMiBA QCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wg bWlzc2luZ19vaykKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFTU19WQVJJQUJMRToK KwkJCXsKKwkJCQljaGFyCSAgICpuc3BuYW1lOworCQkJCUhlYXBUdXBsZQl0dXA7CisJCQkJRm9y bV9wZ192YXJpYWJsZSB2YXJmb3JtOworCisJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklB QkxFT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOwor CisJCQkJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJ CWlmIChWYXJpYWJsZUlzVmlzaWJsZShvYmplY3QtPm9iamVjdElkKSkKKwkJCQkJbnNwbmFtZSA9 IE5VTEw7CisJCQkJZWxzZQorCQkJCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZv cm0tPnZhcm5hbWVzcGFjZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInNl c3Npb24gdmFyaWFibGUgJXMiKSwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVy KG5zcG5hbWUsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKSk7CisK KwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9D TEFTU19UU1BBUlNFUjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJdHVwOwpAQCAtMzgzNiw2ICszOTA5 LDE2IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwg Ym9vbCBtaXNzaW5nX29rKQogCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3 IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKIAkJCQkJCQkJCQkgcm9sZW5hbWUpOwog CQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJaWYgKG5z cG5hbWUpCisJCQkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCQkgXygi ZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzZXNzaW9uIHZhcmlhYmxlcyBiZWxvbmdpbmcgdG8g cm9sZSAlcyBpbiBzY2hlbWEgJXMiKSwKKwkJCQkJCQkJCQkJIHJvbGVuYW1lLCBuc3BuYW1lKTsK KwkJCQkJCWVsc2UKKwkJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsCisJCQkJCQkJCQkJ CSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNlc3Npb24gdmFyaWFibGVzIGJlbG9uZ2lu ZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xlbmFtZSk7CisJCQkJCQlicmVhazsKIAkJ CQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBnZXQgaGVyZSAqLwogCQkJCQkJaWYgKG5z cG5hbWUpCkBAIC00NTg1LDYgKzQ2NjgsMTAgQEAgZ2V0T2JqZWN0VHlwZURlc2NyaXB0aW9uKGNv bnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmYnVmZmVyLCAidHJhbnNmb3JtIik7CiAJCQlicmVhazsKIAorCQljYXNl IE9DTEFTU19WQVJJQUJMRToKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInNl c3Npb24gdmFyaWFibGUiKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlcmUncyBpbnRl bnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZTsgd2Ugd2FudCB0aGUKIAkJCSAqIGNvbXBp bGVyIHRvIHdhcm4gaWYgYSBuZXcgT0NMQVNTIGhhc24ndCBiZWVuIGhhbmRsZWQgYWJvdmUuCkBA IC01NjkyLDYgKzU3NzksMTAgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RB ZGRyZXNzICpvYmplY3QsCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCiAJ CQkJCQkJCQkJCSAgICIgb24gc2NoZW1hcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVG QUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAor CQkJCQkJCQkJCQkgICAiIG9uIHNlc3Npb24gdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJ CQl9CiAKIAkJCQlpZiAob2JqbmFtZSkKQEAgLTU5MzIsNiArNjAyMywzMyBAQCBnZXRPYmplY3RJ ZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCX0KIAkJCWJyZWFr OwogCisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJeworCQkJCWNoYXIJICAgKnNjaGVtYTsK KwkJCQljaGFyCSAgICp2YXJuYW1lOworCQkJCUhlYXBUdXBsZQl0dXA7CisJCQkJRm9ybV9wZ192 YXJpYWJsZSB2YXJmb3JtOworCisJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lE LCBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IHNlc3Npb24gdmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJ dmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCXNjaGVt YSA9IGdldF9uYW1lc3BhY2VfbmFtZV9vcl90ZW1wKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisJ CQkJdmFybmFtZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWZmZXIsICIlcyIsCisJCQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmll cihzY2hlbWEsIHZhcm5hbWUpKTsKKworCQkJCWlmIChvYmpuYW1lKQorCQkJCQkqb2JqbmFtZSA9 IGxpc3RfbWFrZTIoc2NoZW1hLCB2YXJuYW1lKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXAp OworCQkJCWJyZWFrOworCQkJfQorCiAJCQkvKgogCQkJICogVGhlcmUncyBpbnRlbnRpb25hbGx5 IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZTsgd2Ugd2FudCB0aGUKIAkJCSAqIGNvbXBpbGVyIHRvIHdh cm4gaWYgYSBuZXcgT0NMQVNTIGhhc24ndCBiZWVuIGhhbmRsZWQgYWJvdmUuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3NoZGVwZW5kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3NoZGVwZW5kLmMKaW5kZXggNjRkMzI2ZjA3My4uODQ4YjM2YTg3ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zaGRlcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc2hkZXBlbmQuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHNfZGljdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdXNlcl9tYXBwaW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL2FsdGVyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29sbGF0aW9u Y21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbnZlcnNpb25jbWRzLmgiCkBAIC0xNjEzLDYg KzE2MTQsNyBAQCBzaGRlcFJlYXNzaWduT3duZWQoTGlzdCAqcm9sZWlkcywgT2lkIG5ld3JvbGUp CiAJCQkJY2FzZSBEYXRhYmFzZVJlbGF0aW9uSWQ6CiAJCQkJY2FzZSBUU0NvbmZpZ1JlbGF0aW9u SWQ6CiAJCQkJY2FzZSBUU0RpY3Rpb25hcnlSZWxhdGlvbklkOgorCQkJCWNhc2UgVmFyaWFibGVS ZWxhdGlvbklkOgogCQkJCQl7CiAJCQkJCQlPaWQJCQljbGFzc0lkID0gc2RlcEZvcm0tPmNsYXNz aWQ7CiAJCQkJCQlSZWxhdGlvbgljYXRhbG9nOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ192YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2MjEyNmJmN2EKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMKQEAgLTAsMCArMSwz NzggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3ZhcmlhYmxlLmMKKyAqCQlzZXNz aW9uIHZhcmlhYmxlcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYwor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisj aW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMu aCIKKyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2RlcGVu ZGVuY3kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3Bh Y2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgorI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKKyNp bmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9l eHByLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3N5 c2NhY2hlLmgiCisKKworc3RhdGljIE9iamVjdEFkZHJlc3MgY3JlYXRlX3ZhcmlhYmxlKGNvbnN0 IGNoYXIgKnZhck5hbWUsCisJCQkJCQkJCQkgT2lkIHZhck5hbWVzcGFjZSwKKwkJCQkJCQkJCSBP aWQgdmFyVHlwZSwKKwkJCQkJCQkJCSBpbnQzMiB2YXJUeXBtb2QsCisJCQkJCQkJCQkgT2lkIHZh ck93bmVyLAorCQkJCQkJCQkJIE9pZCB2YXJDb2xsYXRpb24sCisJCQkJCQkJCQkgTm9kZSAqdmFy RGVmZXhwciwKKwkJCQkJCQkJCSBWYXJpYWJsZUVPWEFjdGlvbiBlb3hhY3Rpb24sCisJCQkJCQkJ CQkgYm9vbCBpc19ub3RfbnVsbCwKKwkJCQkJCQkJCSBib29sIGlmX25vdF9leGlzdHMsCisJCQkJ CQkJCQkgYm9vbCBpc19pbW11dGFibGUpOworCisKKy8qCisgKiBDcmVhdGVzIGVudHJ5IGluIHBn X3ZhcmlhYmxlIHRhYmxlCisgKi8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitjcmVhdGVfdmFyaWFi bGUoY29uc3QgY2hhciAqdmFyTmFtZSwKKwkJCQlPaWQgdmFyTmFtZXNwYWNlLAorCQkJCU9pZCB2 YXJUeXBlLAorCQkJCWludDMyIHZhclR5cG1vZCwKKwkJCQlPaWQgdmFyT3duZXIsCisJCQkJT2lk IHZhckNvbGxhdGlvbiwKKwkJCQlOb2RlICp2YXJEZWZleHByLAorCQkJCVZhcmlhYmxlRU9YQWN0 aW9uIGVveGFjdGlvbiwKKwkJCQlib29sIGlzX25vdF9udWxsLAorCQkJCWJvb2wgaWZfbm90X2V4 aXN0cywKKwkJCQlib29sIGlzX2ltbXV0YWJsZSkKK3sKKwlBY2wJCSAgICp2YXJhY2w7CisJTmFt ZURhdGEJdmFybmFtZTsKKwlib29sCQludWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJRGF0dW0J CXZhbHVlc1tOYXR0c19wZ192YXJpYWJsZV07CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0 dXA7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJT2JqZWN0QWRkcmVzcyBteXNlbGYsCisJCQkJcmVm ZXJlbmNlZDsKKwlPYmplY3RBZGRyZXNzZXMgKmFkZHJzOworCU9pZAkJCXZhcmlkOworCisJQXNz ZXJ0KHZhck5hbWUpOworCUFzc2VydChPaWRJc1ZhbGlkKHZhck5hbWVzcGFjZSkpOworCUFzc2Vy dChPaWRJc1ZhbGlkKHZhclR5cGUpKTsKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJPd25lcikpOwor CisJcmVsID0gdGFibGVfb3BlbihWYXJpYWJsZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJLyoKKwkgKiBDaGVjayBmb3IgZHVwbGljYXRlcy4gTm90ZSB0aGF0IHRoaXMgZG9lcyBu b3QgcmVhbGx5IHByZXZlbnQKKwkgKiBkdXBsaWNhdGVzLCBpdCdzIGhlcmUganVzdCB0byBwcm92 aWRlIG5pY2VyIGVycm9yIG1lc3NhZ2UgaW4gY29tbW9uCisJICogY2FzZS4gVGhlIHJlYWwgcHJv dGVjdGlvbiBpcyB0aGUgdW5pcXVlIGtleSBvbiB0aGUgY2F0YWxvZy4KKwkgKi8KKwlpZiAoU2Vh cmNoU3lzQ2FjaGVFeGlzdHMyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCQkgIFBvaW50ZXJHZXRE YXR1bSh2YXJOYW1lKSwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0odmFyTmFtZXNwYWNlKSkp CisJeworCQlpZiAoaWZfbm90X2V4aXN0cykKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJzZXNzaW9uIHZh cmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXZhck5hbWUp KSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQ TElDQVRFX09CSkVDVCksCisJCQkJCSBlcnJtc2coInNlc3Npb24gdmFyaWFibGUgXCIlc1wiIGFs cmVhZHkgZXhpc3RzIiwKKwkJCQkJCQl2YXJOYW1lKSkpOworCisJCXRhYmxlX2Nsb3NlKHJlbCwg Um93RXhjbHVzaXZlTG9jayk7CisKKwkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCX0K KworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZh bHNlLCBzaXplb2YobnVsbHMpKTsKKworCW5hbWVzdHJjcHkoJnZhcm5hbWUsIHZhck5hbWUpOwor CisJdmFyaWQgPSBHZXROZXdPaWRXaXRoSW5kZXgocmVsLCBWYXJpYWJsZU9iamVjdEluZGV4SWQs IEFudW1fcGdfdmFyaWFibGVfb2lkKTsKKworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX29pZCAt IDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJpZCk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVf dmFyY3JlYXRlX2xzbiAtIDFdID0gTFNOR2V0RGF0dW0oR2V0WExvZ0luc2VydFJlY1B0cigpKTsK Kwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJuYW1lIC0gMV0gPSBOYW1lR2V0RGF0dW0oJnZh cm5hbWUpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWVzcGFjZSAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zh cnR5cGUgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0odmFyVHlwZSk7CisJdmFsdWVzW0FudW1fcGdf dmFyaWFibGVfdmFydHlwbW9kIC0gMV0gPSBJbnQzMkdldERhdHVtKHZhclR5cG1vZCk7CisJdmFs dWVzW0FudW1fcGdfdmFyaWFibGVfdmFyb3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0odmFy T3duZXIpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmNvbGxhdGlvbiAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bSh2YXJDb2xsYXRpb24pOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zh cmlzbm90bnVsbCAtIDFdID0gQm9vbEdldERhdHVtKGlzX25vdF9udWxsKTsKKwl2YWx1ZXNbQW51 bV9wZ192YXJpYWJsZV92YXJpc2ltbXV0YWJsZSAtIDFdID0gQm9vbEdldERhdHVtKGlzX2ltbXV0 YWJsZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyZW94YWN0aW9uIC0gMV0gPSBDaGFy R2V0RGF0dW0oZW94YWN0aW9uKTsKKworCS8qIHZhcmFjbCB3aWxsIGJlIGRldGVybWluZWQgbGF0 ZXIgKi8KKworCWlmICh2YXJEZWZleHByKQorCQl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJk ZWZleHByIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyh2YXJEZWZleHBy KSk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmRlZmV4cHIgLSAxXSA9IHRy dWU7CisKKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCisJdmFyYWNsID0gZ2V0 X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1ZBUklBQkxFLCB2YXJPd25lciwKKwkJCQkJCQkJICB2 YXJOYW1lc3BhY2UpOworCisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCQl2YWx1ZXNbQW51bV9wZ192 YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50ZXJHZXREYXR1bSh2YXJhY2wpOworCWVsc2UKKwkJ bnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7CisKKwl0dXAgPSBoZWFw X2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1cGxlSW5zZXJ0 KHJlbCwgdHVwKTsKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJpZCkpOworCisJYWRkcnMgPSBuZXdf b2JqZWN0X2FkZHJlc3NlcygpOworCisJT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFZhcmlhYmxl UmVsYXRpb25JZCwgdmFyaWQpOworCisJLyogZGVwZW5kZW5jeSBvbiBuYW1lc3BhY2UgKi8KKwlP YmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIE5hbWVzcGFjZVJlbGF0aW9uSWQsIHZhck5hbWVz cGFjZSk7CisJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZyZWZlcmVuY2VkLCBhZGRycyk7CisK KwkvKiBkZXBlbmRlbmN5IG9uIHVzZWQgdHlwZSAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJl bmNlZCwgVHlwZVJlbGF0aW9uSWQsIHZhclR5cGUpOworCWFkZF9leGFjdF9vYmplY3RfYWRkcmVz cygmcmVmZXJlbmNlZCwgYWRkcnMpOworCisJLyogZGVwZW5kZW5jeSBvbiBjb2xsYXRpb24gKi8K KwlpZiAoT2lkSXNWYWxpZCh2YXJDb2xsYXRpb24pICYmCisJCXZhckNvbGxhdGlvbiAhPSBERUZB VUxUX0NPTExBVElPTl9PSUQpCisJeworCQlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIENv bGxhdGlvblJlbGF0aW9uSWQsIHZhckNvbGxhdGlvbik7CisJCWFkZF9leGFjdF9vYmplY3RfYWRk cmVzcygmcmVmZXJlbmNlZCwgYWRkcnMpOworCX0KKworCS8qIGRlcGVuZGVuY3kgb24gZGVmYXVs dCBleHByICovCisJaWYgKHZhckRlZmV4cHIpCisJCXJlY29yZERlcGVuZGVuY3lPbkV4cHIoJm15 c2VsZiwgKE5vZGUgKikgdmFyRGVmZXhwciwKKwkJCQkJCQkgICBOSUwsIERFUEVOREVOQ1lfTk9S TUFMKTsKKworCXJlY29yZF9vYmplY3RfYWRkcmVzc19kZXBlbmRlbmNpZXMoJm15c2VsZiwgYWRk cnMsIERFUEVOREVOQ1lfTk9STUFMKTsKKwlmcmVlX29iamVjdF9hZGRyZXNzZXMoYWRkcnMpOwor CisJLyogZGVwZW5kZW5jeSBvbiBvd25lciAqLworCXJlY29yZERlcGVuZGVuY3lPbk93bmVyKFZh cmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIHZhck93bmVyKTsKKworCS8qIGRlcGVuZGVuY2llcyBv biByb2xlcyBtZW50aW9uZWQgaW4gZGVmYXVsdCBBQ0wgKi8KKwlyZWNvcmREZXBlbmRlbmN5T25O ZXdBY2woVmFyaWFibGVSZWxhdGlvbklkLCB2YXJpZCwgMCwgdmFyT3duZXIsIHZhcmFjbCk7CisK KwkvKiBkZXBlbmRlbmN5IG9uIGV4dGVuc2lvbiAqLworCXJlY29yZERlcGVuZGVuY3lPbkN1cnJl bnRFeHRlbnNpb24oJm15c2VsZiwgZmFsc2UpOworCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwor CS8qIFBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGZ1bmN0aW9uICovCisJSW52b2tlT2JqZWN0 UG9zdENyZWF0ZUhvb2soVmFyaWFibGVSZWxhdGlvbklkLCB2YXJpZCwgMCk7CisKKwl0YWJsZV9j bG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJuIG15c2VsZjsKK30KKworLyoK KyAqIENyZWF0ZXMgYSBuZXcgdmFyaWFibGUKKyAqCisgKiBVc2VkIGJ5IENSRUFURSBWQVJJQUJM RSBjb21tYW5kCisgKi8KK09iamVjdEFkZHJlc3MKK0NyZWF0ZVZhcmlhYmxlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlU2Vzc2lvblZhclN0bXQgKnN0bXQpCit7CisJT2lkCQkJbmFtZXNwYWNl aWQ7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9k OworCU9pZAkJCXZhcm93bmVyID0gR2V0VXNlcklkKCk7CisJT2lkCQkJY29sbGF0aW9uOworCU9p ZAkJCXR5cGNvbGxhdGlvbjsKKwlPYmplY3RBZGRyZXNzIHZhcmlhYmxlOworCisJTm9kZQkgICAq Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCisJLyogQ2hlY2sgY29uc2lzdGVuY3kgb2YgYXJndW1l bnRzICovCisJaWYgKHN0bXQtPmVveGFjdGlvbiA9PSBWQVJJQUJMRV9FT1hfRFJPUAorCQkmJiBz dG10LT52YXJpYWJsZS0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCSBlcnJtc2coIk9OIENPTU1JVCBEUk9QIGNhbiBvbmx5IGJlIHVzZWQgb24g dGVtcG9yYXJ5IHZhcmlhYmxlcyIpKSk7CisKKwlpZiAoc3RtdC0+aXNfbm90X251bGwgJiYgc3Rt dC0+aXNfaW1tdXRhYmxlICYmICFzdG10LT5kZWZleHByKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1z ZygiSU1NVVRBQkxFIE5PVCBOVUxMIHZhcmlhYmxlIHJlcXVpcmVzIGRlZmF1bHQgZXhwcmVzc2lv biIpKSk7CisKKwluYW1lc3BhY2VpZCA9CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5h bWVzcGFjZShzdG10LT52YXJpYWJsZSwgTm9Mb2NrLCBOVUxMKTsKKworCXR5cGVuYW1lVHlwZUlk QW5kTW9kKHBzdGF0ZSwgc3RtdC0+dHlwZU5hbWUsICZ0eXBpZCwgJnR5cG1vZCk7CisKKwkvKiBE aXNhbGxvdyBwc2V1ZG90eXBlcyAqLworCWlmIChnZXRfdHlwdHlwZSh0eXBpZCkgPT0gVFlQVFlQ RV9QU0VVRE8pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBjYW5ub3QgYmUgcHNl dWRvLXR5cGUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUodHlwaWQpKSkpOworCisJYWNscmVz dWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCB0eXBpZCwgR2V0VXNlcklkKCks IEFDTF9VU0FHRSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tf ZXJyb3JfdHlwZShhY2xyZXN1bHQsIHR5cGlkKTsKKworCXR5cGNvbGxhdGlvbiA9IGdldF90eXBj b2xsYXRpb24odHlwaWQpOworCisJaWYgKHN0bXQtPmNvbGxDbGF1c2UpCisJCWNvbGxhdGlvbiA9 IExvb2t1cENvbGxhdGlvbihwc3RhdGUsCisJCQkJCQkJCQlzdG10LT5jb2xsQ2xhdXNlLT5jb2xs bmFtZSwKKwkJCQkJCQkJCXN0bXQtPmNvbGxDbGF1c2UtPmxvY2F0aW9uKTsKKwllbHNlCisJCWNv bGxhdGlvbiA9IHR5cGNvbGxhdGlvbjs7CisKKwkvKiBDb21wbGFpbiBpZiBDT0xMQVRFIGlzIGFw cGxpZWQgdG8gYW4gdW5jb2xsYXRhYmxlIHR5cGUgKi8KKwlpZiAoT2lkSXNWYWxpZChjb2xsYXRp b24pICYmICFPaWRJc1ZhbGlkKHR5cGNvbGxhdGlvbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiY29sbGF0 aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0eXBlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2Jl KHR5cGlkKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmNvbGxDbGF1 c2UtPmxvY2F0aW9uKSkpOworCisJaWYgKHN0bXQtPmRlZmV4cHIpCisJeworCQljb29rZWRfZGVm YXVsdCA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBzdG10LT5kZWZleHByLAorCQkJCQkJCQkJICAg RVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQpOworCisJCWNvb2tlZF9kZWZhdWx0ID0gY29lcmNl X3RvX3NwZWNpZmljX3R5cGUocHN0YXRlLAorCQkJCQkJCQkJCQkJIGNvb2tlZF9kZWZhdWx0LCB0 eXBpZCwgIkRFRkFVTFQiKTsKKwkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGNvb2tl ZF9kZWZhdWx0KTsKKwl9CisKKwl2YXJpYWJsZSA9IGNyZWF0ZV92YXJpYWJsZShzdG10LT52YXJp YWJsZS0+cmVsbmFtZSwKKwkJCQkJCQkgICBuYW1lc3BhY2VpZCwKKwkJCQkJCQkgICB0eXBpZCwK KwkJCQkJCQkgICB0eXBtb2QsCisJCQkJCQkJICAgdmFyb3duZXIsCisJCQkJCQkJICAgY29sbGF0 aW9uLAorCQkJCQkJCSAgIGNvb2tlZF9kZWZhdWx0LAorCQkJCQkJCSAgIHN0bXQtPmVveGFjdGlv biwKKwkJCQkJCQkgICBzdG10LT5pc19ub3RfbnVsbCwKKwkJCQkJCQkgICBzdG10LT5pZl9ub3Rf ZXhpc3RzLAorCQkJCQkJCSAgIHN0bXQtPmlzX2ltbXV0YWJsZSk7CisKKwllbG9nKERFQlVHMSwg InJlY29yZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgKG9pZDolZCkgd2FzIGNyZWF0ZWQg aW4gcGdfdmFyaWFibGUiLAorCQkgc3RtdC0+dmFyaWFibGUtPnJlbG5hbWUsIHZhcmlhYmxlLm9i amVjdElkKTsKKworCS8qIFdlIHdhbnQgU2Vzc2lvblZhcmlhYmxlQ3JlYXRlUG9zdHByb2Nlc3Mg dG8gc2VlIHRoZSBjYXRhbG9nIGNoYW5nZXMuICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKworCVNlc3Npb25WYXJpYWJsZUNyZWF0ZVBvc3Rwcm9jZXNzKHZhcmlhYmxlLm9iamVjdElk LCBzdG10LT5lb3hhY3Rpb24pOworCisJcmV0dXJuIHZhcmlhYmxlOworfQorCisvKgorICogRHJv cCB2YXJpYWJsZSBieSBPSUQsIGFuZCByZWdpc3RlciB0aGUgbmVlZGVkIHNlc3Npb24gdmFyaWFi bGUKKyAqIGNsZWFudXAuCisgKi8KK3ZvaWQKK0Ryb3BWYXJpYWJsZShPaWQgdmFyaWQpCit7CisJ UmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFZhcmlh YmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNo ZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig dmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwlDYXRhbG9nVHVwbGVEZWxldGUocmVsLCAmdHVwLT50 X3NlbGYpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwl0YWJsZV9jbG9zZShyZWwsIFJv d0V4Y2x1c2l2ZUxvY2spOworCisJLyogRG8gdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIGlmIG5lZWRl ZCBpbiBsb2NhbCBtZW1vcnkgKi8KKwlTZXNzaW9uVmFyaWFibGVEcm9wUG9zdHByb2Nlc3ModmFy aWQpOworfQorCisvKgorICogRmV0Y2ggYXR0cmlidXRlcyAod2l0aG91dCBhY2wpIG9mIHNlc3Np b24gdmFyaWFibGUgZnJvbSB0aGUgc3lzY2FjaGUuCisgKiBXZSBkb24ndCB3b3JrIHdpdGggYWNs IGRpcmVjdGx5LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJlYWQgaXQgaGVyZS4KKyAqIFNraXAgZGVz ZXJpYWxpemF0aW9uIG9mIGRlZmV4cHIgd2hlbiBmYXN0X29ubHkgaXMgdHJ1ZS4KKyAqLwordm9p ZAorSW5pdFZhcmlhYmxlKFZhcmlhYmxlICp2YXIsIE9pZCB2YXJpZCwgYm9vbCBmYXN0X29ubHkp Cit7CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJRGF0dW0J CWRlZmV4cHJfZGF0dW07CisJYm9vbAkJZGVmZXhwcl9pc251bGw7CisKKwl0dXAgPSBTZWFyY2hT eXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKworCXZhcmZvcm0gPSAoRm9ybV9w Z192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwl2YXItPm9pZCA9IHZhcmlkOworCXZhci0+ Y3JlYXRlX2xzbiA9IHZhcmZvcm0tPnZhcmNyZWF0ZV9sc247CisJdmFyLT5uYW1lID0gcHN0cmR1 cChOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKTsKKwl2YXItPm5hbWVzcGFjZWlkID0gdmFyZm9y bS0+dmFybmFtZXNwYWNlOworCXZhci0+dHlwaWQgPSB2YXJmb3JtLT52YXJ0eXBlOworCXZhci0+ dHlwbW9kID0gdmFyZm9ybS0+dmFydHlwbW9kOworCXZhci0+b3duZXIgPSB2YXJmb3JtLT52YXJv d25lcjsKKwl2YXItPmNvbGxhdGlvbiA9IHZhcmZvcm0tPnZhcmNvbGxhdGlvbjsKKwl2YXItPmlz X2ltbXV0YWJsZSA9IHZhcmZvcm0tPnZhcmlzaW1tdXRhYmxlOworCXZhci0+aXNfbm90X251bGwg PSB2YXJmb3JtLT52YXJpc25vdG51bGw7CisJdmFyLT5lb3hhY3Rpb24gPSB2YXJmb3JtLT52YXJl b3hhY3Rpb247CisKKwkvKiBHZXQgZGVmZXhwciAqLworCWRlZmV4cHJfZGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJCQl0dXAsCisJCQkJCQkJCQlBbnVtX3BnX3Zh cmlhYmxlX3ZhcmRlZmV4cHIsCisJCQkJCQkJCQkmZGVmZXhwcl9pc251bGwpOworCisJdmFyLT5o YXNfZGVmZXhwciA9ICFkZWZleHByX2lzbnVsbDsKKworCS8qCisJICogRGVzZXJpYWxpemUgZGVm ZXhwciBvbmx5IHdoZW4gaXQgaXMgcmVxdWVzdGVkLiBXZSBuZWVkIHRvIGRlc2VyaWFsaXplCisJ ICogTm9kZSB3aXRoIGRlZmF1bHQgZXhwcmVzc2lvbiwgb25seSB3aGVuIHdlIHJlYWQgZnJvbSBz ZXNzaW9uIHZhcmlhYmxlLAorCSAqIGFuZCB0aGlzIHNlc3Npb24gdmFyaWFibGUgaGFzIG5vdCBh c3NpZ25lZCB2YWx1ZSwgYW5kIHRoaXMgc2Vzc2lvbgorCSAqIHZhcmlhYmxlIGhhcyBkZWZhdWx0 IGV4cHJlc3Npb24uIEZvciBvdGhlciBjYXNlcywgd2Ugc2tpcCBza2lwIHRoaXMKKwkgKiBvcGVy YXRpb24uCisJICovCisJaWYgKCFmYXN0X29ubHkgJiYgIWRlZmV4cHJfaXNudWxsKQorCQl2YXIt PmRlZmV4cHIgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkZWZleHByX2RhdHVt KSk7CisJZWxzZQorCQl2YXItPmRlZmV4cHIgPSBOVUxMOworCisJUmVsZWFzZVN5c0NhY2hlKHR1 cCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDQ4ZjczNDhmOTEuLjFjZmFlY2E1MWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL01ha2VmaWxlCkBAIC01MCw2ICs1MCw3IEBAIE9CSlMgPSBcCiAJc2NoZW1hY21k cy5vIFwKIAlzZWNsYWJlbC5vIFwKIAlzZXF1ZW5jZS5vIFwKKwlzZXNzaW9uX3ZhcmlhYmxlLm8g XAogCXN0YXRzY21kcy5vIFwKIAlzdWJzY3JpcHRpb25jbWRzLm8gXAogCXRhYmxlY21kcy5vIFwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hbHRlci5jCmluZGV4IDEwZjI4Zjk0YmMuLjljYTgzYmViMWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv YWx0ZXIuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfZGljdC5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190c190ZW1wbGF0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNs dWRlICJjb21tYW5kcy9hbHRlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbGxhdGlvbmNtZHMu aCIKICNpbmNsdWRlICJjb21tYW5kcy9jb252ZXJzaW9uY21kcy5oIgpAQCAtMTQzLDYgKzE0NCwx MCBAQCByZXBvcnRfbmFtZXNwYWNlX2NvbmZsaWN0KE9pZCBjbGFzc0lkLCBjb25zdCBjaGFyICpu YW1lLCBPaWQgbnNwT2lkKQogCQkJQXNzZXJ0KE9pZElzVmFsaWQobnNwT2lkKSk7CiAJCQltc2dm bXQgPSBnZXR0ZXh0X25vb3AoInRleHQgc2VhcmNoIGNvbmZpZ3VyYXRpb24gXCIlc1wiIGFscmVh ZHkgZXhpc3RzIGluIHNjaGVtYSBcIiVzXCIiKTsKIAkJCWJyZWFrOworCQljYXNlIFZhcmlhYmxl UmVsYXRpb25JZDoKKwkJCUFzc2VydChPaWRJc1ZhbGlkKG5zcE9pZCkpOworCQkJbXNnZm10ID0g Z2V0dGV4dF9ub29wKCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyBpbiBz Y2hlbWEgXCIlc1wiIik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bnN1cHBvcnRlZCBvYmplY3QgY2xhc3M6ICV1IiwgY2xhc3NJZCk7CiAJCQlicmVhazsKQEAgLTQy MSw2ICs0MjYsNyBAQCBFeGVjUmVuYW1lU3RtdChSZW5hbWVTdG10ICpzdG10KQogCQljYXNlIE9C SkVDVF9UU1RFTVBMQVRFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpF Q1RfU1VCU0NSSVBUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlPYmpl Y3RBZGRyZXNzIGFkZHJlc3M7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKQEAgLTU2NCw2ICs1NzAs NyBAQCBFeGVjQWx0ZXJPYmplY3RTY2hlbWFTdG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3Rt dCwKIAkJY2FzZSBPQkpFQ1RfVFNESUNUSU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoK IAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7 CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKIAkJCQlSZWxhdGlvbglyZWxhdGlvbjsKQEAgLTY1NCw2 ICs2NjEsNyBAQCBBbHRlck9iamVjdE5hbWVzcGFjZV9vaWQoT2lkIGNsYXNzSWQsIE9pZCBvYmpp ZCwgT2lkIG5zcE9pZCwKIAkJY2FzZSBPQ0xBU1NfVFNESUNUOgogCQljYXNlIE9DTEFTU19UU1RF TVBMQVRFOgogCQljYXNlIE9DTEFTU19UU0NPTkZJRzoKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6 CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKIApAQCAtOTE0LDYgKzkyMiw3IEBAIEV4ZWNB bHRlck93bmVyU3RtdChBbHRlck93bmVyU3RtdCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVEFCTEVT UEFDRToKIAkJY2FzZSBPQkpFQ1RfVFNESUNUSU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU0NPTkZJ R1VSQVRJT046CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJewogCQkJCVJlbGF0aW9uCWNh dGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRpb247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRl eCA4MmJkYTE1ODg5Li5hNTQyM2I2ODdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAgLTQ4 MSw2ICs0ODEsMTAgQEAgZG9lc19ub3RfZXhpc3Rfc2tpcHBpbmcoT2JqZWN0VHlwZSBvYmp0eXBl LCBOb2RlICpvYmplY3QpCiAJCQltc2cgPSBnZXR0ZXh0X25vb3AoInB1YmxpY2F0aW9uIFwiJXNc IiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmciKTsKIAkJCW5hbWUgPSBzdHJWYWwob2JqZWN0KTsK IAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW1zZyA9IGdldHRleHRfbm9v cCgic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIik7CisJ CQluYW1lID0gTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0LCBvYmplY3QpKTsKKwkJCWJy ZWFrOwogCiAJCWNhc2UgT0JKRUNUX0NPTFVNTjoKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggZDRiMDBkMWE4Mi4uZWQyYTlkNzc2 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtOTkxLDYgKzk5MSw3IEBA IEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2Fz ZSBPQkpFQ1RfVFNURU1QTEFURToKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJY2FzZSBPQkpFQ1Rf VVNFUl9NQVBQSU5HOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJY2FzZSBPQkpFQ1RfVklF VzoKIAkJCXJldHVybiB0cnVlOwogCkBAIC0xMDU3LDYgKzEwNTgsNyBAQCBFdmVudFRyaWdnZXJT dXBwb3J0c09iamVjdENsYXNzKE9iamVjdENsYXNzIG9iamNsYXNzKQogCQljYXNlIE9DTEFTU19Q VUJMSUNBVElPTl9SRUw6CiAJCWNhc2UgT0NMQVNTX1NVQlNDUklQVElPTjoKIAkJY2FzZSBPQ0xB U1NfVFJBTlNGT1JNOgorCQljYXNlIE9DTEFTU19WQVJJQUJMRToKIAkJCXJldHVybiB0cnVlOwog CiAJCQkvKgpAQCAtMjA0OSw2ICsyMDUxLDggQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2Jq ZWN0VHlwZSBvYmp0eXBlKQogCQkJcmV0dXJuICJUQUJMRVNQQUNFIjsKIAkJY2FzZSBPQkpFQ1Rf VFlQRToKIAkJCXJldHVybiAiVFlQRSI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0 dXJuICJWQVJJQUJMRSI7CiAJCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJ Y2FzZSBPQkpFQ1RfQUNDRVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpAQCAt MjEzMiw2ICsyMTM2LDggQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUg b2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRVMiOwogCQljYXNlIE9CSkVDVF9UWVBFOgog CQkJcmV0dXJuICJUWVBFUyI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJW QVJJQUJMRVMiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2Ug T0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9zZWNsYWJlbC5jCmluZGV4IDdmZjE2ZTMyNzYuLjc1YjM5YjI5NDUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c2VjbGFiZWwuYwpAQCAtOTIsNiArOTIsNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0VHlwZShP YmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX1RTUEFSU0VSOgogCQljYXNlIE9CSkVD VF9UU1RFTVBMQVRFOgogCQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CisJCWNhc2UgT0JKRUNU X1ZBUklBQkxFOgogCQkJcmV0dXJuIGZhbHNlOwogCiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c2Vzc2lvbl92YXJpYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu Ljk0NmU3M2U0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXNz aW9uX3ZhcmlhYmxlLmMKQEAgLTAsMCArMSwyNDMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHNlc3Npb25fdmFyaWFibGUuYworICoJICBzZXNzaW9uIHZhcmlhYmxlIGNyZWF0aW9uL21h bmlwdWxhdGlvbiBjb21tYW5kcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vz c2lvbnZhcmlhYmxlLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBv c3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9kZXBlbmRlbmN5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUg ImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgor I2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaCIKKyNpbmNsdWRlICJmdW5jYXBp LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK KyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBUaGUgbGlmZSBjeWNsZSBv ZiB0ZW1wb3Jhcnkgc2Vzc2lvbiB2YXJpYWJsZSBjYW4gYmUKKyAqIGxpbW1pdGVkIGJ5IHVzaW5n IGNsYXVzZSBPTiBDT01NSVQgRFJPUC4KKyAqLwordHlwZWRlZiBlbnVtIFNWYXJpYWJsZVhBY3RB Y3Rpb24KK3sKKwlTVkFSX09OX0NPTU1JVF9EUk9QLAkJLyogdXNlZCBmb3IgT04gQ09NTUlUIERS T1AgKi8KK30gU1ZhcmlhYmxlWEFjdEFjdGlvbjsKKwordHlwZWRlZiBzdHJ1Y3QgU1ZhcmlhYmxl WEFjdEFjdGlvbkl0ZW0KK3sKKwlPaWQJCQl2YXJpZDsJCQkvKiB2YXJpZCBvZiBzZXNzaW9uIHZh cmlhYmxlICovCisKKwkvKgorCSAqIGNyZWF0aW5nX3N1YmlkIGlzIHRoZSBJRCBvZiB0aGUgY3Jl YXRpbmcgc3VieGFjdC4gSWYgdGhlIGFjdGlvbiB3YXMKKwkgKiB1bnJlZ2lzdGVyZWQgZHVyaW5n IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCBkZWxldGluZ19zdWJpZCBpcyB0aGUgSUQKKwkgKiBv ZiB0aGUgZGVsZXRpbmcgc3VieGFjdCwgb3RoZXJ3aXNlIEludmFsaWRTdWJUcmFuc2FjdGlvbklk LgorCSAqLworCVN1YlRyYW5zYWN0aW9uSWQgY3JlYXRpbmdfc3ViaWQ7CisJU3ViVHJhbnNhY3Rp b25JZCBkZWxldGluZ19zdWJpZDsKK30gU1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW07CisKKy8qIExp c3QgaG9sZHMgZmllbGRzIG9mIFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtIHR5cGUgKi8KK3N0YXRp YyBMaXN0ICp4YWN0X2Ryb3BfYWN0aW9ucyA9IE5JTDsKKworc3RhdGljIHZvaWQgcmVnaXN0ZXJf c2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbihPaWQgdmFyaWQsIFNWYXJpYWJsZVhBY3RBY3Rp b24gYWN0aW9uKTsKK3N0YXRpYyB2b2lkIHVucmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0 X2FjdGlvbihPaWQgdmFyaWQsIFNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uKTsKKworCisvKgor ICogRG8gdGhlIG5lY2Vzc2FyeSB3b3JrIHRvIHNldHVwIGxvY2FsIG1lbW9yeSBtYW5hZ2VtZW50 IG9mIGEgbmV3CisgKiB2YXJpYWJsZS4KKyAqCisgKiBDYWxsZXIgc2hvdWxkIGFscmVhZHkgaGF2 ZSBjcmVhdGVkIHRoZSBuZWNlc3NhcnkgZW50cnkgaW4gY2F0YWxvZworICogYW5kIG1hZGUgdGhl bSB2aXNpYmxlLgorICovCit2b2lkCitTZXNzaW9uVmFyaWFibGVDcmVhdGVQb3N0cHJvY2VzcyhP aWQgdmFyaWQsIGNoYXIgZW94YWN0aW9uKQoreworCS8qCisJICogRm9yIHRlbXBvcmFyeSB2YXJp YWJsZXMsIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGVuZCBvZiB4YWN0IGFjdGlvbiB0bworCSAq IGVuc3VyZSBkZWxldGlvbiBmcm9tIGNhdGFsb2cuCisJICovCisJaWYgKGVveGFjdGlvbiA9PSBW QVJJQUJMRV9FT1hfRFJPUCkKKwl7CisJCUFzc2VydChpc1RlbXBOYW1lc3BhY2UoZ2V0X3Nlc3Np b25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSkpOworCisJCXJlZ2lzdGVyX3Nlc3Npb25fdmFy aWFibGVfeGFjdF9hY3Rpb24odmFyaWQsIFNWQVJfT05fQ09NTUlUX0RST1ApOworCX0KK30KKwor LyoKKyAqIEhhbmRsZSB0aGUgbG9jYWwgbWVtb3J5IGNsZWFudXAgZm9yIGEgRFJPUCBWQVJJQUJM RSBjb21tYW5kLgorICoKKyAqIENhbGxlciBzaG91bGQgdGFrZSBjYXJlIG9mIHJlbW92aW5nIHRo ZSBwZ192YXJpYWJsZSBlbnRyeSBmaXJzdC4KKyAqLwordm9pZAorU2Vzc2lvblZhcmlhYmxlRHJv cFBvc3Rwcm9jZXNzKE9pZCB2YXJpZCkKK3sKKwkvKgorCSAqIFRoZSBlbnRyeSB3YXMgcmVtb3Zl ZCBmcm9tIGNhdGFsb2cgYWxyZWFkeSwgd2UgbXVzdCBub3QgZG8gaXQKKwkgKiBhZ2FpbiBhdCBl bmQgb2YgeGFjdCB0aW1lLgorCSAqLworCXVucmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0 X2FjdGlvbih2YXJpZCwgU1ZBUl9PTl9DT01NSVRfRFJPUCk7Cit9CisKKy8qCisgKiBSZWdpc3Ry YXRpb24gb2YgYWN0aW9ucyB0byBiZSBleGVjdXRlZCBvbiBzZXNzaW9uIHZhcmlhYmxlcyBhdCB0 cmFuc2FjdGlvbgorICogZW5kIHRpbWUuIFdlIHdhbnQgdG8gZHJvcCB0ZW1wb3Jhcnkgc2Vzc2lv biB2YXJpYWJsZXMgd2l0aCBjbGF1c2UgT04gQ09NTUlUCisgKiBEUk9QLCBvciB3ZSB3YW50IHRv IHJlc2V0IHZhbHVlcyBvZiBzZXNzaW9uIHZhcmlhYmxlcyB3aXRoIGNsYXVzZSBPTgorICogVFJB TlNBQ1RJT04gRU5EIFJFU0VUIG9yIHdlIHdhbnQgdG8gY2xlYW4gKHJlc2V0KSBsb2NhbCBtZW1v cnkgYWxsb2NhdGVkIGJ5CisgKiB2YWx1ZXMgb2YgZHJvcHBlZCBzZXNzaW9uIHZhcmlhYmxlcy4K KyAqLworCisvKgorICogUmVnaXN0ZXIgYSBzZXNzaW9uIHZhcmlhYmxlIHhhY3QgYWN0aW9uLgor ICovCitzdGF0aWMgdm9pZAorcmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbihP aWQgdmFyaWQsCisJCQkJCQkJCQkgIFNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uKQoreworCVNW YXJpYWJsZVhBY3RBY3Rpb25JdGVtICp4YWN0X2FpOworCU1lbW9yeUNvbnRleHQgb2xkY3h0Owor CisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4dCk7CisK Kwl4YWN0X2FpID0gKFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICopCisJCXBhbGxvYyhzaXplb2Yo U1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW0pKTsKKworCXhhY3RfYWktPnZhcmlkID0gdmFyaWQ7CisK Kwl4YWN0X2FpLT5jcmVhdGluZ19zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7 CisJeGFjdF9haS0+ZGVsZXRpbmdfc3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKKwor CUFzc2VydChhY3Rpb24gPT0gU1ZBUl9PTl9DT01NSVRfRFJPUCk7CisJeGFjdF9kcm9wX2FjdGlv bnMgPSBsY29ucyh4YWN0X2FpLCB4YWN0X2Ryb3BfYWN0aW9ucyk7CisKKwlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3h0KTsKK30KKworLyoKKyAqIFVucmVnaXN0ZXIgYW4gYWN0aW9uIG9uIGEg Z2l2ZW4gc2Vzc2lvbiB2YXJpYWJsZSBmcm9tIGFjdGlvbiBsaXN0LiBJbiB0aGlzCisgKiBtb21l bnQsIHRoZSBhY3Rpb24gaXMganVzdCBtYXJrZWQgYXMgZGVsZXRlZCBieSBzZXR0aW5nIGRlbGV0 aW5nX3N1YmlkLiBUaGUKKyAqIGNhbGxpbmcgZXZlbiBtaWdodCBiZSByb2xsYmFja2VkLCBpbiB3 aGljaCBjYXNlIHdlIHNob3VsZCBub3QgbG9zZSB0aGlzCisgKiBhY3Rpb24uCisgKi8KK3N0YXRp YyB2b2lkCit1bnJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlk LAorCQkJCQkJCQkJCVNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uKQoreworCUxpc3RDZWxsICAg Kmw7CisKKwlBc3NlcnQoYWN0aW9uID09IFNWQVJfT05fQ09NTUlUX0RST1ApOworCisJZm9yZWFj aChsLCB4YWN0X2Ryb3BfYWN0aW9ucykKKwl7CisJCVNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICp4 YWN0X2FpID0KKwkJKFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICopIGxmaXJzdChsKTsKKworCQlp ZiAoeGFjdF9haS0+dmFyaWQgPT0gdmFyaWQpCisJCQl4YWN0X2FpLT5kZWxldGluZ19zdWJpZCA9 IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CisJfQorfQorCisvKgorICogUGVyZm9ybSBP TiBUUkFOU0FDVElPTiBFTkQgUkVTRVQgb3IgT04gQ09NTUlUIERST1AKKyAqIGFuZCBDT01NSVQv Uk9MTEJBQ0sgb2YgdHJhbnNhY3Rpb24gc2Vzc2lvbiB2YXJpYWJsZXMuCisgKi8KK3ZvaWQKK0F0 UHJlRU9YYWN0X1Nlc3Npb25WYXJpYWJsZShib29sIGlzQ29tbWl0KQoreworCUxpc3RDZWxsICAg Kmw7CisKKwlmb3JlYWNoKGwsIHhhY3RfZHJvcF9hY3Rpb25zKQorCXsKKwkJU1ZhcmlhYmxlWEFj dEFjdGlvbkl0ZW0gKnhhY3RfYWkgPQorCQkoU1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW0gKikgbGZp cnN0KGwpOworCisJCS8qIEl0ZXJhdGUgb25seSBvdmVyIGVudHJpZXMgdGhhdCBhcmUgc3RpbGwg cGVuZGluZyAqLworCQlpZiAoeGFjdF9haS0+ZGVsZXRpbmdfc3ViaWQgPT0gSW52YWxpZFN1YlRy YW5zYWN0aW9uSWQpCisJCXsKKworCQkJLyoKKwkJCSAqIE9OIENPTU1JVCBEUk9QIGlzIGFsbG93 ZWQgb25seSBmb3IgdGVtcCBzZXNzaW9uIHZhcmlhYmxlcy4gU28KKwkJCSAqIHdlIHNob3VsZCBl eHBsaWNpdGx5IGRlbGV0ZSBvbmx5IHdoZW4gY3VycmVudCB0cmFuc2FjdGlvbiB3YXMKKwkJCSAq IGNvbW1pdHRlZC4gV2hlbiBpdCdzIHJvbGxiYWNrLCB0aGVuIHNlc3Npb24gdmFyaWFibGUgaXMg cmVtb3ZlZAorCQkJICogYXV0b21hdGljYWxseS4KKwkJCSAqLworCQkJaWYgKGlzQ29tbWl0KQor CQkJeworCQkJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCisJCQkJb2JqZWN0LmNsYXNzSWQgPSBW YXJpYWJsZVJlbGF0aW9uSWQ7CisJCQkJb2JqZWN0Lm9iamVjdElkID0geGFjdF9haS0+dmFyaWQ7 CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKworCQkJCS8qCisJCQkJICogU2luY2UgdGhp cyBpcyBhbiBhdXRvbWF0aWMgZHJvcCwgcmF0aGVyIHRoYW4gb25lIGRpcmVjdGx5CisJCQkJICog aW5pdGlhdGVkIGJ5IHRoZSB1c2VyLCB3ZSBwYXNzIHRoZQorCQkJCSAqIFBFUkZPUk1fREVMRVRJ T05fSU5URVJOQUwgZmxhZy4KKwkJCQkgKi8KKwkJCQllbG9nKERFQlVHMSwgInNlc3Npb24gdmFy aWFibGUgKG9pZDoldSkgd2lsbCBiZSBkZWxldGVkIChmb3JjZWQgYnkgU1ZBUl9PTl9DT01NSVRf RFJPUCBhY3Rpb24pIiwKKwkJCQkJIHhhY3RfYWktPnZhcmlkKTsKKworCQkJCXBlcmZvcm1EZWxl dGlvbigmb2JqZWN0LCBEUk9QX0NBU0NBREUsCisJCQkJCQkJCVBFUkZPUk1fREVMRVRJT05fSU5U RVJOQUwgfAorCQkJCQkJCQlQRVJGT1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCQkJfQorCQl9CisJ fQorCisJLyoKKwkgKiBBbnkgZHJvcCBhY3Rpb24gbGVmdCBpcyBhbiBlbnRyeSB0aGF0IHdhcyB1 bnJlZ2lzdGVyZWQgYW5kIG5vdAorCSAqIHJvbGxiYWNrZWQsIHNvIHdlIGNhbiBzaW1wbHkgcmVt b3ZlIHRoZW0uCisJICovCisJbGlzdF9mcmVlX2RlZXAoeGFjdF9kcm9wX2FjdGlvbnMpOworCXhh Y3RfZHJvcF9hY3Rpb25zID0gTklMOworfQorCisvKgorICogUG9zdC1zdWJjb21taXQgb3IgcG9z dC1zdWJhYm9ydCBjbGVhbnVwIG9mIHhhY3QgYWN0aW9uIGxpc3QuCisgKgorICogRHVyaW5nIHN1 YmFib3J0LCB3ZSBjYW4gaW1tZWRpYXRlbHkgcmVtb3ZlIGVudHJpZXMgY3JlYXRlZCBkdXJpbmcg dGhpcworICogc3VidHJhbnNhY3Rpb24uIER1cmluZyBzdWJjb21taXQsIGp1c3QgdHJhbnNmZXIg ZW50cmllcyBtYXJrZWQgZHVyaW5nCisgKiB0aGlzIHN1YnRyYW5zYWN0aW9uIGFzIGJlaW5nIHRo ZSBwYXJlbnQncyByZXNwb25zaWJpbGl0eS4KKyAqLwordm9pZAorQXRFT1N1YlhhY3RfU2Vzc2lv blZhcmlhYmxlKGJvb2wgaXNDb21taXQsCisJCQkJCQkJU3ViVHJhbnNhY3Rpb25JZCBteVN1Ymlk LAorCQkJCQkJCVN1YlRyYW5zYWN0aW9uSWQgcGFyZW50U3ViaWQpCit7CisJTGlzdENlbGwgICAq Y3VyX2l0ZW07CisKKwlmb3JlYWNoKGN1cl9pdGVtLCB4YWN0X2Ryb3BfYWN0aW9ucykKKwl7CisJ CVNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICp4YWN0X2FpID0KKwkJKFNWYXJpYWJsZVhBY3RBY3Rp b25JdGVtICopIGxmaXJzdChjdXJfaXRlbSk7CisKKwkJaWYgKCFpc0NvbW1pdCAmJiB4YWN0X2Fp LT5jcmVhdGluZ19zdWJpZCA9PSBteVN1YmlkKQorCQl7CisJCQkvKiBjdXJfaXRlbSBtdXN0IGJl IHJlbW92ZWQgKi8KKwkJCXhhY3RfZHJvcF9hY3Rpb25zID0gZm9yZWFjaF9kZWxldGVfY3VycmVu dCh4YWN0X2Ryb3BfYWN0aW9ucywgY3VyX2l0ZW0pOworCQkJcGZyZWUoeGFjdF9haSk7CisJCX0K KwkJZWxzZQorCQl7CisJCQkvKiBjdXJfaXRlbSBtdXN0IGJlIHByZXNlcnZlZCAqLworCQkJaWYg KHhhY3RfYWktPmNyZWF0aW5nX3N1YmlkID09IG15U3ViaWQpCisJCQkJeGFjdF9haS0+Y3JlYXRp bmdfc3ViaWQgPSBwYXJlbnRTdWJpZDsKKwkJCWlmICh4YWN0X2FpLT5kZWxldGluZ19zdWJpZCA9 PSBteVN1YmlkKQorCQkJCXhhY3RfYWktPmRlbGV0aW5nX3N1YmlkID0gaXNDb21taXQgPyBwYXJl bnRTdWJpZCA6IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOworCQl9CisJfQorfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwppbmRleCBjN2E4YTY4OWI3Li5jOTlmMDkxZjFmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFi bGVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNs dWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2VfeGxvZy5o IgogI2luY2x1ZGUgImNhdGFsb2cvdG9hc3RpbmcuaCIKQEAgLTY0ODcsNiArNjQ4OCw4IEBAIEFU VHlwZWRUYWJsZVJlY3Vyc2lvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFi bGVDbWQgKmNtZCwKICAqIEV2ZW50dWFsbHksIHdlJ2QgbGlrZSB0byBwcm9wYWdhdGUgdGhlIGNo ZWNrIG9yIHJld3JpdGUgb3BlcmF0aW9uCiAgKiBpbnRvIHN1Y2ggdGFibGVzLCBidXQgZm9yIG5v dywganVzdCBlcnJvciBvdXQgaWYgd2UgZmluZCBhbnkuCiAgKgorICogQ2hlY2sgaWYgdGhlIHR5 cGUgInR5cGVPaWQiIGlzIHVzZWQgYXMgdHlwZSBvZiBzb21lIHNlc3Npb24gdmFyaWFibGUgdG9v LgorICoKICAqIENhbGxlciBzaG91bGQgcHJvdmlkZSBlaXRoZXIgdGhlIGFzc29jaWF0ZWQgcmVs YXRpb24gb2YgYSByb3d0eXBlLAogICogb3IgYSB0eXBlIG5hbWUgKG5vdCBib3RoKSBmb3IgdXNl IGluIHRoZSBlcnJvciBtZXNzYWdlLCBpZiBhbnkuCiAgKgpAQCAtNjU0OSw2ICs2NTUyLDQ1IEBA IGZpbmRfY29tcG9zaXRlX3R5cGVfZGVwZW5kZW5jaWVzKE9pZCB0eXBlT2lkLCBSZWxhdGlvbiBv cmlnUmVsYXRpb24sCiAJCQljb250aW51ZTsKIAkJfQogCisJCS8qIERvbid0IGFsbG93IGNoYW5n ZSBvZiB0eXBlIHVzZWQgYnkgc2Vzc2lvbidzIHZhcmlhYmxlICovCisJCWlmIChwZ19kZXBlbmQt PmNsYXNzaWQgPT0gVmFyaWFibGVSZWxhdGlvbklkKQorCQl7CisJCQlPaWQJCQl2YXJpZCA9IHBn X2RlcGVuZC0+b2JqaWQ7CisKKwkJCWlmIChvcmlnVHlwZU5hbWUpCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIFwiJXNcIiBiZWNhdXNlIHNlc3Npb24gdmFyaWFi bGUgXCIlcy4lc1wiIHVzZXMgaXQiLAorCQkJCQkJCQlvcmlnVHlwZU5hbWUsCisJCQkJCQkJCWdl dF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwK KwkJCQkJCQkJZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpKSk7CisJCQllbHNlIGlm IChvcmlnUmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0NPTVBPU0lURV9UWVBF KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgdHlwZSBcIiVzXCIgYmVj YXVzZSBzZXNzaW9uIHZhcmlhYmxlIFwiJXMuJXNcIiB1c2VzIGl0IiwKKwkJCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUob3JpZ1JlbGF0aW9uKSwKKwkJCQkJCQkJZ2V0X25hbWVzcGFjZV9u YW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCQlnZXRf c2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSkpKTsKKwkJCWVsc2UgaWYgKG9yaWdSZWxhdGlv bi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCQkJIGVycm1zZygiY2Fubm90IGFsdGVyIGZvcmVpZ24gdGFibGUgXCIlc1wiIGJlY2F1c2Ug c2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVzXCIgdXNlcyBpdCIsCisJCQkJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKG9yaWdSZWxhdGlvbiksCisJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShn ZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQkJZ2V0X3Nlc3Np b25fdmFyaWFibGVfbmFtZSh2YXJpZCkpKSk7CisJCQllbHNlIGlmIChvcmlnUmVsYXRpb24tPnJk X3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCQkJCSBvcmlnUmVsYXRpb24t PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcgfHwKKwkJCQkJIG9yaWdSZWxhdGlv bi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0YWJsZSBcIiVzXCIgYmVjYXVzZSBzZXNz aW9uIHZhcmlhYmxlIFwiJXMuJXNcIiB1c2VzIGl0IiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUob3JpZ1JlbGF0aW9uKSwKKwkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9z ZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCQlnZXRfc2Vzc2lvbl92 YXJpYWJsZV9uYW1lKHZhcmlkKSkpKTsKKworCQkJY29udGludWU7CisJCX0KKwogCQkvKiBFbHNl LCBpZ25vcmUgZGVwZW5kZWVzIHRoYXQgYXJlbid0IHJlbGF0aW9ucyAqLwogCQlpZiAocGdfZGVw ZW5kLT5jbGFzc2lkICE9IFJlbGF0aW9uUmVsYXRpb25JZCkKIAkJCWNvbnRpbnVlOwpAQCAtMTI4 MzUsNiArMTI4NzcsNyBAQCBBVEV4ZWNBbHRlckNvbHVtblR5cGUoQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsCiAJCQljYXNlIE9DTEFTU19QVUJMSUNBVElPTl9SRUw6CiAJCQlj YXNlIE9DTEFTU19TVUJTQ1JJUFRJT046CiAJCQljYXNlIE9DTEFTU19UUkFOU0ZPUk06CisJCQlj YXNlIE9DTEFTU19WQVJJQUJMRToKIAogCQkJCS8qCiAJCQkJICogV2UgZG9uJ3QgZXhwZWN0IGFu eSBvZiB0aGVzZSBzb3J0cyBvZiBvYmplY3RzIHRvIGRlcGVuZCBvbgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXgg NmY1YWE4YTNjYi4uZjU1MzNkMjQ3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01Myw2ICs1Myw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192 YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJncmFtcGFyc2UuaCIKQEAgLTI5NCw4ICsyOTUsOCBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0bXQgQ29weVN0bXQg Q3JlYXRlQXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0bXQgQ3JlYXRlRXh0 ZW5zaW9uU3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQKIAkJQ3JlYXRlT3BG YW1pbHlTdG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAotCQlDcmVhdGVTY2hl bWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQgQ3JlYXRlVGFi bGVTcGFjZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVh dGVGb3JlaWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2Vzc2lvblZhclN0 bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdAorCQlDcmVhdGVUYWJs ZVNwYWNlU3RtdCBDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZv cmVpZ25UYWJsZVN0bXQKIAkJQ3JlYXRlQXNzZXJ0aW9uU3RtdCBDcmVhdGVUcmFuc2Zvcm1TdG10 IENyZWF0ZVRyaWdTdG10IENyZWF0ZUV2ZW50VHJpZ1N0bXQKIAkJQ3JlYXRlVXNlclN0bXQgQ3Jl YXRlVXNlck1hcHBpbmdTdG10IENyZWF0ZVJvbGVTdG10IENyZWF0ZVBvbGljeVN0bXQKIAkJQ3Jl YXRlZGJTdG10IERlY2xhcmVDdXJzb3JTdG10IERlZmluZVN0bXQgRGVsZXRlU3RtdCBEaXNjYXJk U3RtdCBEb1N0bXQKQEAgLTQ3NSw2ICs0NzYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog JXR5cGUgPGl2YWw+CSBPcHRUZW1wCiAldHlwZSA8aXZhbD4JIE9wdE5vTG9nCiAldHlwZSA8b25j b21taXQ+IE9uQ29tbWl0T3B0aW9uCisldHlwZSA8aXZhbD4JIE9uRU9YQWN0aW9uT3B0aW9uCiAK ICV0eXBlIDxpdmFsPglmb3JfbG9ja2luZ19zdHJlbmd0aAogJXR5cGUgPG5vZGU+CWZvcl9sb2Nr aW5nX2l0ZW0KQEAgLTY0NCw2ICs2NDYsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5 cGUgPHBhcnRib3VuZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3BlYwogJXR5cGUgPGxpc3Q+CQloYXNo X3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KKyV0eXBlIDxu b2RlPgkJT3B0U2Vzc2lvblZhckRlZkV4cHIKKyV0eXBlIDxib29sZWFuPgkJT3B0Tm90TnVsbCBP cHRJbW11dGFibGUKIAogCiAldHlwZSA8bm9kZT4JCWpzb25fZm9ybWF0X2NsYXVzZV9vcHQKQEAg LTc3Miw4ICs3NzYsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVVFU0NBUEUgVU5CT1VO REVEIFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCiAJVU5MSVNU RU4gVU5MT0dHRUQgVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAotCVZBQ1VVTSBWQUxJRCBWQUxJ REFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCi0J VkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZBQ1VVTSBWQUxJRCBWQUxJ REFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQUJMRSBWQVJJQUJMRVMK KwlWQVJJQURJQyBWQVJZSU5HIFZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUK IAogCVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdP UksgV1JBUFBFUiBXUklURQogCkBAIC0xMDI3LDYgKzEwMzEsNyBAQCBzdG10OgogCQkJfCBDcmVh dGVQb2xpY3lTdG10CiAJCQl8IENyZWF0ZVBMYW5nU3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10 CisJCQl8IENyZWF0ZVNlc3Npb25WYXJTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQKIAkJCXwgQ3Jl YXRlU3RtdAogCQkJfCBDcmVhdGVTdWJzY3JpcHRpb25TdG10CkBAIC0xNTcxLDYgKzE1NzYsNyBA QCBzY2hlbWFfc3RtdDoKIAkJCXwgQ3JlYXRlVHJpZ1N0bXQKIAkJCXwgR3JhbnRTdG10CiAJCQl8 IFZpZXdTdG10CisJCQl8IENyZWF0ZVNlc3Npb25WYXJTdG10CiAJCTsKIAogCkBAIC01MDU2LDYg KzUwNjIsNjkgQEAgY3JlYXRlX2V4dGVuc2lvbl9vcHRfaXRlbToKIAkJCQl9CiAJCTsKIAorLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZIDoKKyAqCQkJCUNSRUFURSBWQVJJQUJM RSB2YXJuYW1lIFtBU10gdHlwZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworQ3JlYXRl U2Vzc2lvblZhclN0bXQ6CisJCQlDUkVBVEUgT3B0VGVtcCBPcHRJbW11dGFibGUgVkFSSUFCTEUg cXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVuYW1lIG9wdF9jb2xsYXRlX2NsYXVzZSBPcHROb3RO dWxsIE9wdFNlc3Npb25WYXJEZWZFeHByIE9uRU9YQWN0aW9uT3B0aW9uCisJCQkJeworCQkJCQlD cmVhdGVTZXNzaW9uVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNlc3Npb25WYXJTdG10KTsK KwkJCQkJJDUtPnJlbHBlcnNpc3RlbmNlID0gJDI7CisJCQkJCW4tPmlzX2ltbXV0YWJsZSA9ICQz OworCQkJCQluLT52YXJpYWJsZSA9ICQ1OworCQkJCQluLT50eXBlTmFtZSA9ICQ3OworCQkJCQlu LT5jb2xsQ2xhdXNlID0gKENvbGxhdGVDbGF1c2UgKikgJDg7CisJCQkJCW4tPmlzX25vdF9udWxs ID0gJDk7CisJCQkJCW4tPmRlZmV4cHIgPSAkMTA7CisJCQkJCW4tPmVveGFjdGlvbiA9ICQxMTsK KwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopIG47CisJ CQkJfQorCQkJfCBDUkVBVEUgT3B0VGVtcCBPcHRJbW11dGFibGUgVkFSSUFCTEUgSUZfUCBOT1Qg RVhJU1RTIHF1YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZSBvcHRfY29sbGF0ZV9jbGF1c2Ug T3B0Tm90TnVsbCBPcHRTZXNzaW9uVmFyRGVmRXhwciBPbkVPWEFjdGlvbk9wdGlvbgorCQkJCXsK KwkJCQkJQ3JlYXRlU2Vzc2lvblZhclN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVTZXNzaW9uVmFy U3RtdCk7CisJCQkJCSQ4LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT5pc19pbW11dGFi bGUgPSAkMzsKKwkJCQkJbi0+dmFyaWFibGUgPSAkODsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMTA7 CisJCQkJCW4tPmNvbGxDbGF1c2UgPSAoQ29sbGF0ZUNsYXVzZSAqKSAkMTE7CisJCQkJCW4tPmlz X25vdF9udWxsID0gJDEyOworCQkJCQluLT5kZWZleHByID0gJDEzOworCQkJCQluLT5lb3hhY3Rp b24gPSAkMTQ7CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSB0cnVlOworCQkJCQkkJCA9IChOb2Rl ICopIG47CisJCQkJfQorCQk7CisKK09wdFNlc3Npb25WYXJEZWZFeHByOiBERUZBVUxUIGJfZXhw cgkJCQkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJCXsgJCQgPSBOVUxMOyB9 CisJCTsKKworLyoKKyAqIFRlbXBvcmFyeSBzZXNzaW9uIHZhcmlhYmxlcyBjYW4gYmUgZHJvcHBl ZCBvbiBzdWNjZXNzZnVsCisgKiB0cmFuc2FjdGlvbiBlbmQgbGlrZSB0YWJsZXMuICBSRVNFVCBj YW4gb25seSBiZSBmb3JjZWQgb24KKyAqIHRyYW5zYWN0aW9uIGVuZC4gU2luY2UgdGhlIHNlc3Np b24gdmFyaWFibGVzIGFyZSBub3QKKyAqIHRyYW5zYWN0aW9uYWwsIHdlIGhhdmUgdG8gaGFuZGxl IFJPTExCQUNLIHRvby4KKyAqIFRoZSBjbGF1c2UgT04gVFJBTlNBQ1RJT04gRU5EIGlzIGNsZWFy ZXIgdGhhbiBzb21lCisgKiBPTiBDT01NSVQgUk9MTEJBQ0sgUkVTRVQgY2xhdXNlLgorICovCitP bkVPWEFjdGlvbk9wdGlvbjogIE9OIENPTU1JVCBEUk9QCQkJCQl7ICQkID0gVkFSSUFCTEVfRU9Y X0RST1A7IH0KKwkJCXwgT04gVFJBTlNBQ1RJT04gRU5EX1AgUkVTRVQJCQl7ICQkID0gVkFSSUFC TEVfRU9YX1JFU0VUOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IFZBUklBQkxFX0VP WF9OT09QOyB9CisJCTsKKworT3B0Tm90TnVsbDogTk9UIE5VTExfUAkJCQkJCQkJeyAkJCA9IHRy dWU7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IGZhbHNlOyB9CisJCTsKKworT3B0 SW1tdXRhYmxlOiBJTU1VVEFCTEUJCQkJCQkJCXsgJCQgPSB0cnVlOyB9CisJCQl8IC8qIEVNUFRZ ICovCQkJCQkJCXsgJCQgPSBmYWxzZTsgfQorCQk7CisKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog ICoKICAqIEFMVEVSIEVYVEVOU0lPTiBuYW1lIFVQREFURSBbIFRPIHZlcnNpb24gXQpAQCAtNjgz Myw2ICs2OTAyLDcgQEAgb2JqZWN0X3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0gg RElDVElPTkFSWQkJCQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsgfQogCQkJfCBURVhUX1Ag U0VBUkNIIFRFTVBMQVRFCQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQogCQkJfCBURVhU X1AgU0VBUkNIIENPTkZJR1VSQVRJT04JCQl7ICQkID0gT0JKRUNUX1RTQ09ORklHVVJBVElPTjsg fQorCQkJfCBWQVJJQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAK IC8qCkBAIC03NzA5LDYgKzc3NzksMTQgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2Jq cyA9ICQyOwogCQkJCQkkJCA9IG47CiAJCQkJfQorCQkJfCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFt ZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9j KHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpF Q1Q7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAk MjsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBuYW1l X2xpc3QKIAkJCQl7CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Mo c2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAgLTc3NTQsNiArNzgzMiwxNCBAQCBwcml2aWxlZ2VfdGFy Z2V0OgogCQkJCQluLT5vYmpzID0gJDU7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IEFMTCBW QVJJQUJMRVMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpu ID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRh cmd0eXBlID0gQUNMX1RBUkdFVF9BTExfSU5fU0NIRU1BOworCQkJCQluLT5vYmp0eXBlID0gT0JK RUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmpzID0gJDU7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJ CTsKIAogCkBAIC03OTUxLDYgKzgwMzcsNyBAQCBkZWZhY2xfcHJpdmlsZWdlX3RhcmdldDoKIAkJ CXwgU0VRVUVOQ0VTCQl7ICQkID0gT0JKRUNUX1NFUVVFTkNFOyB9CiAJCQl8IFRZUEVTX1AJCXsg JCQgPSBPQkpFQ1RfVFlQRTsgfQogCQkJfCBTQ0hFTUFTCQl7ICQkID0gT0JKRUNUX1NDSEVNQTsg fQorCQkJfCBWQVJJQUJMRVMJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAKQEAg LTk3MzMsNiArOTgyMCwyNSBAQCBSZW5hbWVTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRl X3dpdGhfYXJndHlwZXMgUkVOQU1FIFRPIG5hbWUKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNl OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBhbnlf bmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJUmVuYW1lU3RtdCAqbiA9IG1ha2VOb2Rl KFJlbmFtZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJ CQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJbi0+bmV3bmFtZSA9ICQ2OworCQkJCQlu LT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwg QUxURVIgVkFSSUFCTEUgSUZfUCBFWElTVFMgYW55X25hbWUgUkVOQU1FIFRPIG5hbWUKKwkJCQl7 CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtlTm9kZShSZW5hbWVTdG10KTsKKwkJCQkJbi0+cmVu YW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDU7 CisJCQkJCW4tPm5ld25hbWUgPSAkODsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJ CSQkID0gKE5vZGUgKiluOworCQkJCX0KKwogCQk7CiAKIG9wdF9jb2x1bW46IENPTFVNTgpAQCAt MTAwOTQsNiArMTAyMDAsMjUgQEAgQWx0ZXJPYmplY3RTY2hlbWFTdG10OgogCQkJCQluLT5taXNz aW5nX29rID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVS IFZBUklBQkxFIGFueV9uYW1lIFNFVCBTQ0hFTUEgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJPYmpl Y3RTY2hlbWFTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPYmplY3RTY2hlbWFTdG10KTsKKwkJCQkJ bi0+b2JqZWN0VHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUg KikgJDM7CisJCQkJCW4tPm5ld3NjaGVtYSA9ICQ2OworCQkJCQluLT5taXNzaW5nX29rID0gZmFs c2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgSUZf UCBFWElTVFMgYW55X25hbWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVj dFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQlu LT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAq KSAkNTsKKwkJCQkJbi0+bmV3c2NoZW1hID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVl OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisKIAkJOwogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKQEAgLTEwMzczLDYgKzEwNDk4LDE0IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dS RUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMKIAkJCQkJbi0+ bmV3b3duZXIgPSAkNjsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQUxURVIg VkFSSUFCTEUgYW55X25hbWUgT1dORVIgVE8gUm9sZVNwZWMKKwkJCQl7CisJCQkJCUFsdGVyT3du ZXJTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPd25lclN0bXQpOworCQkJCQluLT5vYmplY3RUeXBl ID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJ bi0+bmV3b3duZXIgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQk7CiAKIApA QCAtMTcyNTYsNiArMTczODksOCBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFZBTElEQVRF CiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxVRV9QCisJCQl8IFZBUklBQkxFCisJCQl8IFZBUklB QkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZFUlNJT05fUAogCQkJfCBWSUVXCkBAIC0xNzg4MSw2 ICsxODAxNiw4IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgVkFMVUVfUAogCQkJfCBWQUxV RVMKIAkJCXwgVkFSQ0hBUgorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJMRVMKIAkJCXwgVkFS SUFESUMKIAkJCXwgVkVSQk9TRQogCQkJfCBWRVJTSU9OX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpp bmRleCA4NWNkNDdiN2FlLi42ZmMwMzE2NmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC00 NzIsNiArNDcyLDcgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1O X0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQ Ul9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAKIAkJCWlmIChpc0FnZykKIAkJCQllcnIgPSBfKCJh Z2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJlc3Npb25z Iik7CkBAIC05MTUsNiArOTE2LDcgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lO RF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKKwkJ Y2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5j dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKIAkJCWJyZWFr OwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMKaW5kZXggMGIzNjMyNzM1Yi4uMzI3YzU5NTZiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j CkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJj b21tYW5kcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2Vm dW5jcy5oIgpAQCAtNTQxLDYgKzU0Miw4IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRl ICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfQ09QWV9XSEVSRToK IAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJY2FzZSBFWFBSX0tJTkRfQ1lD TEVfTUFSSzoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKKwogCQkJLyogb2th eSAqLwogCQkJYnJlYWs7CiAKQEAgLTE3NjIsNiArMTc2NSw3IEBAIHRyYW5zZm9ybVN1Ykxpbmso UGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQkJYnJlYWs7CiAJCWNhc2Ug RVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZB VUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0gXygiY2Fu bm90IHVzZSBzdWJxdWVyeSBpbiBERUZBVUxUIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOwogCQlj YXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAtMzEwOCw2ICszMTEyLDcgQEAgUGFy c2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiQ0hFQ0si OwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVO Q1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCXJl dHVybiAiREVGQVVMVCI7CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CiAJCQly ZXR1cm4gImluZGV4IGV4cHJlc3Npb24iOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggYjNm MGI2YTEzNy4uYTBmZGFhODYwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNjE4LDYg KzI2MTgsNyBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5E X0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQlj YXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0gXygic2V0LXJldHVybmlu ZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKIAkJ CWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKaW5kZXggYjEyNTVlM2I3MC4uZTdlNzUyMDlkZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMDUsNiArMTA1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlM aXN0CSAgICppbmRleGVzOwkJLyogQ1JFQVRFIElOREVYIGl0ZW1zICovCiAJTGlzdAkgICAqdHJp Z2dlcnM7CQkvKiBDUkVBVEUgVFJJR0dFUiBpdGVtcyAqLwogCUxpc3QJICAgKmdyYW50czsJCQkv KiBHUkFOVCBpdGVtcyAqLworCUxpc3QJICAgKnZhcmlhYmxlczsJCS8qIENSRUFURSBWQVJJQUJM RSBpdGVtcyAqLwogfSBDcmVhdGVTY2hlbWFTdG10Q29udGV4dDsKIAogCkBAIC0zODIyLDYgKzM4 MjMsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10RWxlbWVudHMoTGlzdCAqc2NoZW1hRWx0 cywgY29uc3QgY2hhciAqc2NoZW1hTmFtZSkKIAljeHQuaW5kZXhlcyA9IE5JTDsKIAljeHQudHJp Z2dlcnMgPSBOSUw7CiAJY3h0LmdyYW50cyA9IE5JTDsKKwljeHQudmFyaWFibGVzID0gTklMOwog CiAJLyoKIAkgKiBSdW4gdGhyb3VnaCBlYWNoIHNjaGVtYSBlbGVtZW50IGluIHRoZSBzY2hlbWEg ZWxlbWVudCBsaXN0LiBTZXBhcmF0ZQpAQCAtMzg5MCw2ICszODkyLDE1IEBAIHRyYW5zZm9ybUNy ZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhMaXN0ICpzY2hlbWFFbHRzLCBjb25zdCBjaGFyICpzY2hl bWFOYW1lKQogCQkJCWN4dC5ncmFudHMgPSBsYXBwZW5kKGN4dC5ncmFudHMsIGVsZW1lbnQpOwog CQkJCWJyZWFrOwogCisJCQljYXNlIFRfQ3JlYXRlU2Vzc2lvblZhclN0bXQ6CisJCQkJeworCQkJ CQlDcmVhdGVTZXNzaW9uVmFyU3RtdCAqZWxwID0gKENyZWF0ZVNlc3Npb25WYXJTdG10ICopIGVs ZW1lbnQ7CisKKwkJCQkJc2V0U2NoZW1hTmFtZShjeHQuc2NoZW1hbmFtZSwgJmVscC0+dmFyaWFi bGUtPnNjaGVtYW5hbWUpOworCQkJCQljeHQudmFyaWFibGVzID0gbGFwcGVuZChjeHQudmFyaWFi bGVzLCBlbGVtZW50KTsKKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIG5vZGVU YWcoZWxlbWVudCkpOwpAQCAtMzkwMyw2ICszOTE0LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1h U3RtdEVsZW1lbnRzKExpc3QgKnNjaGVtYUVsdHMsIGNvbnN0IGNoYXIgKnNjaGVtYU5hbWUpCiAJ cmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBjeHQuaW5kZXhlcyk7CiAJcmVzdWx0ID0gbGlz dF9jb25jYXQocmVzdWx0LCBjeHQudHJpZ2dlcnMpOwogCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJl c3VsdCwgY3h0LmdyYW50cyk7CisJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBjeHQudmFy aWFibGVzKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDMwYjUxYmY0 ZDMuLmRkYzI2Nzk0YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisr KyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVk ZSAiY29tbWFuZHMvcHJvY2xhbmcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWFjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlY2xhYmVsLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmgiCkBAIC0xODksNiArMTkwLDcgQEAgQ2xhc3NpZnlVdGlsaXR5Q29tbWFuZEFz UmVhZE9ubHkoTm9kZSAqcGFyc2V0cmVlKQogCQljYXNlIFRfQ3JlYXRlUmFuZ2VTdG10OgogCQlj YXNlIFRfQ3JlYXRlUm9sZVN0bXQ6CiAJCWNhc2UgVF9DcmVhdGVTY2hlbWFTdG10OgorCQljYXNl IFRfQ3JlYXRlU2Vzc2lvblZhclN0bXQ6CiAJCWNhc2UgVF9DcmVhdGVTZXFTdG10OgogCQljYXNl IFRfQ3JlYXRlU3RhdHNTdG10OgogCQljYXNlIFRfQ3JlYXRlU3RtdDoKQEAgLTEzOTYsNiArMTM5 OCwxMCBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCX0KIAkJ CQlicmVhazsKIAorCQkJY2FzZSBUX0NyZWF0ZVNlc3Npb25WYXJTdG10OgorCQkJCWFkZHJlc3Mg PSBDcmVhdGVWYXJpYWJsZShwc3RhdGUsIChDcmVhdGVTZXNzaW9uVmFyU3RtdCAqKSBwYXJzZXRy ZWUpOworCQkJCWJyZWFrOworCiAJCQkJLyoKIAkJCQkgKiAqKioqKioqKioqKioqIG9iamVjdCBj cmVhdGlvbiAvIGRlc3RydWN0aW9uICoqKioqKioqKioqKioqCiAJCQkJICovCkBAIC0yMzQyLDYg KzIzNDgsOSBAQCBBbHRlck9iamVjdFR5cGVDb21tYW5kVGFnKE9iamVjdFR5cGUgb2JqdHlwZSkK IAkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJCXRhZyA9IENNRFRBR19BTFRFUl9TVEFU SVNUSUNTOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJdGFnID0gQ01E VEFHX0FMVEVSX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQl0YWcgPSBDTURU QUdfVU5LTk9XTjsKIAkJCWJyZWFrOwpAQCAtMjY1MCw2ICsyNjU5LDkgQEAgQ3JlYXRlQ29tbWFu ZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJ CQkJdGFnID0gQ01EVEFHX0RST1BfU1RBVElTVElDUzsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQkJCXRhZyA9IENNRFRBR19EUk9QX1ZBUklBQkxFOworCQkJCQli cmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSBDTURUQUdfVU5LTk9XTjsKIAkJCX0KQEAg LTMyMjYsNiArMzIzOCwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJ CX0KIAkJCWJyZWFrOwogCisJCWNhc2UgVF9DcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJCXRhZyA9 IENNRFRBR19DUkVBVEVfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxv ZyhXQVJOSU5HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBub2Rl VGFnKHBhcnNldHJlZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCmluZGV4IGM2NjBmZDNlNzAuLmRjMDlkZTEy YjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTg0NCw2ICs4NDQsMTAgQEAgYWNsZGVmYXVsdChPYmpl Y3RUeXBlIG9ianR5cGUsIE9pZCBvd25lcklkKQogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19S SUdIVFM7CiAJCQlvd25lcl9kZWZhdWx0ID0gQUNMX0FMTF9SSUdIVFNfUEFSQU1FVEVSX0FDTDsK IAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXdvcmxkX2RlZmF1bHQgPSBB Q0xfTk9fUklHSFRTOworCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxF OworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9i amVjdCB0eXBlOiAlZCIsIChpbnQpIG9ianR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9O T19SSUdIVFM7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTk0MSw2ICs5NDUsOSBAQCBh Y2xkZWZhdWx0X3NxbChQR19GVU5DVElPTl9BUkdTKQogCQljYXNlICdUJzoKIAkJCW9ianR5cGUg PSBPQkpFQ1RfVFlQRTsKIAkJCWJyZWFrOworCQljYXNlICdWJzoKKwkJCW9ianR5cGUgPSBPQkpF Q1RfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb2JqZWN0IHR5cGUgYWJicmV2aWF0aW9uOiAlYyIsIG9ianR5cGVjKTsKIAl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IGM3NjA3ODk1Y2QuLjcwM2UyNjFkZTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Ry YW5zZm9ybS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgpAQCAtMzY3MiwzICszNjcz LDExNSBAQCBnZXRfc3Vic2NyaXB0aW9uX25hbWUoT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2sp CiAKIAlyZXR1cm4gc3VibmFtZTsKIH0KKworLyoJCQkJLS0tLS0tLS0tLSBQR19WQVJJQUJMRSBD QUNIRSAtLS0tLS0tLS0tCQkJCSAqLworCisvKgorICogZ2V0X3Zhcm5hbWVfdmFyaWQKKyAqCQlH aXZlbiBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgdmFyaWFibGUsIGxvb2sgdXAgdGhlIE9JRC4KKyAq LworT2lkCitnZXRfdmFybmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFt ZXNwYWNlKQoreworCXJldHVybiBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLCBBbnVt X3BnX3ZhcmlhYmxlX29pZCwKKwkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0odmFybmFtZXNwYWNlKSk7Cit9CisKKy8qCisgKiBnZXRf c2Vzc2lvbl92YXJpYWJsZV9uYW1lCisgKgkJUmV0dXJucyBhIHBhbGxvYydkIGNvcHkgb2YgdGhl IG5hbWUgb2YgYSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlLgorICovCitjaGFyICoKK2dldF9zZXNz aW9uX3ZhcmlhYmxlX25hbWUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9w Z192YXJpYWJsZSB2YXJmb3JtOworCWNoYXIJICAgKnZhcm5hbWU7CisKKwl0dXAgPSBTZWFyY2hT eXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKworCXZhcmZvcm0gPSAoRm9ybV9w Z192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwl2YXJuYW1lID0gcHN0cmR1cChOYW1lU3Ry KHZhcmZvcm0tPnZhcm5hbWUpKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJu IHZhcm5hbWU7Cit9CisKKy8qCisgKiBnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UKKyAq CQlSZXR1cm5zIHRoZSBwZ19uYW1lc3BhY2UgT0lEIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHNl c3Npb24gdmFyaWFibGUuCisgKi8KK09pZAorZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNl KE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9y bTsKKwlPaWQJCQl2YXJuYW1lc3BhY2U7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFC TEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxp ZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUg JXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0 dXApOworCisJdmFybmFtZXNwYWNlID0gdmFyZm9ybS0+dmFybmFtZXNwYWNlOworCisJUmVsZWFz ZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFybmFtZXNwYWNlOworfQorCisvKgorICogUmV0 dXJucyB0aGUgdHlwZSwgdHlwbW9kIGFuZCBjb2xsaWQgb2YgdGhlIGdpdmVuIHNlc3Npb24gdmFy aWFibGUuCisgKi8KK09pZAorZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZShPaWQgdmFyaWQpCit7 CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJT2lkCQkJdmFy dHlwZTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXRE YXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxlICV1IiwgdmFyaWQp OworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZh cnR5cGUgPSB2YXJmb3JtLT52YXJ0eXBlOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwly ZXR1cm4gdmFydHlwZTsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIHR5cGUsIHR5cG1vZCBhbmQg Y29sbGlkIG9mIHRoZSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlLgorICovCit2b2lkCitnZXRfc2Vz c2lvbl92YXJpYWJsZV90eXBlX3R5cG1vZF9jb2xsaWQoT2lkIHZhcmlkLCBPaWQgKnR5cGlkLCBp bnQzMiAqdHlwbW9kLAorCQkJCQkJCQkJCU9pZCAqY29sbGlkKQoreworCUhlYXBUdXBsZQl0dXA7 CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZB UklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlc3Np b24gdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUp IEdFVFNUUlVDVCh0dXApOworCisJKnR5cGlkID0gdmFyZm9ybS0+dmFydHlwZTsKKwkqdHlwbW9k ID0gdmFyZm9ybS0+dmFydHlwbW9kOworCSpjb2xsaWQgPSB2YXJmb3JtLT52YXJjb2xsYXRpb247 CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3N5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5j CmluZGV4IDRlNGEzNGJkZTguLmQwZTUyNjU1MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3N5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2Fj aGUuYwpAQCAtNzUsNiArNzUsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Vz ZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRl ICJsaWIvcXVuaXF1ZS5oIgogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCkBAIC02NzYsNiArNjc3LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgY2FjaGVkZXNjIGNhY2hlaW5mb1tdID0gewogCQlLRVkoQW51bV9wZ191c2VyX21hcHBpbmdf dW11c2VyLAogCQkJQW51bV9wZ191c2VyX21hcHBpbmdfdW1zZXJ2ZXIpLAogCQkyCisJfSwKKwlb VkFSSUFCTEVOQU1FTlNQXSA9IHsKKwkJVmFyaWFibGVSZWxhdGlvbklkLAorCQlWYXJpYWJsZU5h bWVOc3BJbmRleElkLAorCQlLRVkoQW51bV9wZ192YXJpYWJsZV92YXJuYW1lLAorCQkJQW51bV9w Z192YXJpYWJsZV92YXJuYW1lc3BhY2UpLAorCQk4CisJfSwKKwlbVkFSSUFCTEVPSURdID0gewor CQlWYXJpYWJsZVJlbGF0aW9uSWQsCisJCVZhcmlhYmxlT2JqZWN0SW5kZXhJZCwKKwkJS0VZKEFu dW1fcGdfdmFyaWFibGVfb2lkKSwKKwkJOAogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5 LmgKaW5kZXggZmZkNWU5ZGM4Mi4uZTQzYTFhYjk2YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5 LmgKQEAgLTEyNywxMCArMTI3LDExIEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFT U19QVUJMSUNBVElPTl9OQU1FU1BBQ0UsCS8qIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSAqLwog CU9DTEFTU19QVUJMSUNBVElPTl9SRUwsCQkvKiBwZ19wdWJsaWNhdGlvbl9yZWwgKi8KIAlPQ0xB U1NfU1VCU0NSSVBUSU9OLAkJLyogcGdfc3Vic2NyaXB0aW9uICovCi0JT0NMQVNTX1RSQU5TRk9S TQkJCS8qIHBnX3RyYW5zZm9ybSAqLworCU9DTEFTU19UUkFOU0ZPUk0sCQkJLyogcGdfdHJhbnNm b3JtICovCisJT0NMQVNTX1ZBUklBQkxFCQkJCS8qIHBnX3ZhcmlhYmxlICovCiB9IE9iamVjdENs YXNzOwogCi0jZGVmaW5lIExBU1RfT0NMQVNTCQlPQ0xBU1NfVFJBTlNGT1JNCisjZGVmaW5lIExB U1RfT0NMQVNTCQlPQ0xBU1NfVkFSSUFCTEUKIAogLyogZmxhZyBiaXRzIGZvciBwZXJmb3JtRGVs ZXRpb24vcGVyZm9ybU11bHRpcGxlRGVsZXRpb25zOiAqLwogI2RlZmluZSBQRVJGT1JNX0RFTEVU SU9OX0lOVEVSTkFMCQkJMHgwMDAxCS8qIGludGVybmFsIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVz b24uYnVpbGQKaW5kZXggMzE3OWJlMDlkMy4uNTE0MTRiOTNiZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29u LmJ1aWxkCkBAIC02NSw2ICs2NSw3IEBAIGNhdGFsb2dfaGVhZGVycyA9IFsKICAgJ3BnX3B1Ymxp Y2F0aW9uX3JlbC5oJywKICAgJ3BnX3N1YnNjcmlwdGlvbi5oJywKICAgJ3BnX3N1YnNjcmlwdGlv bl9yZWwuaCcsCisgICdwZ192YXJpYWJsZS5oJywKIF0KIAogYmtpX2RhdGEgPSBbCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9uYW1lc3BhY2UuaAppbmRleCBmNjRhMGVjMjZiLi43ODdkZTE1ZWQxIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv bmFtZXNwYWNlLmgKQEAgLTk2LDYgKzk2LDggQEAgZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5cGlk KGNvbnN0IGNoYXIgKnR5cG5hbWUpOwogZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5cGlkRXh0ZW5k ZWQoY29uc3QgY2hhciAqdHlwbmFtZSwgYm9vbCB0ZW1wX29rKTsKIGV4dGVybiBib29sIFR5cGVJ c1Zpc2libGUoT2lkIHR5cGlkKTsKIAorZXh0ZXJuIGJvb2wgVmFyaWFibGVJc1Zpc2libGUoT2lk IHZhcmlkKTsKKwogZXh0ZXJuIEZ1bmNDYW5kaWRhdGVMaXN0IEZ1bmNuYW1lR2V0Q2FuZGlkYXRl cyhMaXN0ICpuYW1lcywKIAkJCQkJCQkJCQkJICAgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywK IAkJCQkJCQkJCQkJICAgYm9vbCBleHBhbmRfdmFyaWFkaWMsCkBAIC0xNjQsNiArMTY2LDkgQEAg ZXh0ZXJuIHZvaWQgU2V0VGVtcE5hbWVzcGFjZVN0YXRlKE9pZCB0ZW1wTmFtZXNwYWNlSWQsCiAJ CQkJCQkJCSAgT2lkIHRlbXBUb2FzdE5hbWVzcGFjZUlkKTsKIGV4dGVybiB2b2lkIFJlc2V0VGVt cFRhYmxlTmFtZXNwYWNlKHZvaWQpOwogCitleHRlcm4gTGlzdCAqTmFtZXNGcm9tTGlzdChMaXN0 ICpuYW1lcyk7CitleHRlcm4gT2lkCUxvb2t1cFZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUs IGNvbnN0IGNoYXIgKnZhcm5hbWUsIGJvb2wgbWlzc2luZ19vayk7CisKIGV4dGVybiBPdmVycmlk ZVNlYXJjaFBhdGggKkdldE92ZXJyaWRlU2VhcmNoUGF0aChNZW1vcnlDb250ZXh0IGNvbnRleHQp OwogZXh0ZXJuIE92ZXJyaWRlU2VhcmNoUGF0aCAqQ29weU92ZXJyaWRlU2VhcmNoUGF0aChPdmVy cmlkZVNlYXJjaFBhdGggKnBhdGgpOwogZXh0ZXJuIGJvb2wgT3ZlcnJpZGVTZWFyY2hQYXRoTWF0 Y2hlc0N1cnJlbnQoT3ZlcnJpZGVTZWFyY2hQYXRoICpwYXRoKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf ZGVmYXVsdF9hY2wuaAppbmRleCBkNmQwYTAzZjBjLi41M2FmZmM5NjljIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19kZWZhdWx0X2FjbC5oCkBAIC02Niw2ICs2Niw3IEBAIERFQ0xBUkVfVU5JUVVFX0lO REVYX1BLRVkocGdfZGVmYXVsdF9hY2xfb2lkX2luZGV4LCA4MjgsIERlZmF1bHRBY2xPaWRJbmRl eElkLCBvCiAjZGVmaW5lIERFRkFDTE9CSl9GVU5DVElPTgkJJ2YnIC8qIGZ1bmN0aW9uICovCiAj ZGVmaW5lIERFRkFDTE9CSl9UWVBFCQkJJ1QnIC8qIHR5cGUgKi8KICNkZWZpbmUgREVGQUNMT0JK X05BTUVTUEFDRQkJJ24nIC8qIG5hbWVzcGFjZSAqLworI2RlZmluZSBERUZBQ0xPQkpfVkFSSUFC TEUJCSdWJyAvKiB2YXJpYWJsZSAqLwogCiAjZW5kaWYJCQkJCQkJLyogRVhQT1NFX1RPX0NMSUVO VF9DT0RFICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGQ3YTYwYjM5YjUuLmUxMDM0 ZmRjNDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNjM3Myw2ICs2MzczLDkgQEAKICAg cHJvbmFtZSA9PiAncGdfY29sbGF0aW9uX2lzX3Zpc2libGUnLCBwcm9jb3N0ID0+ICcxMCcsIHBy b3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX2NvbGxhdGlvbl9pc192aXNpYmxlJyB9LAoreyBvaWQg PT4gJzkyMjEnLCBkZXNjciA9PiAnaXMgc2Vzc2lvbiB2YXJpYWJsZSB2aXNpYmxlIGluIHNlYXJj aCBwYXRoPycsCisgIHByb25hbWUgPT4gJ3BnX3ZhcmlhYmxlX2lzX3Zpc2libGUnLCBwcm9jb3N0 ID0+ICcxMCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHBy b2FyZ3R5cGVzID0+ICdvaWQnLCBwcm9zcmMgPT4gJ3BnX3ZhcmlhYmxlX2lzX3Zpc2libGUnIH0s CiAKIHsgb2lkID0+ICcyODU0JywgZGVzY3IgPT4gJ2dldCBPSUQgb2YgY3VycmVudCBzZXNzaW9u XCdzIHRlbXAgc2NoZW1hLCBpZiBhbnknLAogICBwcm9uYW1lID0+ICdwZ19teV90ZW1wX3NjaGVt YScsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z192YXJpYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjY5OGNk NzNjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxl LmgKQEAgLTAsMCArMSwxMzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3Zhcmlh YmxlLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiBzZXNzaW9uIHZhcmlhYmxlcyBzeXN0ZW0gY2F0YWxv ZyAocGdfdmFyaWFibGVzKQorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCisgKgorICogTk9URVMK KyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQgZGVyaXZlcyBz Y2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgUEdfVkFSSUFCTEVfSAorI2RlZmluZSBQR19WQVJJQUJMRV9ICisKKyNpbmNsdWRlICJj YXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGVfZC5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgor CisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfdmFyaWFibGUgZGVmaW5pdGlvbi4gIGNwcCB0 dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ192YXJpYWJsZQor ICoKKyAqIFRoZSBjb2x1bW4gdmFyY3JlYXRlX2xzbiBvZiBYbG9nUmVjUHRyIHR5cGUgKDgtYnl0 ZSkgc2hvdWxkIGJlIG9uIHBvc2l0aW9uCisgKiBkaXZpc2libGUgYnkgOCB1bmNvbmRpdGlvbmFs bHkgYW5kIGJlZm9yZSB2YXJuYW1lIGNvbHVtbiBvZiBOYW1lRGF0YSB0eXBlLgorICogc2VlIHNh bml0eV9jaGVjazpjaGVja19jb2x1bW5zCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFM T0cocGdfdmFyaWFibGUsOTIyMixWYXJpYWJsZVJlbGF0aW9uSWQpCit7CisJT2lkCQkJb2lkOwkJ CS8qIG9pZCAqLworCisJLyogT0lEIG9mIGVudHJ5IGluIHBnX3R5cGUgZm9yIHZhcmlhYmxlJ3Mg dHlwZSAqLworCU9pZAkJCXZhcnR5cGUgQktJX0xPT0tVUChwZ190eXBlKTsKKworCS8qIFVzZWQg Zm9yIGlkZW50aXR5IGNoZWNrIFtvaWQsIGNyZWF0ZV9sc25dICovCisJWExvZ1JlY1B0cgl2YXJj cmVhdGVfbHNuOworCisJLyogdmFyaWFibGUgbmFtZSAqLworCU5hbWVEYXRhCXZhcm5hbWU7CisK KwkvKiBPSUQgb2YgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdmFyaWFibGUgY2xhc3MgKi8KKwlPaWQJ CQl2YXJuYW1lc3BhY2UgQktJX0xPT0tVUChwZ19uYW1lc3BhY2UpOworCisJLyogdmFyaWFibGUg b3duZXIgKi8KKwlPaWQJCQl2YXJvd25lciBCS0lfTE9PS1VQKHBnX2F1dGhpZCk7CisKKwkvKiB0 eXBtb2QgZm9yIHZhcmlhYmxlJ3MgdHlwZSAqLworCWludDMyCQl2YXJ0eXBtb2Q7CisKKwkvKiBE b24ndCBhbGxvdyBOVUxMICovCisJYm9vbAkJdmFyaXNub3RudWxsOworCisJLyogRG9uJ3QgYWxs b3cgY2hhbmdlcyAqLworCWJvb2wJCXZhcmlzaW1tdXRhYmxlOworCisJLyogYWN0aW9uIG9uIHRy YW5zYWN0aW9uIGVuZCAqLworCWNoYXIJCXZhcmVveGFjdGlvbjsKKworCS8qIHZhcmlhYmxlIGNv bGxhdGlvbiAqLworCU9pZAkJCXZhcmNvbGxhdGlvbiBCS0lfTE9PS1VQX09QVChwZ19jb2xsYXRp b24pOworCisKKyNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVs ZHMgc3RhcnQgaGVyZSAqLworCisJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCisJYWNsaXRlbQkJ dmFyYWNsWzFdIEJLSV9ERUZBVUxUKF9udWxsXyk7CisKKwkvKiBsaXN0IG9mIGV4cHJlc3Npb24g dHJlZXMgZm9yIHZhcmlhYmxlIGRlZmF1bHQgKE5VTEwgaWYgbm9uZSkgKi8KKwlwZ19ub2RlX3Ry ZWUgdmFyZGVmZXhwciBCS0lfREVGQVVMVChfbnVsbF8pOworCisjZW5kaWYKK30gRm9ybURhdGFf cGdfdmFyaWFibGU7CisKK3R5cGVkZWYgZW51bSBWYXJpYWJsZUVPWEFjdGlvbgoreworCVZBUklB QkxFX0VPWF9OT09QID0gJ24nLAkvKiBOT09QICovCisJVkFSSUFCTEVfRU9YX0RST1AgPSAnZCcs CS8qIE9OIENPTU1JVCBEUk9QICovCisJVkFSSUFCTEVfRU9YX1JFU0VUID0gJ3InLAkvKiBPTiBU UkFOU0FDVElPTiBFTkQgUkVTRVQgKi8KK30JCQlWYXJpYWJsZUVPWEFjdGlvbjsKKworLyogLS0t LS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfdmFyaWFibGUgY29ycmVzcG9uZHMgdG8gYSBwb2lu dGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfdmFyaWFibGUgcmVsYXRp b24uCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgRm9ybURhdGFfcGdfdmFyaWFi bGUgKkZvcm1fcGdfdmFyaWFibGU7CisKK0RFQ0xBUkVfVE9BU1QocGdfdmFyaWFibGUsIDkyMjMs IDkyMjQpOworCitERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3ZhcmlhYmxlX29pZF9pbmRl eCwgOTIyNSwgVmFyaWFibGVPaWRJbmRleElkLCBvbiBwZ192YXJpYWJsZSB1c2luZyBidHJlZShv aWQgb2lkX29wcykpOworI2RlZmluZSBWYXJpYWJsZU9iamVjdEluZGV4SWQgOTIyNQorCitERUNM QVJFX1VOSVFVRV9JTkRFWChwZ192YXJpYWJsZV92YXJuYW1lX25zcF9pbmRleCwgOTIyNiwgVmFy aWFibGVOYW1lTnNwSW5kZXhJZCwgb24gcGdfdmFyaWFibGUgdXNpbmcgYnRyZWUodmFybmFtZSBu YW1lX29wcywgdmFybmFtZXNwYWNlIG9pZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVOYW1lTnNw SW5kZXhJZCAgOTIyNgorCisvKgorICogVGhlIFZhcmlhYmxlIHN0cnVjdCBpcyBiYXNlZCBvbiBG b3JtRGF0YV9wZ192YXJpYWJsZSBzdHJ1Y3QuIFVubGlrZQorICogRm9ybURhdGFfcGdfdmFyaWFi bGUgaXQgY2FuIGhvbGQgbm9kZSBvZiBkZXNlcmlhbGl6ZWQgZXhwcmVzc2lvbiB1c2VkCisgKiBm b3IgY2FsY3VsYXRpb24gb2YgZGVmYXVsdCB2YWx1ZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgVmFy aWFibGUKK3sKKwlPaWQJCQlvaWQ7CisJT2lkCQkJdHlwaWQ7CisJWExvZ1JlY1B0cgljcmVhdGVf bHNuOworCWNoYXIJICAgKm5hbWU7CisJT2lkCQkJbmFtZXNwYWNlaWQ7CisJT2lkCQkJb3duZXI7 CisJaW50MzIJCXR5cG1vZDsKKwlib29sCQlpc19ub3RfbnVsbDsKKwlib29sCQlpc19pbW11dGFi bGU7CisJVmFyaWFibGVFT1hBY3Rpb24gZW94YWN0aW9uOworCU9pZAkJCWNvbGxhdGlvbjsKKwli b29sCQloYXNfZGVmZXhwcjsKKwlOb2RlCSAgICpkZWZleHByOworfSBWYXJpYWJsZTsKKworZXh0 ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJ CQkJCQkJQ3JlYXRlU2Vzc2lvblZhclN0bXQgKnN0bXQpOworZXh0ZXJuIHZvaWQgRHJvcFZhcmlh YmxlKE9pZCB2YXJpZCk7CitleHRlcm4gdm9pZCBJbml0VmFyaWFibGUoVmFyaWFibGUgKnZhciwg T2lkIHZhcmlkLCBib29sIGZhc3Rfb25seSk7CisKKyNlbmRpZgkJCQkJCQkvKiBQR19WQVJJQUJM RV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxl LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzQzZWUwNzBhNQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaApAQCAtMCwwICsxLDM0IEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzZXNzaW9udmFyaWFibGUuaAorICoJICBwcm90 b3R5cGVzIGZvciBzZXNzaW9udmFyaWFibGUuYy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkg b2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFi bGUuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgU0VTU0lPTlZBUklB QkxFX0gKKyNkZWZpbmUgU0VTU0lPTlZBUklBQkxFX0gKKworI2luY2x1ZGUgImNhdGFsb2cvb2Jq ZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRl ICJub2Rlcy9wYXJhbXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVk ZSAibm9kZXMvcGxhbm5vZGVzLmgiCisjaW5jbHVkZSAidGNvcC9jbWR0YWcuaCIKKyNpbmNsdWRl ICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCisKK2V4dGVybiB2b2lkIFNlc3Npb25WYXJpYWJs ZUNyZWF0ZVBvc3Rwcm9jZXNzKE9pZCB2YXJpZCwgY2hhciBlb3hhY3Rpb24pOworZXh0ZXJuIHZv aWQgU2Vzc2lvblZhcmlhYmxlRHJvcFBvc3Rwcm9jZXNzKE9pZCB2YXJpZCk7CisKK2V4dGVybiB2 b2lkIEF0UHJlRU9YYWN0X1Nlc3Npb25WYXJpYWJsZShib29sIGlzQ29tbWl0KTsKK2V4dGVybiB2 b2lkIEF0RU9TdWJYYWN0X1Nlc3Npb25WYXJpYWJsZShib29sIGlzQ29tbWl0LAorCQkJCQkJCQkJ CVN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKKwkJCQkJCQkJCQlTdWJUcmFuc2FjdGlvbklkIHBh cmVudFN1YmlkKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggY2M3YjMyYjI3 OS4uZWVjYmJkNzc2OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjEzMCw2ICsyMTMwLDcg QEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpFQ1RfVFNURU1QTEFURSwKIAlPQkpFQ1Rf VFlQRSwKIAlPQkpFQ1RfVVNFUl9NQVBQSU5HLAorCU9CSkVDVF9WQVJJQUJMRSwKIAlPQkpFQ1Rf VklFVwogfSBPYmplY3RUeXBlOwogCkBAIC0zMjUzLDYgKzMyNTQsMjUgQEAgdHlwZWRlZiBzdHJ1 Y3QgQWx0ZXJTdGF0c1N0bXQKIAlib29sCQltaXNzaW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiBz dGF0aXN0aWNzIG9iamVjdCBpcyBtaXNzaW5nICovCiB9IEFsdGVyU3RhdHNTdG10OwogCisKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQl7Q3JlYXRlfEFsdGVyfSBWQVJJQUJMRSBTdGF0 ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQ3Jl YXRlU2Vzc2lvblZhclN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnZhcmlh YmxlOwkJLyogdGhlIHZhcmlhYmxlIHRvIGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5cGVOYW1l OwkJLyogdGhlIHR5cGUgb2YgdmFyaWFibGUgKi8KKwlDb2xsYXRlQ2xhdXNlICpjb2xsQ2xhdXNl OworCU5vZGUJICAgKmRlZmV4cHI7CQkvKiBkZWZhdWx0IGV4cHJlc3Npb24gKi8KKwljaGFyCQll b3hhY3Rpb247CQkvKiBvbiBjb21taXQgYWN0aW9uICovCisJYm9vbAkJaWZfbm90X2V4aXN0czsJ LyogZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cyAqLworCWJvb2wJCWlzX25vdF9udWxs OwkvKiBEaXNhbGxvdyBudWxscyAqLworCWJvb2wJCWlzX2ltbXV0YWJsZTsJLyogRG9uJ3QgYWxs b3cgY2hhbmdlcyAqLworfSBDcmVhdGVTZXNzaW9uVmFyU3RtdDsKKworCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJQ3JlYXRlIEZ1bmN0aW9uIFN0YXRlbWVudAogICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGY1YjJlNjFjYTUuLjlmNzliOTAyNTEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQ2NCw2ICs0NjQsOCBAQCBQR19LRVlXT1JEKCJ2YWxpZGF0 b3IiLCBWQUxJREFUT1IsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInZhbHVlIiwgVkFMVUVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgidmFyY2hhciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFC RUwpCitQR19LRVlXT1JEKCJ2YXJpYWJsZSIsIFZBUklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJ2YXJpYWJsZXMiLCBWQVJJQUJMRVMsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZhcmlhZGljIiwgVkFSSUFESUMs IFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2YXJ5aW5nIiwgVkFS WUlORywgVU5SRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInZlcmJvc2Ui LCBWRVJCT1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmgKaW5kZXggZjU4OTExMmQ1ZS4uZWNjZGU4MzYyOCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2Vfbm9kZS5oCkBAIC04MSw2ICs4MSw3IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJLaW5kCiAJ RVhQUl9LSU5EX0NPUFlfV0hFUkUsCQkvKiBXSEVSRSBjb25kaXRpb24gaW4gQ09QWSBGUk9NICov CiAJRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU4sIC8qIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBm b3IgYSBjb2x1bW4gKi8KIAlFWFBSX0tJTkRfQ1lDTEVfTUFSSywJCS8qIGN5Y2xlIG1hcmsgdmFs dWUgKi8KKwlFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVCwJLyogZGVmYXVsdCB2YWx1ZSBmb3Ig c2Vzc2lvbiB2YXJpYWJsZSAqLwogfSBQYXJzZUV4cHJLaW5kOwogCiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0 LmgKaW5kZXggZTczOGFjMWMwOS4uMjU5YmRjOTk0ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKQEAg LTY4LDYgKzY4LDcgQEAgUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UUkFOU0ZPUk0sICJBTFRFUiBU UkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RS SUdHRVIsICJBTFRFUiBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENN RFRBR19BTFRFUl9UWVBFLCAiQUxURVIgVFlQRSIsIHRydWUsIHRydWUsIGZhbHNlKQogUEdfQ01E VEFHKENNRFRBR19BTFRFUl9VU0VSX01BUFBJTkcsICJBTFRFUiBVU0VSIE1BUFBJTkciLCB0cnVl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1ZBUklBQkxFLCAiQUxURVIg VkFSSUFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1ZJ RVcsICJBTFRFUiBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19B TkFMWVpFLCAiQU5BTFlaRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFH X0JFR0lOLCAiQkVHSU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpAQCAtMTIzLDYgKzEyNCw3IEBA IFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSQU5TRk9STSwgIkNSRUFURSBUUkFOU0ZPUk0iLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0NSRUFURV9UUklHR0VSLCAiQ1JF QVRFIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0NSRUFU RV9UWVBFLCAiQ1JFQVRFIFRZUEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01E VEFHX0NSRUFURV9VU0VSX01BUFBJTkcsICJDUkVBVEUgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVkFSSUFCTEUsICJDUkVBVEUgVkFS SUFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0NSRUFURV9WSUVX LCAiQ1JFQVRFIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RF QUxMT0NBVEUsICJERUFMTE9DQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhD TURUQUdfREVBTExPQ0FURV9BTEwsICJERUFMTE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCkBAIC0xNzUsNiArMTc3LDcgQEAgUEdfQ01EVEFHKENNRFRBR19EUk9QX1RSQU5TRk9STSwg IkRST1AgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19E Uk9QX1RSSUdHRVIsICJEUk9QIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURU QUcoQ01EVEFHX0RST1BfVFlQRSwgIkRST1AgVFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBH X0NNRFRBRyhDTURUQUdfRFJPUF9VU0VSX01BUFBJTkcsICJEUk9QIFVTRVIgTUFQUElORyIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9WQVJJQUJMRSwgIkRST1Ag VkFSSUFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RST1BfVklF VywgIkRST1AgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfRVhF Q1VURSwgIkVYRUNVVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19F WFBMQUlOLCAiRVhQTEFJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9hY2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY4ZTEy MzhmYTIuLjQyZTI4NmE3YWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCkBAIC0xNjksNiArMTY5LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgQXJyYXlUeXBlIEFjbDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNM X1VTQUdFfEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFD TF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2Rl ZmluZSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRQkJKEFDTF9TRUxFQ1R8QUNMX1VQREFURSkKIAog Lyogb3BlcmF0aW9uIGNvZGVzIGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGls cy9sc3lzY2FjaGUuaAppbmRleCA0ZjU0MThiOTcyLi4yODNkYjlmNzI1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaApAQCAtMTMyLDYgKzEzMiw3IEBAIGV4dGVybiBjaGFyIGdldF9mdW5jX3Byb2tpbmQo T2lkIGZ1bmNpZCk7CiBleHRlcm4gYm9vbCBnZXRfZnVuY19sZWFrcHJvb2YoT2lkIGZ1bmNpZCk7 CiBleHRlcm4gUmVnUHJvY2VkdXJlIGdldF9mdW5jX3N1cHBvcnQoT2lkIGZ1bmNpZCk7CiBleHRl cm4gT2lkCWdldF9yZWxuYW1lX3JlbGlkKGNvbnN0IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1l c3BhY2UpOworZXh0ZXJuIE9pZAlnZXRfdmFybmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1l LCBPaWQgdmFybmFtZXNwYWNlKTsKIGV4dGVybiBjaGFyICpnZXRfcmVsX25hbWUoT2lkIHJlbGlk KTsKIGV4dGVybiBPaWQJZ2V0X3JlbF9uYW1lc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJ Z2V0X3JlbF90eXBlX2lkKE9pZCByZWxpZCk7CkBAIC0yMDMsNiArMjA0LDE0IEBAIGV4dGVybiBj aGFyICpnZXRfcHVibGljYXRpb25fbmFtZShPaWQgcHViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBl eHRlcm4gT2lkCWdldF9zdWJzY3JpcHRpb25fb2lkKGNvbnN0IGNoYXIgKnN1Ym5hbWUsIGJvb2wg bWlzc2luZ19vayk7CiBleHRlcm4gY2hhciAqZ2V0X3N1YnNjcmlwdGlvbl9uYW1lKE9pZCBzdWJp ZCwgYm9vbCBtaXNzaW5nX29rKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9zZXNzaW9uX3ZhcmlhYmxl X25hbWUoT2lkIHZhcmlkKTsKK2V4dGVybiBPaWQJZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNw YWNlKE9pZCB2YXJpZCk7CitleHRlcm4gT2lkCWdldF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGUoT2lk IHZhcmlkKTsKK2V4dGVybiB2b2lkIGdldF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2Nv bGxpZChPaWQgdmFyaWQsCisJCQkJCQkJCQkJCQkJT2lkICp0eXBpZCwKKwkJCQkJCQkJCQkJCQlp bnQzMiAqdHlwbW9kLAorCQkJCQkJCQkJCQkJCU9pZCAqY29sbGlkKTsKKwogI2RlZmluZSB0eXBl X2lzX2FycmF5KHR5cGlkKSAgKGdldF9lbGVtZW50X3R5cGUodHlwaWQpICE9IEludmFsaWRPaWQp CiAvKiB0eXBlX2lzX2FycmF5X2RvbWFpbiBhY2NlcHRzIGJvdGggcGxhaW4gYXJyYXlzIGFuZCBk b21haW5zIG92ZXIgYXJyYXlzICovCiAjZGVmaW5lIHR5cGVfaXNfYXJyYXlfZG9tYWluKHR5cGlk KSAgKGdldF9iYXNlX2VsZW1lbnRfdHlwZSh0eXBpZCkgIT0gSW52YWxpZE9pZCkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9zeXNj YWNoZS5oCmluZGV4IDY3ZWE2ZTQ5NDUuLjYzM2M4NGM0ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApA QCAtMTEzLDkgKzExMywxMSBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVRZUEVOQU1FTlNQ LAogCVRZUEVPSUQsCiAJVVNFUk1BUFBJTkdPSUQsCi0JVVNFUk1BUFBJTkdVU0VSU0VSVkVSCisJ VVNFUk1BUFBJTkdVU0VSU0VSVkVSLAorCVZBUklBQkxFTkFNRU5TUCwKKwlWQVJJQUJMRU9JRAog Ci0jZGVmaW5lIFN5c0NhY2hlU2l6ZSAoVVNFUk1BUFBJTkdVU0VSU0VSVkVSICsgMSkKKyNkZWZp bmUgU3lzQ2FjaGVTaXplIChWQVJJQUJMRU9JRCArIDEpCiB9OwogCiBleHRlcm4gdm9pZCBJbml0 Q2F0YWxvZ0NhY2hlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApp bmRleCAyMTVlYjg5OWJlLi5kOTk1MzMyMTQwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29p ZGpvaW5zLm91dApAQCAtMjY2LDMgKzI2Niw3IEBAIE5PVElDRTogIGNoZWNraW5nIHBnX3N1YnNj cmlwdGlvbiB7c3ViZGJpZH0gPT4gcGdfZGF0YWJhc2Uge29pZH0KIE5PVElDRTogIGNoZWNraW5n IHBnX3N1YnNjcmlwdGlvbiB7c3Vib3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQogTk9USUNFOiAg Y2hlY2tpbmcgcGdfc3Vic2NyaXB0aW9uX3JlbCB7c3JzdWJpZH0gPT4gcGdfc3Vic2NyaXB0aW9u IHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19zdWJzY3JpcHRpb25fcmVsIHtzcnJlbGlkfSA9 PiBwZ19jbGFzcyB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfdmFyaWFibGUge3ZhcnR5cGV9 ID0+IHBnX3R5cGUge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3ZhcmlhYmxlIHt2YXJuYW1l c3BhY2V9ID0+IHBnX25hbWVzcGFjZSB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfdmFyaWFi bGUge3Zhcm93bmVyfSA9PiBwZ19hdXRoaWQge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3Zh cmlhYmxlIHt2YXJjb2xsYXRpb259ID0+IHBnX2NvbGxhdGlvbiB7b2lkfQpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCAwNmRhN2NkNDI4Li44YzFkZjRiMWZkIDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtNTAyLDYgKzUwMiw3IEBAIENyZWF0ZVJvbGVTdG10CiBDcmVhdGVTY2hl bWFTdG10CiBDcmVhdGVTY2hlbWFTdG10Q29udGV4dAogQ3JlYXRlU2VxU3RtdAorQ3JlYXRlU2Vz c2lvblZhclN0bXQKIENyZWF0ZVN0YXRzU3RtdAogQ3JlYXRlU3RtdAogQ3JlYXRlU3RtdENvbnRl eHQKQEAgLTgzMCw2ICs4MzEsNyBAQCBGb3JtRGF0YV9wZ190c19wYXJzZXIKIEZvcm1EYXRhX3Bn X3RzX3RlbXBsYXRlCiBGb3JtRGF0YV9wZ190eXBlCiBGb3JtRGF0YV9wZ191c2VyX21hcHBpbmcK K0Zvcm1EYXRhX3BnX3ZhcmlhYmxlCiBGb3JtX3BnX2FnZ3JlZ2F0ZQogRm9ybV9wZ19hbQogRm9y bV9wZ19hbW9wCkBAIC04ODgsNiArODkwLDcgQEAgRm9ybV9wZ190c19wYXJzZXIKIEZvcm1fcGdf dHNfdGVtcGxhdGUKIEZvcm1fcGdfdHlwZQogRm9ybV9wZ191c2VyX21hcHBpbmcKK0Zvcm1fcGdf dmFyaWFibGUKIEZvcm1hdE5vZGUKIEZyZWVCbG9ja051bWJlckFycmF5CiBGcmVlTGlzdERhdGEK QEAgLTI2NjQsNiArMjY2Nyw4IEBAIFN1cHBvcnRSZXF1ZXN0Um93cwogU3VwcG9ydFJlcXVlc3RT ZWxlY3Rpdml0eQogU3VwcG9ydFJlcXVlc3RTaW1wbGlmeQogU3VwcG9ydFJlcXVlc3RXRnVuY01v bm90b25pYworU1ZhcmlhYmxlWEFjdEFjdGlvbgorU1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW0KIFN5 bgogU3luY09wcwogU3luY1JlcENvbmZpZ0RhdGEKLS0gCjIuNDAuMQoK --00000000000044e15505fbdb2de8--