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 1nMeWU-0004ax-58 for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Feb 2022 23:24:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nMeWT-0006QK-1q for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Feb 2022 23:24:45 +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 1nMeWS-0006Pz-4S for pgsql-hackers@lists.postgresql.org; Tue, 22 Feb 2022 23:24:44 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nMeWJ-0000FJ-CC for pgsql-hackers@lists.postgresql.org; Tue, 22 Feb 2022 23:24:43 +0000 Received: by mail-ed1-x52a.google.com with SMTP id z22so40701145edd.1 for ; Tue, 22 Feb 2022 15:24:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language :from:to:cc:references:in-reply-to; bh=4mEs6s3bkSuzHR8ZNm82vNmRQflLIbQD9Ey7RkGCGcI=; b=Kd7gi3pXy3RDvmmB6/OdHAzLPQUPuPNxjmJH2HJSMIfREDQlrCA9fDUwAXoOLij4Oa pC+O5AgU8dSDMn7EebvOKwCrq9i8dSB1d7cm6TWNo0jnYzKGpVJHxtjj+Y1Oww1KXNdg qQcgzznPPEjmy6Nm1gwpzwyaUxdJBnFSABdud2ekJohoHEMvNAUhjofAO8j+s41e62Ul 8anAxPSFAbZpQm0cc7R73zW3H7MGHawUdyr7IOiR+bWfZJ6DAQTN4fpt9Ocrqw/NRpd3 waZ7OlGkBqzyCcVtSyt6mXOO8S9z7yaNt3eNKdhuvyjU2co8YnbIWBETTIGuh1/Mu/qG 5G+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:cc:references:in-reply-to; bh=4mEs6s3bkSuzHR8ZNm82vNmRQflLIbQD9Ey7RkGCGcI=; b=tuD0f9HGyuoHDsLCLwRLoMr9Zfe2oU9kpnyQJBRtuo70w7vYETvMkT5D2LS1uoNOhd 30fQPdgLzDENN0Q+czedDS/mLGevGw7sheXE3GF6H3cZIbEscbLBY8ypnfCVdi2oxHyC 3XonmDmgwwpJdtrzx869PW9n1j1qcT89ELanzccbkYRduYWYzdoLzRe09+vTNfImKUK7 usaJ4bBBwomreqYxO3bOxv/kQBHXkBxOLZTtmEB2FD+A1HhqQ87A5tVEqRHTvLjrHOwu SgqRWaltSdjxUzGT86njPNHAyvRYGn9ROX1xOrgYCPJ+kKgBX3W1bhO/m6HliuUSkGWL gRHw== X-Gm-Message-State: AOAM531akT4BamAC6DSW2G/BLROL61dUlPAvFQ9lIgAVA+kpso62jFWG j7+ZhAO0jOenG+hx6fe80SiJL7G4TqUEnb/0+v5hu58z7jaBH79ABG1GBGOV89FNFos1eq2lii7 qCzkdF6iRJ0iwg/MgS5In63E2GqpTZebsBbQG38Re/kueo7np1LBCgbVbyjeI/N7we26EVVRXqz RUS9wJ0kcUA8BXKHAGvqTDHDhZdyBNIWtbno16Vnzjbg+oB7RPNaR0 X-Google-Smtp-Source: ABdhPJxTzPMNafKm9XucHrUnPacGAqj1dpdiL4cOSyZkhmo14jehfEFVOpa085/V+VKmjIhUIJzJQA== X-Received: by 2002:a05:6402:2806:b0:412:9e3c:9820 with SMTP id h6-20020a056402280600b004129e3c9820mr28502188ede.320.1645572273025; Tue, 22 Feb 2022 15:24:33 -0800 (PST) Received: from [10.137.0.19] (ip-86-49-251-241.net.upcbroadband.cz. [86.49.251.241]) by smtp.gmail.com with ESMTPSA id ek21sm10025080edb.27.2022.02.22.15.24.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 22 Feb 2022 15:24:32 -0800 (PST) Content-Type: multipart/mixed; boundary="------------TtGkch0BTqDJuvrBUkFjDmWq" Message-ID: <9defb937-20a9-1d9f-6972-f1c4b4da4f73@enterprisedb.com> Date: Wed, 23 Feb 2022 00:24:30 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: logical decoding and replication of sequences Content-Language: en-US From: Tomas Vondra To: Peter Eisentraut , Petr Jelinek Cc: Amit Kapila , PostgreSQL Hackers References: <90b4e402-3f07-14f4-deca-5eaca31f70a3@enterprisedb.com> <22aef14d-0ea1-9044-c2e7-29f88762eaec@enterprisedb.com> <32540e16-fab6-f790-b99b-5a8fca8bde52@enterprisedb.com> <3B014BE4-EE61-4834-8FF6-937B43C46BC7@enterprisedb.com> <3d68b45a-ceb5-6824-3a39-f53411fd0c88@enterprisedb.com> <802f8b1b-a798-be52-c829-7f0fb9faafd5@enterprisedb.com> <983bf0c7-9757-fd13-3896-8452cf4c4c52@enterprisedb.com> <9211312a-6501-1caf-ee7b-c0d4814b6091@enterprisedb.com> <41ada110-bc7c-32a3-08bd-fb5023dd74ba@enterprisedb.com> <2eed0f76-3a1a-8b8b-ac1b-e0f9a0d98287@enterprisedb.com> In-Reply-To: X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------TtGkch0BTqDJuvrBUkFjDmWq Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Here's an updated version of the patch, fixing most of the issues from reviews so far. There's still a couple FIXME comments, but I think those are minor and/or straightforward to deal with. The main improvements: 1) Elimination of a lot of redundant code - one function handling tables, and an almost exact copy handling sequences. Now a single function handles both, possibly with "sequences" flag to tweak the behavior. 2) A couple other functions gained "sequences" flag, determining which objects are "interesting". For example PublicationAddSchemas needs to know whether it's FOR ALL SEQUENCES or FOR ALL TABLES IN SCHEMA. I don't think we can just use relkind here easily, because for tables we need to handle various types of tables (regular, partitioned, ...). 3) I also renamed a couple functions with "tables" in the name, which are now used for sequences too. So for example OpenTablesList() is renamed to OpenRelationList() and so on. 4) Addition of a number of regression tests to "publication.sql", which showed a lot of issues, mostly related to not distinguishing tables and sequences when handling "FOR ALL TABLES [IN SCHEMA]" and "FOR ALL SEQUENCES [IN SCHEMA]". 5) Proper tracking of FOR ALL [TABLES|SEQUENCES] IN SCHEMA in a catalog. The pg_publication_namespace gained a pnsequences flag, which determines which case it is. So for example if you do ALTER PUBLICATION p ADD ALL TABLES IN SCHEMA s; ALTER PUBLICATION p ADD ALL SEQUENCES IN SCHEMA s; there will be two rows in the catalog, one with 't' and one with 'f' in the new column. I'm not sure this is the best way to track this - maybe it'd be better to have two flags, and keep a single row. Or maybe we should have an array of relkinds (but that has the issue with tables having multiple relkinds mentioned before). Multiple rows make it more convenient to add/remove publication schemas - with a single row it'd be necessary to either insert a new row or update an existing one when adding the schema, and similarly for dropping it. But maybe there are reasons / precedent to design this differently ... 6) I'm not entirely sure the object_address changes (handling of the pnsequences flag) are correct. 7) This updates psql to do roughly the same thing as for tables, so \dRp now list sequences added either directly or through schema, so you might get footer like this: \dRp+ testpub_mix ... Tables: "public.testpub_tbl1" Tables from schemas: "pub_test" Sequences: "public.testpub_seq1" Sequences from schemas: "pub_test" Maybe it's a bit too verbose, though. It also addes "All sequences" and "Sequences" columns into the publication description, but I don't think that can be done much differently. FWIW I had to switch the describeOneTableDetails() chunk dealing with sequences from printQuery() to printTable() in order to handle dynamic footers. There's also a change in \dn+ because a schema may be included in one publication as "FOR ALL SEQUENCES IN SCHEMA" and in another publication with "FOR ALL TABLES IN SCHEMA". So I modified the output to \dn+ pub_test1 ... Publications: "testpub_schemas" (sequences) "testpub_schemas" (tables) But maybe it'd be better to aggregate this into a single line like \dn+ pub_test1 ... Publications: "testpub_schemas" (tables, sequences) Opinions? 8) There's a shortcoming in the current grammar, because you can specify either CREATE PUBLICATION p FOR ALL TABLES; or CREATE PUBLICATION p FOR ALL SEQUENCES; but it's not possible to do CREATE PUBLICATION p FOR ALL TABLES AND FOR ALL SEQUENCES; which seems like a fairly reasonable thing users might want to do. The problem is that "FOR ALL TABLES" (and same for sequences) is hard-coded in the grammar, not defined as PublicationObjSpec. This also means you can't do ALTER PUBLICATION p ADD ALL TABLES; AFAICS there are two ways to fix this - adding the combinations into the definition of CreatePublicationStmt, or adding FOR ALL TABLES (and sequences) to PublicationObjSpec. 9) Another grammar limitation is that we don't cross-check the relkind, so for example ALTER PUBLICATION p ADD TABLE sequence; might actually work. Should be easy to fix, though. 10) Added pg_dump support (including tests). I'll add more tests, to check more grammar combinations. 11) I need to test more grammar combinations in the TAP test too, to verify the output plugin interprets the stuff correctly. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------TtGkch0BTqDJuvrBUkFjDmWq Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-support-for-decoding-sequences-to-built-20220222.patch" Content-Disposition: attachment; filename*0="0001-Add-support-for-decoding-sequences-to-built-20220222.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2NmUzOGM3ZWY4MWIzYTI1ZGI0ZjkzZDhkODdmMGU3OGI0ZDFiYWI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxMCBGZWIgMjAyMiAxNToxODo1OSArMDEwMApTdWJq ZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBkZWNvZGluZyBzZXF1ZW5jZXMgdG8gYnVp bHQtaW4gcmVwbGljYXRpb24KCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAg ICAgICAgICAgICAgICAgIHwgIDgxICsrCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1Ymxp Y2F0aW9uLnNnbWwgICAgICAgfCAgMjQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vi c2NyaXB0aW9uLnNnbWwgICAgICB8ICAgMyArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHVibGljYXRpb24uc2dtbCAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2Jq ZWN0YWRkcmVzcy5jICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jICAgICAgICAgIHwgMjM2ICsrKystCiBzcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICAgIHwgMzgwICsrKysrLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8ICA3OSArKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgMjcyICsrKysrCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDQw ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICA1 MiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAx MTggKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAg fCAgNTYgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAg IHwgIDgyICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAg ICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMgICAgICAg ICAgICB8ICAgNiArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDY1ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAg ICAgICAgICAgIHwgIDM2ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAyOTIgKysrLS0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyAg ICAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdCAgICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uaCAgICAgICAgICB8ICAyNSArLQogLi4uL2NhdGFsb2cvcGdfcHVibGljYXRp b25fbmFtZXNwYWNlLmggICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICB8ICAxOSArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9wZ291dHB1dC5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtZXhlYy5jICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8IDk5OSArKysrKysrKysrKysrKy0tLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICB8ICAgOCAr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9vYmplY3RfYWRkcmVzcy5zcWwgICAgICAgfCAgIDEg LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICAgIHwgMjIw ICsrKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyOF9zZXF1ZW5jZXMucGwgICAgICB8 IDIwMyArKysrCiAzOCBmaWxlcyBjaGFuZ2VkLCAyOTg0IGluc2VydGlvbnMoKyksIDM4OCBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjhfc2VxdWVuY2VzLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA4Mzk4N2E5OTA0NS4u MzI0ZmMxMDUwZDMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02MjYzLDYgKzYyNjMsMTYgQEAg U0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3Jl cGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBSZWZlcmVuY2UgdG8gc2NoZW1h CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBuc2VxdWVuY2VzPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICBEZXRlcm1pbmVzIHdoZXRoZXIg dG8gaW5jbHVkZSB0YWJsZXMgb3Igc2VxdWVuY2VzIGZyb20gdGhpcyBzY2hlbWEuCisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSZWZlcmVuY2UgdG8gc2NoZW1hCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwv dGdyb3VwPgogICA8L3RhYmxlPgpAQCAtOTU2MCw2ICs5NTcwLDExIEBAIFNDUkFNLVNIQS0y NTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46 PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8ZW50cnk+cHJlcGFyZWQgdHJhbnNhY3Rpb25zPC9l bnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBs aW5rZW5kPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXNlcXVlbmNlcyI+PHN0cnVjdG5hbWU+cGdf cHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAg ICAgPGVudHJ5PnB1YmxpY2F0aW9ucyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBzZXF1ZW5jZXM8 L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaW5r IGxpbmtlbmQ9InZpZXctcGctcHVibGljYXRpb24tdGFibGVzIj48c3RydWN0bmFtZT5wZ19w dWJsaWNhdGlvbl90YWJsZXM8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8 ZW50cnk+cHVibGljYXRpb25zIGFuZCB0aGVpciBhc3NvY2lhdGVkIHRhYmxlczwvZW50cnk+ CkBAIC0xMTM5NSw2ICsxMTQxMCw3MiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExF RlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9InZpZXctcGctcHVibGljYXRpb24tc2VxdWVuY2VzIj4KKyAgPHRpdGxlPjxzdHJ1Y3Ru YW1lPnBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczwvc3RydWN0bmFtZT48L3RpdGxlPgorCisg IDxpbmRleHRlcm0gem9uZT0idmlldy1wZy1wdWJsaWNhdGlvbi1zZXF1ZW5jZXMiPgorICAg PHByaW1hcnk+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9wcmltYXJ5PgorICA8L2luZGV4 dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0 aW9uX3NlcXVlbmNlczwvc3RydWN0bmFtZT4gcHJvdmlkZXMKKyAgIGluZm9ybWF0aW9uIGFi b3V0IHRoZSBtYXBwaW5nIGJldHdlZW4gcHVibGljYXRpb25zIGFuZCB0aGUgc2VxdWVuY2Vz IHRoZXkKKyAgIGNvbnRhaW4uICBVbmxpa2UgdGhlIHVuZGVybHlpbmcgY2F0YWxvZworICAg PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wdWJsaWNhdGlvbi1yZWwiPjxzdHJ1Y3RuYW1l PnBnX3B1YmxpY2F0aW9uX3JlbDwvc3RydWN0bmFtZT48L2xpbms+LAorICAgdGhpcyB2aWV3 IGV4cGFuZHMKKyAgIHB1YmxpY2F0aW9ucyBkZWZpbmVkIGFzIDxsaXRlcmFsPkZPUiBBTEwg U0VRVUVOQ0VTPC9saXRlcmFsPiwgc28gZm9yIHN1Y2gKKyAgIHB1YmxpY2F0aW9ucyB0aGVy ZSB3aWxsIGJlIGEgcm93IGZvciBlYWNoIGVsaWdpYmxlIHNlcXVlbmNlLgorICA8L3BhcmE+ CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3Nl cXVlbmNlczwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9 IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERl c2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90 aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnB1Ym5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90 eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcHVi bGljYXRpb24iPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjwvbGlu az4uPHN0cnVjdGZpZWxkPnB1Ym5hbWU8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgcHVibGljYXRpb24KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2NoZW1hbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBl Pm5hbWU8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxv Zy1wZy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVzcGFjZTwvc3RydWN0bmFtZT48 L2xpbms+LjxzdHJ1Y3RmaWVsZD5uc3BuYW1lPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHNjaGVtYSBjb250YWluaW5nIHNl cXVlbmNlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnNlcXVlbmNlbmFt ZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMg PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8 L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+cmVsbmFtZTwvc3RydWN0ZmllbGQ+ KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiBzZXF1ZW5j ZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+Cisg ICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJ2aWV3 LXBnLXB1YmxpY2F0aW9uLXRhYmxlcyI+CiAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wdWJs aWNhdGlvbl90YWJsZXM8L3N0cnVjdG5hbWU+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDMyYjc1ZjZjNzhlLi4zNmM5YTVmNDM4 YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzEs NyArMzEsOSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogPHBocmFzZT53aGVyZSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBs YWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgWyBPTkxZIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICogXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KKyAgICBTRVFVRU5DRSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBd IFssIC4uLiBdCiAgICAgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NI RU1BIH0gWywgLi4uIF0KKyAgICBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VS UkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2 PgogCkBAIC01OCw3ICs2MCwxOCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICA8 L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUaGUgZm91cnRoIHZhcmlhbnQgb2YgdGhpcyBjb21t YW5kIGxpc3RlZCBpbiB0aGUgc3lub3BzaXMgY2FuIGNoYW5nZQorICAgVGhlIG5leHQgdGhy ZWUgdmFyaWFudHMgY2hhbmdlIHdoaWNoIHNlcXVlbmNlcyBhcmUgcGFydCBvZiB0aGUgcHVi bGljYXRpb24uCisgICBUaGUgPGxpdGVyYWw+U0VUIFNFUVVFTkNFPC9saXRlcmFsPiBjbGF1 c2Ugd2lsbCByZXBsYWNlIHRoZSBsaXN0IG9mIHNlcXVlbmNlcworICAgaW4gdGhlIHB1Ymxp Y2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBvbmUuICBUaGUgPGxpdGVyYWw+QUREIFNFUVVF TkNFPC9saXRlcmFsPgorICAgYW5kIDxsaXRlcmFsPkRST1AgU0VRVUVOQ0U8L2xpdGVyYWw+ IGNsYXVzZXMgd2lsbCBhZGQgYW5kIHJlbW92ZSBvbmUgb3IgbW9yZQorICAgc2VxdWVuY2Vz IGZyb20gdGhlIHB1YmxpY2F0aW9uLiAgTm90ZSB0aGF0IGFkZGluZyBzZXF1ZW5jZXMgdG8g YSBwdWJsaWNhdGlvbgorICAgdGhhdCBpcyBhbHJlYWR5IHN1YnNjcmliZWQgdG8gd2lsbCBy ZXF1aXJlIGEgPGxpdGVyYWw+QUxURVIgU1VCU0NSSVBUSU9OCisgICAuLi4gUkVGUkVTSCBQ VUJMSUNBVElPTjwvbGl0ZXJhbD4gYWN0aW9uIG9uIHRoZSBzdWJzY3JpYmluZyBzaWRlIGlu IG9yZGVyCisgICB0byBiZWNvbWUgZWZmZWN0aXZlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBUaGUgc2V2ZW50aCB2YXJpYW50IG9mIHRoaXMgY29tbWFuZCBsaXN0ZWQgaW4gdGhl IHN5bm9wc2lzIGNhbiBjaGFuZ2UKICAgIGFsbCBvZiB0aGUgcHVibGljYXRpb24gcHJvcGVy dGllcyBzcGVjaWZpZWQgaW4KICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNh dGlvbiIvPi4gIFByb3BlcnRpZXMgbm90IG1lbnRpb25lZCBpbiB0aGUKICAgIGNvbW1hbmQg cmV0YWluIHRoZWlyIHByZXZpb3VzIHNldHRpbmdzLgpAQCAtMTIyLDYgKzEzNSwxNSBAQCBB TFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBOYW1lIG9mIGFuIGV4aXN0aW5n IHNlcXVlbmNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAg IDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2Ny aXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21s CmluZGV4IDBkNmYwNjRmNThkLi4yNjRjOWM1YTEwZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0xNDcsNyArMTQ3LDcgQEAgQUxURVIgU1VC U0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gUkVOQU1FIFRPIDwKICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAg RmV0Y2ggbWlzc2luZyB0YWJsZSBpbmZvcm1hdGlvbiBmcm9tIHB1Ymxpc2hlci4gIFRoaXMg d2lsbCBzdGFydAotICAgICAgcmVwbGljYXRpb24gb2YgdGFibGVzIHRoYXQgd2VyZSBhZGRl ZCB0byB0aGUgc3Vic2NyaWJlZC10byBwdWJsaWNhdGlvbnMKKyAgICAgIHJlcGxpY2F0aW9u IG9mIHRhYmxlcyBhbmQgc2VxdWVuY2VzIHRoYXQgd2VyZSBhZGRlZCB0byB0aGUgc3Vic2Ny aWJlZC10byBwdWJsaWNhdGlvbnMKICAgICAgIHNpbmNlIDxjb21tYW5kPkNSRUFURSBTVUJT Q1JJUFRJT048L2NvbW1hbmQ+IG9yCiAgICAgICB0aGUgbGFzdCBpbnZvY2F0aW9uIG9mIDxj b21tYW5kPlJFRlJFU0ggUFVCTElDQVRJT048L2NvbW1hbmQ+LgogICAgICA8L3BhcmE+CkBA IC0xNjgsNiArMTY4LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgICAg IDxwYXJhPgogICAgICAgICAgIFByZXZpb3VzbHkgc3Vic2NyaWJlZCB0YWJsZXMgYXJlIG5v dCBjb3BpZWQsIGV2ZW4gaWYgYSB0YWJsZSdzIHJvdwogICAgICAgICAgIGZpbHRlciA8bGl0 ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGhhcyBzaW5jZSBiZWVuIG1vZGlmaWVkLgor ICAgICAgICAgIFByZXZpb3VzbHktc3Vic2NyaWJlZCBzZXF1ZW5jZXMgYXJlIG5vdCBjb3Bp ZWQgZWl0aGVyLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0 aW9uLnNnbWwKaW5kZXggNDk3OWI5YjY0NmQuLmY3MjMxOGU5N2RkIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTIzLDEzICsyMywxNiBAQCBQ b3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNpcz4KIENSRUFURSBQVUJMSUNBVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAg ICAgWyBGT1IgQUxMIFRBQkxFUworICAgICAgfCBGT1IgQUxMIFNFUVVFTkNFUwogICAgICAg fCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVj dDwvcmVwbGFjZWFibGU+IFssIC4uLiBdIF0KICAgICBbIFdJVEggKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4g Wz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5d IFssIC4uLiBdICkgXQogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9w aHJhc2U+CiAKICAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgV0hFUkUgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBb LCAuLi4gXQorICAgIFNFUVVFTkNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z ZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uIF0KICAgICBBTEwgVEFC TEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFf bmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQorICAgIEFM TCBTRVFVRU5DRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBd CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9v YmplY3RhZGRyZXNzLmMKaW5kZXggZjMwYzc0MmQ0OGYuLjMwMWVlYjdjYWNhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtMTk3NiwxMCArMTk3NiwxMSBAQCBn ZXRfb2JqZWN0X2FkZHJlc3NfcHVibGljYXRpb25fc2NoZW1hKExpc3QgKm9iamVjdCwgYm9v bCBtaXNzaW5nX29rKQogCiAJLyogRmluZCB0aGUgcHVibGljYXRpb24gc2NoZW1hIG1hcHBp bmcgaW4gc3lzY2FjaGUgKi8KIAlhZGRyZXNzLm9iamVjdElkID0KLQkJR2V0U3lzQ2FjaGVP aWQyKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCQlHZXRTeXNDYWNoZU9pZDMoUFVCTElD QVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFj ZV9vaWQsCiAJCQkJCQlPYmplY3RJZEdldERhdHVtKHNjaGVtYWlkKSwKLQkJCQkJCU9iamVj dElkR2V0RGF0dW0ocHViLT5vaWQpKTsKKwkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViLT5v aWQpLAorCQkJCQkJQm9vbEdldERhdHVtKGZhbHNlKSk7CS8qIEZJWE1FICovCiAJaWYgKCFP aWRJc1ZhbGlkKGFkZHJlc3Mub2JqZWN0SWQpICYmICFtaXNzaW5nX29rKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggMjU5OThmYmIzOWIuLmQ4NjZl OGE5YjIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC01NCw3 ICs1NCw4IEBAIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihSZWxhdGlvbiB0YXJn ZXRyZWwpCiB7CiAJLyogTXVzdCBiZSBhIHJlZ3VsYXIgb3IgcGFydGl0aW9uZWQgdGFibGUg Ki8KIAlpZiAoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lO RF9SRUxBVElPTiAmJgotCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCAh PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0 cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFICYmCisJCVJlbGF0 aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCiAJCQkJIGVycm1zZygiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVzXCIgdG8g cHVibGljYXRpb24iLApAQCAtMTMxLDcgKzEzMiw4IEBAIHN0YXRpYyBib29sCiBpc19wdWJs aXNoYWJsZV9jbGFzcyhPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCiB7CiAJ cmV0dXJuIChyZWx0dXBsZS0+cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8Ci0JCQly ZWx0dXBsZS0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAmJgorCQkJ cmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fAorCQkJ cmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkgJiYKIAkJIUlzQ2F0YWxv Z1JlbGF0aW9uT2lkKHJlbGlkKSAmJgogCQlyZWx0dXBsZS0+cmVscGVyc2lzdGVuY2UgPT0g UkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UICYmCiAJCXJlbGlkID49IEZpcnN0Tm9ybWFsT2Jq ZWN0SWQ7CkBAIC0yMDUsNyArMjA3LDcgQEAgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBw dWJpZCkKIAkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CiAKIAlzY2FuID0gc3lzdGFi bGVfYmVnaW5zY2FuKHB1YnNjaHNyZWwsCi0JCQkJCQkJICBQdWJsaWNhdGlvbk5hbWVzcGFj ZVBubnNwaWRQbnB1YmlkSW5kZXhJZCwKKwkJCQkJCQkgIFB1YmxpY2F0aW9uTmFtZXNwYWNl UG5uc3BpZFBucHViaWRTZXFJbmRleElkLAogCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJnNj YW5rZXkpOwogCXR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CiAJcmVzdWx0ID0gSGVh cFR1cGxlSXNWYWxpZCh0dXApOwpAQCAtNDE5LDcgKzQyMSw3IEBAIHB1YmxpY2F0aW9uX2Fk ZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogICogSW5z ZXJ0IG5ldyBwdWJsaWNhdGlvbiAvIHNjaGVtYSBtYXBwaW5nLgogICovCiBPYmplY3RBZGRy ZXNzCi1wdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBi b29sIGlmX25vdF9leGlzdHMpCitwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwg T2lkIHNjaGVtYWlkLCBib29sIHNlcXVlbmNlcywgYm9vbCBpZl9ub3RfZXhpc3RzKQogewog CVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVwOwpAQCAtNDM4LDkgKzQ0MCwxMCBAQCBw dWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlm X25vdF9leGlzdHMpCiAJICogZHVwbGljYXRlcywgaXQncyBoZXJlIGp1c3QgdG8gcHJvdmlk ZSBuaWNlciBlcnJvciBtZXNzYWdlIGluIGNvbW1vbgogCSAqIGNhc2UuIFRoZSByZWFsIHBy b3RlY3Rpb24gaXMgdGhlIHVuaXF1ZSBrZXkgb24gdGhlIGNhdGFsb2cuCiAJICovCi0JaWYg KFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwKKwlpZiAo U2VhcmNoU3lzQ2FjaGVFeGlzdHMzKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJ CSAgT2JqZWN0SWRHZXREYXR1bShzY2hlbWFpZCksCi0JCQkJCQkJICBPYmplY3RJZEdldERh dHVtKHB1YmlkKSkpCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSwKKwkJCQkJ CQkgIEJvb2xHZXREYXR1bShzZXF1ZW5jZXMpKSkKIAl7CiAJCXRhYmxlX2Nsb3NlKHJlbCwg Um93RXhjbHVzaXZlTG9jayk7CiAKQEAgLTQ2Niw2ICs0NjksOCBAQCBwdWJsaWNhdGlvbl9h ZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMp CiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZV9wbm5zcGlkIC0gMV0gPQogCQlPYmplY3RJZEdldERhdHVtKHNjaGVt YWlkKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5zZXF1ZW5j ZXMgLSAxXSA9CisJCUJvb2xHZXREYXR1bShzZXF1ZW5jZXMpOwogCiAJdHVwID0gaGVhcF9m b3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7CiAKQEAg LTQ5Miw2ICs0OTcsNyBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lk IHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJICogcGFydGl0aW9ucy4KIAkgKi8K IAlzY2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoc2NoZW1haWQs CisJCQkJCQkJCQkJCSAgIHNlcXVlbmNlcywKIAkJCQkJCQkJCQkJICAgUFVCTElDQVRJT05f UEFSVF9BTEwpOwogCUludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMoc2NoZW1hUmVscyk7CiAK QEAgLTUyNSwxMSArNTMxLDE0IEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxp ZCkKIC8qCiAgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBmb3IgYSBwdWJsaWNhdGlv bi4KICAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1YmxpY2F0 aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTCi0gKiBzaG91bGQgdXNlIEdldEFsbFRhYmxlc1B1 YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9S IFRBQkxFIC8gRk9SIFNFUVVFTkNFIHB1YmxpY2F0aW9ucywgdGhlIEZPUgorICogQUxMIFRB QkxFUyAvIFNFUVVFTkNFUyBzaG91bGQgdXNlIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVs YXRpb25zKCkKKyAqIGFuZCBHZXRBbGxTZXF1ZW5jZXNQdWJsaWNhdGlvblJlbGF0aW9ucygp LgorICoKKyAqIFhYWCBJdCdzIGEgYml0IHdlaXJkIHRoZSBwdWJfcGFydG9wdCBkb2VzIG5v dCByZWFsbHkgbWF0dGVyIGZvciBzZXF1ZW5jZXMuCiAgKi8KIExpc3QgKgotR2V0UHVibGlj YXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRv cHQpCitHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGJvb2wgc2VxdWVuY2Vz LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiB7CiAJTGlzdAkgICAqcmVzdWx0 OwogCVJlbGF0aW9uCXB1YnJlbHNyZWw7CkBAIC01NTEsMTEgKzU2MCwyMSBAQCBHZXRQdWJs aWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCkKIAlyZXN1bHQgPSBOSUw7CiAJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0g c3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCiAJeworCQljaGFyCXJlbGtpbmQ7CiAJCUZvcm1f cGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKIAogCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJs aWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwotCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRp b25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKLQkJCQkJCQkJCQkJCXB1 YnJlbC0+cHJyZWxpZCk7CisJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocHVicmVsLT5w cnJlbGlkKTsKKworCQkvKgorCQkgKiBIYW5kbGUgdGFibGVzIGFuZCBzZXF1ZW5jZXMsIGRl cGVuZGluZyBvbiB0aGUgY29tYmluYXRpb24gb2YgcmVsa2luZAorCQkgKiBhbmQgc2VxdWVu Y2VzIGZsYWcuIElmIHRoZXJlJ3MgYSBtaXNtYXRjaCwgd2UgaWdub3JlIHRoZSByZWxhdGlv bi4KKwkJICovCisJCWlmIChzZXF1ZW5jZXMgJiYgKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFV RU5DRSkpCisJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YnJlbC0+cHJyZWxp ZCk7CisJCWVsc2UgaWYgKCFzZXF1ZW5jZXMgJiYgKHJlbGtpbmQgIT0gUkVMS0lORF9TRVFV RU5DRSkpCisJCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVz dWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwogCX0K IAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC02MDUsNiArNjI0LDQzIEBAIEdldEFs bFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisg KiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgcHVibGljYXRpb25zIG1hcmtl ZCBhcyBGT1IgQUxMIFNFUVVFTkNFUy4KKyAqLworTGlzdCAqCitHZXRBbGxTZXF1ZW5jZXNQ dWJsaWNhdGlvbnModm9pZCkKK3sKKwlMaXN0CSAgICpyZXN1bHQ7CisJUmVsYXRpb24JcmVs OworCVNjYW5LZXlEYXRhIHNjYW5rZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVw bGUJdHVwOworCisJLyogRmluZCBhbGwgcHVibGljYXRpb25zIHRoYXQgYXJlIG1hcmtlZCBh cyBmb3IgYWxsIHRhYmxlcy4gKi8KKwlyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVs YXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZzY2Fua2V5LAor CQkJCUFudW1fcGdfcHVibGljYXRpb25fcHViYWxsc2VxdWVuY2VzLAorCQkJCUJURXF1YWxT dHJhdGVneU51bWJlciwgRl9CT09MRVEsCisJCQkJQm9vbEdldERhdHVtKHRydWUpKTsKKwor CXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBJbnZhbGlkT2lkLCBmYWxzZSwKKwkJ CQkJCQkgIE5VTEwsIDEsICZzY2Fua2V5KTsKKworCXJlc3VsdCA9IE5JTDsKKwl3aGlsZSAo SGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJ CU9pZAkJCW9pZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCkpLT5v aWQ7CisKKwkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBvaWQpOworCX0KKworCXN5 c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBhbGwg cmVsYXRpb24gcHVibGlzaGVkIGJ5IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uKHMpLgog ICoKQEAgLTY3MSwyOCArNzI3LDM2IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRp b25zKGJvb2wgcHVidmlhcm9vdCkKIC8qCiAgKiBHZXRzIHRoZSBsaXN0IG9mIHNjaGVtYSBv aWRzIGZvciBhIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNl ZCBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb25zLgorICogVGhpcyBzaG91 bGQgb25seSBiZSB1c2VkIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBhbmQgRk9SIEFMTCBT RVFVRU5DRVMKKyAqIHB1YmxpY2F0aW9ucy4KKyAqCisgKiAnc2VxdWVuY2VzJyBkZXRlcm1p bmVzIHdoZXRoZXIgdG8gZ2V0IEZPUiBUQUJMRSBvciBGT1IgU0VRVUVOQ0VTIHNjaGVtYXMK ICAqLwogTGlzdCAqCi1HZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKQorR2V0UHVi bGljYXRpb25TY2hlbWFzKE9pZCBwdWJpZCwgYm9vbCBzZXF1ZW5jZXMpCiB7CiAJTGlzdAkg ICAqcmVzdWx0ID0gTklMOwogCVJlbGF0aW9uCXB1YnNjaHNyZWw7Ci0JU2NhbktleURhdGEg c2NhbmtleTsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5WzJdOwogCVN5c1NjYW5EZXNjIHNjYW47 CiAJSGVhcFR1cGxlCXR1cDsKIAogCS8qIEZpbmQgYWxsIHNjaGVtYXMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBwdWJsaWNhdGlvbiAqLwogCXB1YnNjaHNyZWwgPSB0YWJsZV9vcGVuKFB1Ymxp Y2F0aW9uTmFtZXNwYWNlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAotCVNjYW5L ZXlJbml0KCZzY2Fua2V5LAorCVNjYW5LZXlJbml0KCZzY2Fua2V5WzBdLAogCQkJCUFudW1f cGdfcHVibGljYXRpb25fbmFtZXNwYWNlX3BucHViaWQsCiAJCQkJQlRFcXVhbFN0cmF0ZWd5 TnVtYmVyLCBGX09JREVRLAogCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKIAorCVNj YW5LZXlJbml0KCZzY2Fua2V5WzFdLAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fbmFtZXNw YWNlX3Buc2VxdWVuY2VzLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9CT09MRVEs CisJCQkJQm9vbEdldERhdHVtKHNlcXVlbmNlcykpOworCiAJc2NhbiA9IHN5c3RhYmxlX2Jl Z2luc2NhbihwdWJzY2hzcmVsLAotCQkJCQkJCSAgUHVibGljYXRpb25OYW1lc3BhY2VQbm5z cGlkUG5wdWJpZEluZGV4SWQsCi0JCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAmc2NhbmtleSk7 CisJCQkJCQkJICBQdWJsaWNhdGlvbk5hbWVzcGFjZVBubnNwaWRQbnB1YmlkU2VxSW5kZXhJ ZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDIsIHNjYW5rZXkpOwogCXdoaWxlIChIZWFwVHVw bGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQogCXsKIAkJRm9ybV9w Z19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcHVic2NoOwpAQCAtNzEwLDYgKzc3NCw5IEBAIEdl dFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpCiAKIC8qCiAgKiBHZXRzIHRoZSBsaXN0 IG9mIHB1YmxpY2F0aW9uIG9pZHMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWVkIHNjaGVt YS4KKyAqCisgKiBYWFggcHJvYmFibHkgc2hvdWxkIGhhbmRsZSBwbnNlcXVlbmNlcyBzb21l aG93LCBlaXRoZXIgYnkgdGFraW5nIGEKKyAqIHBhcmFtZXRlciBvciByZXR1cm5pbmcgdGhl IGZsYWcsIHNvbWVob3cKICAqLwogTGlzdCAqCiBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lk IHNjaGVtYWlkKQpAQCAtNzM4LDcgKzgwNSw4IEBAIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhP aWQgc2NoZW1haWQpCiAgKiBHZXQgdGhlIGxpc3Qgb2YgcHVibGlzaGFibGUgcmVsYXRpb24g b2lkcyBmb3IgYSBzcGVjaWZpZWQgc2NoZW1hLgogICovCiBMaXN0ICoKLUdldFNjaGVtYVB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KQorR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlk LCBib29sIHNlcXVlbmNlcywKKwkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCkKIHsKIAlSZWxhdGlvbgljbGFzc1JlbDsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CkBA IC03NjMsMTEgKzgzMSwxOSBAQCBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQg c2NoZW1haWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAkJT2lkCQkJcmVs aWQgPSByZWxGb3JtLT5vaWQ7CiAJCWNoYXIJCXJlbGtpbmQ7CiAKKwkJLyogRklYTUUgbmVl ZCB0byBkaWZmZXJlbnRpYXRlIHRhYmxlcyBhbmQgc2VxdWVuY2VzICovCiAJCWlmICghaXNf cHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pKQogCQkJY29udGludWU7CiAKIAkJ cmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7Ci0JCWlmIChyZWxraW5kID09IFJF TEtJTkRfUkVMQVRJT04pCisKKwkJLyogRmlsdGVyIGJ5IHJlbGtpbmQgZGVwZW5kaW5nIG9u IEZPUiBBTEwgVEFCTEVTIC8gU0VRVUVOQ0VTICovCisJCWlmICgoc2VxdWVuY2VzICYmIHJl bGtpbmQgIT0gUkVMS0lORF9TRVFVRU5DRSkgfHwKKwkJCSghc2VxdWVuY2VzICYmIHJlbGtp bmQgPT0gUkVMS0lORF9TRVFVRU5DRSkpCisJCQljb250aW51ZTsKKworCQlpZiAoKHJlbGtp bmQgPT0gUkVMS0lORF9SRUxBVElPTikgfHwKKwkJCShyZWxraW5kID09IFJFTEtJTkRfU0VR VUVOQ0UpKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCWVs c2UgaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJewpAQCAt NzkyLDEzICs4NjgsMTQgQEAgR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNj aGVtYWlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAKIC8qCiAgKiBHZXRz IHRoZSBsaXN0IG9mIGFsbCByZWxhdGlvbnMgcHVibGlzaGVkIGJ5IEZPUiBBTEwgVEFCTEVT IElOIFNDSEVNQQotICogcHVibGljYXRpb24uCisgKiBvciBGT1IgQUxMIFNFUVVFTkNFUyBJ TiBTQ0hFTUEgcHVibGljYXRpb24uCiAgKi8KIExpc3QgKgotR2V0QWxsU2NoZW1hUHVibGlj YXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRv cHQpCitHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGJvb2wg c2VxdWVuY2VzLAorCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQog ewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKLQlMaXN0CSAgICpwdWJzY2hlbWFsaXN0ID0g R2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkKTsKKwlMaXN0CSAgICpwdWJzY2hlbWFsaXN0 ID0gR2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkLCBzZXF1ZW5jZXMpOwogCUxpc3RDZWxs ICAgKmNlbGw7CiAKIAlmb3JlYWNoKGNlbGwsIHB1YnNjaGVtYWxpc3QpCkBAIC04MDYsMTMg Kzg4Myw1NCBAQCBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAkJT2lkCQkJc2NoZW1haWQgPSBs Zmlyc3Rfb2lkKGNlbGwpOwogCQlMaXN0CSAgICpzY2hlbWFSZWxzID0gTklMOwogCi0JCXNj aGVtYVJlbHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhzY2hlbWFpZCwgcHVi X3BhcnRvcHQpOworCQlzY2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlv bnMoc2NoZW1haWQsIHNlcXVlbmNlcywKKwkJCQkJCQkJCQkJCSAgIHB1Yl9wYXJ0b3B0KTsK IAkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsKIAl9CiAKIAly ZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogR2V0cyBsaXN0IG9mIGFsbCByZWxhdGlvbiBw dWJsaXNoZWQgYnkgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24ocykuCisgKgorICogSWYg dGhlIHB1YmxpY2F0aW9uIHB1Ymxpc2hlcyBwYXJ0aXRpb24gY2hhbmdlcyB2aWEgdGhlaXIg cmVzcGVjdGl2ZSByb290CisgKiBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgZXhjbHVk ZSBwYXJ0aXRpb25zIGluIGZhdm9yIG9mIGluY2x1ZGluZyB0aGUKKyAqIHJvb3QgcGFydGl0 aW9uZWQgdGFibGVzLgorICovCitMaXN0ICoKK0dldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9u UmVsYXRpb25zKHZvaWQpCit7CisJUmVsYXRpb24JY2xhc3NSZWw7CisJU2NhbktleURhdGEg a2V5WzFdOworCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVwbGU7CisJTGlz dAkgICAqcmVzdWx0ID0gTklMOworCisJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9u UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZrZXlbMF0s CisJCQkJQW51bV9wZ19jbGFzc19yZWxraW5kLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJl ciwgRl9DSEFSRVEsCisJCQkJQ2hhckdldERhdHVtKFJFTEtJTkRfU0VRVUVOQ0UpKTsKKwor CXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhjbGFzc1JlbCwgMSwga2V5KTsKKwor CXdoaWxlICgodHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rp b24pKSAhPSBOVUxMKQorCXsKKwkJRm9ybV9wZ19jbGFzcyByZWxGb3JtID0gKEZvcm1fcGdf Y2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7CisJCU9pZAkJCXJlbGlkID0gcmVsRm9ybS0+b2lk OworCisJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkpCisJCQly ZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKKwl9CisKKwl0YWJsZV9lbmRz Y2FuKHNjYW4pOworCisJdGFibGVfY2xvc2UoY2xhc3NSZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEdldCBwdWJsaWNhdGlvbiB1c2luZyBv aWQKICAqCkBAIC04MzUsMTAgKzk1MywxMiBAQCBHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQp CiAJcHViLT5vaWQgPSBwdWJpZDsKIAlwdWItPm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIocHVi Zm9ybS0+cHVibmFtZSkpOwogCXB1Yi0+YWxsdGFibGVzID0gcHViZm9ybS0+cHViYWxsdGFi bGVzOworCXB1Yi0+YWxsc2VxdWVuY2VzID0gcHViZm9ybS0+cHViYWxsc2VxdWVuY2VzOwog CXB1Yi0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBwdWJmb3JtLT5wdWJpbnNlcnQ7CiAJcHVi LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSA9IHB1YmZvcm0tPnB1YnVwZGF0ZTsKIAlwdWItPnB1 YmFjdGlvbnMucHViZGVsZXRlID0gcHViZm9ybS0+cHViZGVsZXRlOwogCXB1Yi0+cHViYWN0 aW9ucy5wdWJ0cnVuY2F0ZSA9IHB1YmZvcm0tPnB1YnRydW5jYXRlOworCXB1Yi0+cHViYWN0 aW9ucy5wdWJzZXF1ZW5jZSA9IHB1YmZvcm0tPnB1YnNlcXVlbmNlOwogCXB1Yi0+cHVidmlh cm9vdCA9IHB1YmZvcm0tPnB1YnZpYXJvb3Q7CiAKIAlSZWxlYXNlU3lzQ2FjaGUodHVwKTsK QEAgLTk0OSwxMCArMTA2OSwxMiBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQkJCSAgICpzY2hlbWFyZWxpZHM7CiAKIAkJCXJlbGlkcyA9IEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLT5vaWQsCisJCQkJCQkJCQkJCSBm YWxzZSwgLyogdGFibGVzIG9ubHkgKi8KIAkJCQkJCQkJCQkJIHB1YmxpY2F0aW9uLT5wdWJ2 aWFyb290ID8KIAkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CiAJCQkJCQkJ CQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwogCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxs U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRpb24tPm9pZCwKKwkJCQkJCQkJ CQkJCQkJCWZhbHNlLCAvKiB0YWJsZXMgb25seSAqLwogCQkJCQkJCQkJCQkJCQkJcHVibGlj YXRpb24tPnB1YnZpYXJvb3QgPwogCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9S T09UIDoKIAkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CkBAIC05ODgs MyArMTExMCw3MSBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CiB9CisKKy8qCisgKiBSZXR1cm5z IE9pZHMgb2Ygc2VxdWVuY2VzIGluIGEgcHVibGljYXRpb24uCisgKi8KK0RhdHVtCitwZ19n ZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJRnVuY0Nh bGxDb250ZXh0ICpmdW5jY3R4OworCWNoYXIJICAgKnB1Ym5hbWUgPSB0ZXh0X3RvX2NzdHJp bmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCVB1YmxpY2F0aW9uICpwdWJsaWNhdGlvbjsK KwlMaXN0CSAgICpzZXF1ZW5jZXM7CisKKwkvKiBzdHVmZiBkb25lIG9ubHkgb24gdGhlIGZp cnN0IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJaWYgKFNSRl9JU19GSVJTVENBTEwoKSkK Kwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCQkvKiBjcmVhdGUgYSBmdW5j dGlvbiBjb250ZXh0IGZvciBjcm9zcy1jYWxsIHBlcnNpc3RlbmNlICovCisJCWZ1bmNjdHgg PSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKKworCQkvKiBzd2l0Y2ggdG8gbWVtb3J5IGNvbnRl eHQgYXBwcm9wcmlhdGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9uIGNhbGxzICovCisJCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1v cnlfY3R4KTsKKworCQlwdWJsaWNhdGlvbiA9IEdldFB1YmxpY2F0aW9uQnlOYW1lKHB1Ym5h bWUsIGZhbHNlKTsKKworCQkvKgorCQkgKiBQdWJsaWNhdGlvbnMgc3VwcG9ydCBwYXJ0aXRp b25lZCB0YWJsZXMsIGFsdGhvdWdoIGFsbCBjaGFuZ2VzIGFyZQorCQkgKiByZXBsaWNhdGVk IHVzaW5nIGxlYWYgcGFydGl0aW9uIGlkZW50aXR5IGFuZCBzY2hlbWEsIHNvIHdlIG9ubHkK KwkJICogbmVlZCB0aG9zZS4KKwkJICovCisJCWlmIChwdWJsaWNhdGlvbi0+YWxsc2VxdWVu Y2VzKQorCQkJc2VxdWVuY2VzID0gR2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlv bnMoKTsKKwkJZWxzZQorCQl7CisJCQlMaXN0CSAgICpyZWxpZHMsCisJCQkJCSAgICpzY2hl bWFyZWxpZHM7CisKKwkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Ymxp Y2F0aW9uLT5vaWQsCisJCQkJCQkJCQkJCSB0cnVlLCAvKiBzZXF1ZW5jZXMgKi8KKwkJCQkJ CQkJCQkJIHB1YmxpY2F0aW9uLT5wdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJIFBVQkxJQ0FU SU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwor CQkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHVi bGljYXRpb24tPm9pZCwKKwkJCQkJCQkJCQkJCQkJCXRydWUsIC8qIHNlcXVlbmNlcyBvbmx5 ICovCisJCQkJCQkJCQkJCQkJCQlwdWJsaWNhdGlvbi0+cHVidmlhcm9vdCA/CisJCQkJCQkJ CQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkJUFVCTElD QVRJT05fUEFSVF9MRUFGKTsKKwkJCXNlcXVlbmNlcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9v aWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOworCQl9CisKKwkJZnVuY2N0eC0+dXNlcl9mY3R4 ID0gKHZvaWQgKikgc2VxdWVuY2VzOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKKwl9CisKKwkvKiBzdHVmZiBkb25lIG9uIGV2ZXJ5IGNhbGwgb2YgdGhlIGZ1 bmN0aW9uICovCisJZnVuY2N0eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7CisJc2VxdWVuY2Vz ID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxf Y250ciA8IGxpc3RfbGVuZ3RoKHNlcXVlbmNlcykpCisJeworCQlPaWQJCQlyZWxpZCA9IGxp c3RfbnRoX29pZChzZXF1ZW5jZXMsIGZ1bmNjdHgtPmNhbGxfY250cik7CisKKwkJU1JGX1JF VFVSTl9ORVhUKGZ1bmNjdHgsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKKwl9CisKKwlT UkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKaW5kZXggM2NiNjliMWY4N2IuLjA3MmNmYjI2NTVhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0zNzQsNiArMzc0LDE2IEBAIENSRUFURSBW SUVXIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBBUwogICAgICAgICAgcGdfY2xhc3MgQyBKT0lO IHBnX25hbWVzcGFjZSBOIE9OIChOLm9pZCA9IEMucmVsbmFtZXNwYWNlKQogICAgIFdIRVJF IEMub2lkID0gR1BULnJlbGlkOwogCitDUkVBVEUgVklFVyBwZ19wdWJsaWNhdGlvbl9zZXF1 ZW5jZXMgQVMKKyAgICBTRUxFQ1QKKyAgICAgICAgUC5wdWJuYW1lIEFTIHB1Ym5hbWUsCisg ICAgICAgIE4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAorICAgICAgICBDLnJlbG5hbWUgQVMg c2VxdWVuY2VuYW1lCisgICAgRlJPTSBwZ19wdWJsaWNhdGlvbiBQLAorICAgICAgICAgTEFU RVJBTCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFAucHVibmFtZSkgR1BTLAorICAg ICAgICAgcGdfY2xhc3MgQyBKT0lOIHBnX25hbWVzcGFjZSBOIE9OIChOLm9pZCA9IEMucmVs bmFtZXNwYWNlKQorICAgIFdIRVJFIEMub2lkID0gR1BTLnJlbGlkOworCiBDUkVBVEUgVklF VyBwZ19sb2NrcyBBUwogICAgIFNFTEVDVCAqIEZST00gcGdfbG9ja19zdGF0dXMoKSBBUyBM OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDE2Yjg2 NjFhMWI3Li5kYjc4ZGM4NjY0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5o IgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv cmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nl c3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgpAQCAtNjcsMTUgKzY4 LDE2IEBAIHR5cGVkZWYgc3RydWN0IHJmX2NvbnRleHQKIH0gcmZfY29udGV4dDsKIAogc3Rh dGljIExpc3QgKk9wZW5SZWxJZExpc3QoTGlzdCAqcmVsaWRzKTsKLXN0YXRpYyBMaXN0ICpP cGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcyk7Ci1zdGF0aWMgdm9pZCBDbG9zZVRhYmxlTGlz dChMaXN0ICpyZWxzKTsKK3N0YXRpYyBMaXN0ICpPcGVuUmVsYXRpb25MaXN0KExpc3QgKnJl bHMpOworc3RhdGljIHZvaWQgQ2xvc2VSZWxhdGlvbkxpc3QoTGlzdCAqcmVscyk7CiBzdGF0 aWMgdm9pZCBMb2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKLXN0YXRpYyB2b2lk IFB1YmxpY2F0aW9uQWRkVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9u b3RfZXhpc3RzLAorc3RhdGljIHZvaWQgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1 YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCiAJCQkJCQkJCSBBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJs ZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOwotc3RhdGljIHZv aWQgUHVibGljYXRpb25BZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9v bCBpZl9ub3RfZXhpc3RzLAotCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 KTsKLXN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0 ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2spOworc3RhdGljIHZvaWQgUHVibGljYXRpb25E cm9wUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsK K3N0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNj aGVtYXMsIGJvb2wgc2VxdWVuY2VzLAorCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywg QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOworc3RhdGljIHZvaWQgUHVibGljYXRpb25E cm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgc2VxdWVuY2VzLCBi b29sIG1pc3Npbmdfb2spOworCiAKIHN0YXRpYyB2b2lkCiBwYXJzZV9wdWJsaWNhdGlvbl9v cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKQEAgLTk1LDYgKzk3LDcgQEAgcGFyc2VfcHVi bGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJcHViYWN0aW9ucy0+cHVi dXBkYXRlID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJkZWxldGUgPSB0cnVlOwogCXB1YmFj dGlvbnMtPnB1YnRydW5jYXRlID0gdHJ1ZTsKKwlwdWJhY3Rpb25zLT5wdWJzZXF1ZW5jZSA9 IHRydWU7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2U7CiAKIAkvKiBQ YXJzZSBvcHRpb25zICovCkBAIC0xMTksNiArMTIyLDcgQEAgcGFyc2VfcHVibGljYXRpb25f b3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUg PSBmYWxzZTsKIAkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IGZhbHNlOwogCQkJcHViYWN0 aW9ucy0+cHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJCXB1YmFjdGlvbnMtPnB1YnNlcXVlbmNl ID0gZmFsc2U7CiAKIAkJCSpwdWJsaXNoX2dpdmVuID0gdHJ1ZTsKIAkJCXB1Ymxpc2ggPSBk ZWZHZXRTdHJpbmcoZGVmZWwpOwpAQCAtMTQxLDYgKzE0NSw4IEBAIHBhcnNlX3B1YmxpY2F0 aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQlwdWJhY3Rpb25zLT5wdWJk ZWxldGUgPSB0cnVlOwogCQkJCWVsc2UgaWYgKHN0cmNtcChwdWJsaXNoX29wdCwgInRydW5j YXRlIikgPT0gMCkKIAkJCQkJcHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOworCQkJ CWVsc2UgaWYgKHN0cmNtcChwdWJsaXNoX29wdCwgInNlcXVlbmNlIikgPT0gMCkKKwkJCQkJ cHViYWN0aW9ucy0+cHVic2VxdWVuY2UgPSB0cnVlOwogCQkJCWVsc2UKIAkJCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0x NjcsNyArMTczLDkgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAgKi8KIHN0YXRpYyB2b2lkCiBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhM aXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKLQkJCQkJCSAgIExp c3QgKipyZWxzLCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAgIExpc3QgKip0YWJsZXMsIExp c3QgKipzZXF1ZW5jZXMsCisJCQkJCQkgICBMaXN0ICoqdGFibGVzX3NjaGVtYXMsIExpc3Qg KipzZXF1ZW5jZXNfc2NoZW1hcywKKwkJCQkJCSAgIExpc3QgKipzY2hlbWFzKQogewogCUxp c3RDZWxsICAgKmNlbGw7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJvYmo7CkBAIC0xODUs MTIgKzE5MywyMyBAQCBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpz cGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJc3dpdGNoIChwdWJvYmotPnB1Ym9i anR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEU6Ci0JCQkJKnJlbHMg PSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQkqdGFibGVzID0gbGFw cGVuZCgqdGFibGVzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQlicmVhazsKKwkJCWNhc2Ug UFVCTElDQVRJT05PQkpfU0VRVUVOQ0U6CisJCQkJKnNlcXVlbmNlcyA9IGxhcHBlbmQoKnNl cXVlbmNlcywgcHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJ Q0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6CiAJCQkJc2NoZW1haWQgPSBnZXRfbmFtZXNw YWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsKIAogCQkJCS8qIEZpbHRlciBvdXQgZHVw bGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KKwkJCQkqdGFibGVz X3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCp0YWJsZXNfc2NoZW1hcywgc2No ZW1haWQpOworCQkJCSpzY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2NoZW1h cywgc2NoZW1haWQpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9TRVFV RU5DRVNfSU5fU0NIRU1BOgorCQkJCXNjaGVtYWlkID0gZ2V0X25hbWVzcGFjZV9vaWQocHVi b2JqLT5uYW1lLCBmYWxzZSk7CisKKwkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYg dXNlciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICovCisJCQkJKnNlcXVlbmNlc19zY2hlbWFz ID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2VxdWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlk KTsKIAkJCQkqc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNj aGVtYWlkKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lO X0NVUl9TQ0hFTUE6CkBAIC0yMDQsNiArMjIzLDIxIEBAIE9iamVjdHNJblB1YmxpY2F0aW9u VG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CWxpc3RfZnJlZShzZWFyY2hfcGF0aCk7CiAKIAkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0 ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICovCisJCQkJKnRhYmxlc19zY2hl bWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqdGFibGVzX3NjaGVtYXMsIHNjaGVtYWlk KTsKKwkJCQkqc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNj aGVtYWlkKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VT X0lOX0NVUl9TQ0hFTUE6CisJCQkJc2VhcmNoX3BhdGggPSBmZXRjaF9zZWFyY2hfcGF0aChm YWxzZSk7CisJCQkJaWYgKHNlYXJjaF9wYXRoID09IE5JTCkgLyogbm90aGluZyB2YWxpZCBp biBzZWFyY2hfcGF0aD8gKi8KKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCisJCQkJCQkJZXJybXNnKCJubyBzY2hlbWEg aGFzIGJlZW4gc2VsZWN0ZWQgZm9yIENVUlJFTlRfU0NIRU1BIikpOworCisJCQkJc2NoZW1h aWQgPSBsaW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOworCQkJCWxpc3RfZnJlZShzZWFyY2hf cGF0aCk7CisKKwkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZp ZXMgInNjaDEsIHNjaDEiICovCisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0gbGlzdF9hcHBl bmRfdW5pcXVlX29pZCgqc2VxdWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQkqc2No ZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKIAkJ CQlicmVhazsKIAkJCWRlZmF1bHQ6CkBAIC0yNDAsNiArMjc0LDE0IEBAIENoZWNrT2JqU2No ZW1hTm90QWxyZWFkeUluUHVibGljYXRpb24oTGlzdCAqcmVscywgTGlzdCAqc2NoZW1haWRs aXN0LAogCQkJCQkJZXJyZGV0YWlsKCJUYWJsZSBcIiVzXCIgaW4gc2NoZW1hIFwiJXNcIiBp cyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uLCBhZGRpbmcgdGhlIHNhbWUgc2No ZW1hIGlzIG5vdCBzdXBwb3J0ZWQuIiwKIAkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpLAogCQkJCQkJCQkgIGdldF9uYW1lc3BhY2VfbmFtZShyZWxTY2hlbWFJZCkp KTsKKwkJCWVsc2UgaWYgKGNoZWNrb2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9TRVFVRU5D RVNfSU5fU0NIRU1BKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJjYW5ub3QgYWRk IHNjaGVtYSBcIiVzXCIgdG8gcHVibGljYXRpb24iLAorCQkJCQkJCSAgIGdldF9uYW1lc3Bh Y2VfbmFtZShyZWxTY2hlbWFJZCkpLAorCQkJCQkJZXJyZGV0YWlsKCJTRXF1ZW5jZSBcIiVz XCIgaW4gc2NoZW1hIFwiJXNcIiBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9u LCBhZGRpbmcgdGhlIHNhbWUgc2NoZW1hIGlzIG5vdCBzdXBwb3J0ZWQuIiwKKwkJCQkJCQkJ ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkgIGdldF9uYW1lc3Bh Y2VfbmFtZShyZWxTY2hlbWFJZCkpKTsKIAkJCWVsc2UgaWYgKGNoZWNrb2JqdHlwZSA9PSBQ VUJMSUNBVElPTk9CSl9UQUJMRSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTI0OCw2ICsyOTAsMTQg QEAgQ2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihMaXN0ICpyZWxzLCBM aXN0ICpzY2hlbWFpZGxpc3QsCiAJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSksCiAJCQkJCQllcnJkZXRhaWwoIlRhYmxlJ3Mgc2NoZW1hIFwiJXNcIiBpcyBhbHJl YWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9yIHBhcnQgb2YgdGhlIHNwZWNpZmllZCBz Y2hlbWEgbGlzdC4iLAogCQkJCQkJCQkgIGdldF9uYW1lc3BhY2VfbmFtZShyZWxTY2hlbWFJ ZCkpKTsKKwkJCWVsc2UgaWYgKGNoZWNrb2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9TRVFV RU5DRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiY2Fubm90IGFkZCByZWxhdGlv biBcIiVzLiVzXCIgdG8gcHVibGljYXRpb24iLAorCQkJCQkJCSAgIGdldF9uYW1lc3BhY2Vf bmFtZShyZWxTY2hlbWFJZCksCisJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSksCisJCQkJCQllcnJkZXRhaWwoIlNlcXVlbmNlJ3Mgc2NoZW1hIFwiJXNcIiBpcyBh bHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9yIHBhcnQgb2YgdGhlIHNwZWNpZmll ZCBzY2hlbWEgbGlzdC4iLAorCQkJCQkJCQkgIGdldF9uYW1lc3BhY2VfbmFtZShyZWxTY2hl bWFJZCkpKTsKIAkJfQogCX0KIH0KQEAgLTYyNSw3ICs2NzUsMTAgQEAgQ3JlYXRlUHVibGlj YXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW47CiAJYm9vbAkJcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKLQlMaXN0 CSAgICpyZWxhdGlvbnMgPSBOSUw7CisJTGlzdAkgICAqdGFibGVzID0gTklMOworCUxpc3QJ ICAgKnNlcXVlbmNlcyA9IE5JTDsKKwlMaXN0CSAgICp0YWJsZXNfc2NoZW1haWRsaXN0ID0g TklMOworCUxpc3QJICAgKnNlcXVlbmNlc19zY2hlbWFpZGxpc3QgPSBOSUw7CiAJTGlzdAkg ICAqc2NoZW1haWRsaXN0ID0gTklMOwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxl Z2Ugb24gZGF0YWJhc2UgKi8KQEAgLTY3Miw2ICs3MjUsOCBAQCBDcmVhdGVQdWJsaWNhdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0o cHVib2lkKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAx XSA9CiAJCUJvb2xHZXREYXR1bShzdG10LT5mb3JfYWxsX3RhYmxlcyk7CisJdmFsdWVzW0Fu dW1fcGdfcHVibGljYXRpb25fcHViYWxsc2VxdWVuY2VzIC0gMV0gPQorCQlCb29sR2V0RGF0 dW0oc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0 aW9uX3B1Ymluc2VydCAtIDFdID0KIAkJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViaW5z ZXJ0KTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ1cGRhdGUgLSAxXSA9CkBA IC02ODAsNiArNzM1LDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUJvb2xHZXREYXR1bShwdWJhY3Rp b25zLnB1YmRlbGV0ZSk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNh dGUgLSAxXSA9CiAJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnRydW5jYXRlKTsKKwl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJzZXF1ZW5jZSAtIDFdID0KKwkJQm9vbEdl dERhdHVtKHB1YmFjdGlvbnMucHVic2VxdWVuY2UpOwogCXZhbHVlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3B1YnZpYXJvb3QgLSAxXSA9CiAJCUJvb2xHZXREYXR1bShwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCk7CiAKQEAgLTcwNCwzOCArNzYxLDYyIEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQog CX0KIAllbHNlCiAJewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJv YmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9P aWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwKKwkJCQkJCQkJICAgJnRhYmxlcywgJnNl cXVlbmNlcywKKwkJCQkJCQkJICAgJnRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCSAg ICZzZXF1ZW5jZXNfc2NoZW1haWRsaXN0LAogCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsK IAogCQkvKiBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICov Ci0JCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3QpID4gMCAmJiAhc3VwZXJ1c2VyKCkp CisJCWlmIChsaXN0X2xlbmd0aCh0YWJsZXNfc2NoZW1haWRsaXN0KSA+IDAgJiYgIXN1cGVy dXNlcigpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VG RklDSUVOVF9QUklWSUxFR0UpLAogCQkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRv IGNyZWF0ZSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb24iKSk7CiAKLQkJ aWYgKGxpc3RfbGVuZ3RoKHJlbGF0aW9ucykgPiAwKQorCQlpZiAobGlzdF9sZW5ndGgodGFi bGVzKSA+IDApCiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFi bGVMaXN0KHJlbGF0aW9ucyk7Ci0JCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1Ymxp Y2F0aW9uKHJlbHMsIHNjaGVtYWlkbGlzdCwKKwkJCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0 KHRhYmxlcyk7CisJCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJl bHMsIHRhYmxlc19zY2hlbWFpZGxpc3QsCiAJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OT0JK X1RBQkxFKTsKIAogCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+ cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsK IAotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsK LQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMo cHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMp OwogCQl9CiAKLQkJaWYgKGxpc3RfbGVuZ3RoKHNjaGVtYWlkbGlzdCkgPiAwKQorCQlpZiAo bGlzdF9sZW5ndGgoc2VxdWVuY2VzKSA+IDApCisJCXsKKwkJCUxpc3QJICAgKnJlbHM7CisK KwkJCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHNlcXVlbmNlcyk7CisJCQlDaGVja09ialNj aGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNlcXVlbmNlc19zY2hlbWFpZGxp c3QsCisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFKTsKKwkJCVB1Ymxp Y2F0aW9uQWRkUmVsYXRpb25zKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCQlDbG9z ZVJlbGF0aW9uTGlzdChyZWxzKTsKKwkJfQorCisJCWlmIChsaXN0X2xlbmd0aCh0YWJsZXNf c2NoZW1haWRsaXN0KSA+IDApCiAJCXsKIAkJCS8qCiAJCQkgKiBTY2hlbWEgbG9jayBpcyBo ZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHRvIHByZXZlbnQKIAkJCSAq IGNvbmN1cnJlbnQgc2NoZW1hIGRlbGV0aW9uLgogCQkJICovCi0JCQlMb2NrU2NoZW1hTGlz dChzY2hlbWFpZGxpc3QpOwotCQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1Ym9pZCwgc2No ZW1haWRsaXN0LCB0cnVlLCBOVUxMKTsKKwkJCUxvY2tTY2hlbWFMaXN0KHRhYmxlc19zY2hl bWFpZGxpc3QpOworCQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1Ym9pZCwgdGFibGVzX3Nj aGVtYWlkbGlzdCwgZmFsc2UsIHRydWUsIE5VTEwpOworCQl9CisKKwkJaWYgKGxpc3RfbGVu Z3RoKHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpID4gMCkKKwkJeworCQkJLyoKKwkJCSAqIFNj aGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8g cHJldmVudAorCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCisJCQkgKi8KKwkJ CUxvY2tTY2hlbWFMaXN0KHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpOworCQkJUHVibGljYXRp b25BZGRTY2hlbWFzKHB1Ym9pZCwgc2VxdWVuY2VzX3NjaGVtYWlkbGlzdCwgdHJ1ZSwgdHJ1 ZSwgTlVMTCk7CiAJCX0KIAl9CiAKQEAgLTc5Nyw3ICs4NzgsNyBAQCBBbHRlclB1YmxpY2F0 aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAogCQlMb2NrRGF0YWJhc2VPYmplY3QoUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJm b3JtLT5vaWQsIDAsCiAJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCi0JCXJvb3RfcmVs aWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQlyb290X3Jl bGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwgZmFsc2UsCiAJ CQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCBy b290X3JlbGlkcykKQEAgLTg1Niw2ICs5MzcsOSBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9u cyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCiAJ CXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPSBCb29sR2V0 RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CiAJCXJlcGxhY2VzW0FudW1fcGdfcHVi bGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IHRydWU7CisKKwkJdmFsdWVzW0FudW1fcGdf cHVibGljYXRpb25fcHVic2VxdWVuY2UgLSAxXSA9IEJvb2xHZXREYXR1bShwdWJhY3Rpb25z LnB1YnNlcXVlbmNlKTsKKwkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJzZXF1 ZW5jZSAtIDFdID0gdHJ1ZTsKIAl9CiAKIAlpZiAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3RfZ2l2ZW4pCkBAIC04NzUsNyArOTU5LDcgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAlwdWJm b3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCiAJLyogSW52 YWxpZGF0ZSB0aGUgcmVsY2FjaGUuICovCi0JaWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykK KwlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQkvKiBGSVhNRSBwcm9iYWJseSBuZWVkcyB0 byBoYW5kbGUgcHViYWxsc2VxdWVuY2VzIHRvbz8gKi8KIAl7CiAJCUNhY2hlSW52YWxpZGF0 ZVJlbGNhY2hlQWxsKCk7CiAJfQpAQCAtODkwLDcgKzk3NCw3IEBAIEFsdGVyUHVibGljYXRp b25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsCiAJCSAqIHRyZWVzLCBub3QganVzdCB0aG9zZSBleHBsaWNpdGx5IG1lbnRpb25lZCBp biB0aGUgcHVibGljYXRpb24uCiAJCSAqLwogCQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQot CQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJ cmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLCBmYWxzZSwK IAkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAkJZWxzZQogCQl7CkBAIC05 MDQsNyArOTg4LDE3IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJCQkJCWxmaXJz dF9vaWQobGMpKTsKIAkJfQogCi0JCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1Ymxp Y2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJLyogdGFibGVzICovCisJCXNjaGVt YXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9p ZCwgZmFsc2UsCisJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJcmVs aWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChyZWxpZHMsIHNjaGVtYXJlbGlkcyk7CisK KwkJLyogc2VxdWVuY2VzICovCisJCXJlbGlkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQo cmVsaWRzLAorCQkJCQkJCQkJCUdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9p ZCwKKwkJCQkJCQkJCQl0cnVlLCBQVUJMSUNBVElPTl9QQVJUX0FMTCkpOworCisJCXNjaGVt YXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9p ZCwgdHJ1ZSwKIAkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQlyZWxp ZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHJlbGlkcywgc2NoZW1hcmVsaWRzKTsKIApA QCAtOTUxLDYgKzEwNDUsMTEgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAlGb3JtX3BnX3B1YmxpY2F0aW9u IHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CiAJT2lk CQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKKwkvKgorCSAqIEZJWE1FIERvIHdlIG5lZWQg dG8gdGVzdCByZWxraW5kIG9mIHRoZSByZWxhdGlvbnM/IE90aGVyd2lzZSB3ZQorCSAqIGNh biBkbyAiQUREIFRBQkxFIHNlcXVlbmNlIiBhbmQgaXQnbGwgIndvcmsiLgorCSAqLworCiAJ LyoKIAkgKiBOb3RoaW5nIHRvIGRvIGlmIG5vIG9iamVjdHMsIGV4Y2VwdCBpbiBTRVQ6IGZv ciB0aGF0IGl0IGlzIHF1aXRlCiAJICogcG9zc2libGUgdGhhdCB1c2VyIGhhcyBub3Qgc3Bl Y2lmaWVkIGFueSB0YWJsZXMgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkCkBAIC05NTksNyArMTA1 OCw3IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsIEhlYXBUdXBsZSB0dXAsCiAJaWYgKCF0YWJsZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQ X1NldE9iamVjdHMpCiAJCXJldHVybjsKIAotCXJlbHMgPSBPcGVuVGFibGVMaXN0KHRhYmxl cyk7CisJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QodGFibGVzKTsKIAogCWlmIChzdG10LT5h Y3Rpb24gPT0gQVBfQWRkT2JqZWN0cykKIAl7CkBAIC05NjksMTkgKzEwNjgsMTkgQEAgQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1 cGxlIHR1cCwKIAkJICogQ2hlY2sgaWYgdGhlIHJlbGF0aW9uIGlzIG1lbWJlciBvZiB0aGUg ZXhpc3Rpbmcgc2NoZW1hIGluIHRoZQogCQkgKiBwdWJsaWNhdGlvbiBvciBtZW1iZXIgb2Yg dGhlIHNjaGVtYSBsaXN0IHNwZWNpZmllZC4KIAkJICovCi0JCXNjaGVtYXMgPSBsaXN0X2Nv bmNhdF9jb3B5KHNjaGVtYWlkbGlzdCwgR2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkKSk7 CisJCXNjaGVtYXMgPSBsaXN0X2NvbmNhdF9jb3B5KHNjaGVtYWlkbGlzdCwgR2V0UHVibGlj YXRpb25TY2hlbWFzKHB1YmlkLCBmYWxzZSkpOwogCQlDaGVja09ialNjaGVtYU5vdEFscmVh ZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNjaGVtYXMsCiAJCQkJCQkJCQkJCSAgUFVCTElDQVRJ T05PQkpfVEFCTEUpOwogCiAJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBxdWVy eVN0cmluZywgcHViZm9ybS0+cHVidmlhcm9vdCk7CiAKLQkJUHVibGljYXRpb25BZGRUYWJs ZXMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRSZWxhdGlv bnMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKIAl9CiAJZWxzZSBpZiAoc3RtdC0+YWN0 aW9uID09IEFQX0Ryb3BPYmplY3RzKQotCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQs IHJlbHMsIGZhbHNlKTsKKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCByZWxz LCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7Ci0JCUxpc3QJ ICAgKm9sZHJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQlMaXN0 CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwgZmFsc2Us CiAJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAJCUxpc3QJICAgKmRl bHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxjOwpAQCAtMTA1NCw2ICsxMTUzLDEw IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs IEhlYXBUdXBsZSB0dXAsCiAJCQkgKi8KIAkJCWlmICghZm91bmQpCiAJCQl7CisJCQkJLyog ZG9uJ3QgZHJvcCBzZXF1ZW5jZXMgKG5vdCBpbiBsaXN0IG9mIHRhYmxlcykgKi8KKwkJCQlp ZiAoZ2V0X3JlbF9yZWxraW5kKG9sZHJlbGlkKSA9PSBSRUxLSU5EX1NFUVVFTkNFKQorCQkJ CQljb250aW51ZTsKKwogCQkJCW9sZHJlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25S ZWxJbmZvKSk7CiAJCQkJb2xkcmVsLT53aGVyZUNsYXVzZSA9IE5VTEw7CiAJCQkJb2xkcmVs LT5yZWxhdGlvbiA9IHRhYmxlX29wZW4ob2xkcmVsaWQsCkBAIC0xMDYzLDE4ICsxMTY2LDE4 IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs IEhlYXBUdXBsZSB0dXAsCiAJCX0KIAogCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwotCQlQdWJs aWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIGRlbHJlbHMsIHRydWUpOworCQlQdWJsaWNhdGlv bkRyb3BSZWxhdGlvbnMocHViaWQsIGRlbHJlbHMsIHRydWUpOwogCiAJCS8qCiAJCSAqIERv bid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSds bCBjYXRjaCBhbmQKIAkJICogc2tpcCBleGlzdGluZyBvbmVzIHdoZW4gZG9pbmcgY2F0YWxv ZyB1cGRhdGUuCiAJCSAqLwotCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywg dHJ1ZSwgc3RtdCk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1YmlkLCByZWxzLCB0 cnVlLCBzdG10KTsKIAotCQlDbG9zZVRhYmxlTGlzdChkZWxyZWxzKTsKKwkJQ2xvc2VSZWxh dGlvbkxpc3QoZGVscmVscyk7CiAJfQogCi0JQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJQ2xv c2VSZWxhdGlvbkxpc3QocmVscyk7CiB9CiAKIC8qCkBAIC0xMDg0LDcgKzExODcsOCBAQCBB bHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFw VHVwbGUgdHVwLAogICovCiBzdGF0aWMgdm9pZAogQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCi0JCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0 ICpzY2hlbWFpZGxpc3QpCisJCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFpZGxp c3QsCisJCQkJCQlib29sIHNlcXVlbmNlcykKIHsKIAlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1 YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CiAKQEAgLTEx MDYsMjAgKzEyMTAsMjAgQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsCiAJCUxpc3QJICAgKnJlbHM7CiAJCUxpc3QJICAgKnJlbG9pZHM7 CiAKLQkJcmVsb2lkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwg UFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJcmVsb2lkcyA9IEdldFB1YmxpY2F0aW9uUmVs YXRpb25zKHB1YmZvcm0tPm9pZCwgc2VxdWVuY2VzLCBQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OwogCQlyZWxzID0gT3BlblJlbElkTGlzdChyZWxvaWRzKTsKIAogCQlDaGVja09ialNjaGVt YU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNjaGVtYWlkbGlzdCwKIAkJCQkJCQkJ CQkJICBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BKTsKIAotCQlDbG9zZVRhYmxl TGlzdChyZWxzKTsKLQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2No ZW1haWRsaXN0LCBmYWxzZSwgc3RtdCk7CisJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwor CQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHViZm9ybS0+b2lkLCBzY2hlbWFpZGxpc3QsIHNl cXVlbmNlcywgZmFsc2UsIHN0bXQpOwogCX0KIAllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0g QVBfRHJvcE9iamVjdHMpCi0JCVB1YmxpY2F0aW9uRHJvcFNjaGVtYXMocHViZm9ybS0+b2lk LCBzY2hlbWFpZGxpc3QsIGZhbHNlKTsKKwkJUHVibGljYXRpb25Ecm9wU2NoZW1hcyhwdWJm b3JtLT5vaWQsIHNjaGVtYWlkbGlzdCwgc2VxdWVuY2VzLCBmYWxzZSk7CiAJZWxzZQkJCQkJ CS8qIEFQX1NldE9iamVjdHMgKi8KIAl7Ci0JCUxpc3QJICAgKm9sZHNjaGVtYWlkcyA9IEdl dFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJmb3JtLT5vaWQpOworCQlMaXN0CSAgICpvbGRzY2hl bWFpZHMgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViZm9ybS0+b2lkLCBzZXF1ZW5jZXMp OwogCQlMaXN0CSAgICpkZWxzY2hlbWFzID0gTklMOwogCiAJCS8qIElkZW50aWZ5IHdoaWNo IHNjaGVtYXMgc2hvdWxkIGJlIGRyb3BwZWQgKi8KQEAgLTExMzIsMTMgKzEyMzYsMTMgQEAg QWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJ CUxvY2tTY2hlbWFMaXN0KGRlbHNjaGVtYXMpOwogCiAJCS8qIEFuZCBkcm9wIHRoZW0gKi8K LQkJUHVibGljYXRpb25Ecm9wU2NoZW1hcyhwdWJmb3JtLT5vaWQsIGRlbHNjaGVtYXMsIHRy dWUpOworCQlQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKHB1YmZvcm0tPm9pZCwgZGVsc2NoZW1h cywgc2VxdWVuY2VzLCB0cnVlKTsKIAogCQkvKgogCQkgKiBEb24ndCBib3RoZXIgY2FsY3Vs YXRpbmcgdGhlIGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCiAJCSAq IHNraXAgZXhpc3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgogCQkgKi8K LQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRsaXN0LCB0 cnVlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2No ZW1haWRsaXN0LCBzZXF1ZW5jZXMsIHRydWUsIHN0bXQpOwogCX0KIH0KIApAQCAtMTE0OCwx MiArMTI1MiwxMyBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwKICAqLwogc3RhdGljIHZvaWQKIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKLQkJCQkJICBMaXN0 ICp0YWJsZXMsIExpc3QgKnNjaGVtYWlkbGlzdCkKKwkJCQkJICBMaXN0ICp0YWJsZXMsIExp c3QgKnRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCSAgTGlzdCAqc2VxdWVuY2VzLCBMaXN0 ICpzZXF1ZW5jZXNfc2NoZW1haWRsaXN0KQogewogCUZvcm1fcGdfcHVibGljYXRpb24gcHVi Zm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAogCWlmICgo c3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMgfHwgc3RtdC0+YWN0aW9uID09IEFQX1Nl dE9iamVjdHMpICYmCi0JCXNjaGVtYWlkbGlzdCAmJiAhc3VwZXJ1c2VyKCkpCisJCSh0YWJs ZXNfc2NoZW1haWRsaXN0IHx8IHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpICYmICFzdXBlcnVz ZXIoKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAogCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGFk ZCBvciBzZXQgc2NoZW1hcyIpKSk7CkBAIC0xMTYyLDEzICsxMjY3LDI0IEBAIENoZWNrQWx0 ZXJQdWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1 cCwKIAkgKiBDaGVjayB0aGF0IHVzZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVsYXRlIHRoZSBw dWJsaWNhdGlvbiB0YWJsZXMgaW4KIAkgKiBzY2hlbWEKIAkgKi8KLQlpZiAoc2NoZW1haWRs aXN0ICYmIHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKKwlpZiAodGFibGVzX3NjaGVtYWlkbGlz dCAmJiBwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJ IGVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJM RVMiLAogCQkJCQkJTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCiAJCQkJIGVycmRldGFp bCgiVGFibGVzIGZyb20gc2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9t LCBvciBzZXQgb24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLiIpKSk7CiAKKwkvKgor CSAqIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1hbmlwdWxhdGUgdGhlIHB1Ymxp Y2F0aW9uIHNlcXVlbmNlcyBpbgorCSAqIHNjaGVtYQorCSAqLworCWlmIChzZXF1ZW5jZXNf c2NoZW1haWRsaXN0ICYmIHB1YmZvcm0tPnB1YmFsbHNlcXVlbmNlcykKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkgZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBh cyBGT1IgQUxMIFNFUVVFTkNFUyIsCisJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUp KSwKKwkJCQkgZXJyZGV0YWlsKCJTZXF1ZW5jZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFk ZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxMIFNFUVVFTkNFUyBwdWJs aWNhdGlvbnMuIikpKTsKKwogCS8qIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1h bmlwdWxhdGUgdGhlIHB1YmxpY2F0aW9uIHRhYmxlcy4gKi8KIAlpZiAodGFibGVzICYmIHB1 YmZvcm0tPnB1YmFsbHRhYmxlcykKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExNzYsNiArMTI5 MiwxMTggQEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBp cyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIiwKIAkJCQkJCU5hbWVTdHIocHViZm9ybS0+ cHVibmFtZSkpLAogCQkJCSBlcnJkZXRhaWwoIlRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8g b3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4iKSkpOworCisJ LyogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGlj YXRpb24gdGFibGVzLiAqLworCWlmIChzZXF1ZW5jZXMgJiYgcHViZm9ybS0+cHViYWxsc2Vx dWVuY2VzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInB1YmxpY2F0aW9u IFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTIiwKKwkJCQkJCU5hbWVT dHIocHViZm9ybS0+cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNlcXVlbmNlcyBjYW5u b3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgU0VRVUVOQ0VTIHB1Ymxp Y2F0aW9ucy4iKSkpOworfQorCisvKgorICogQWRkIG9yIHJlbW92ZSBzZXF1ZW5jZSB0by9m cm9tIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNl cXVlbmNlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKKwkJ CQkJCSAgTGlzdCAqc2VxdWVuY2VzLCBMaXN0ICpzY2hlbWFpZGxpc3QpCit7CisJTGlzdAkg ICAqcmVscyA9IE5JTDsKKwlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9w Z19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CisJT2lkCQkJcHViaWQgPSBwdWJmb3Jt LT5vaWQ7CisKKwkvKgorCSAqIEZJWE1FIERvIHdlIG5lZWQgdG8gdGVzdCByZWxraW5kIG9m IHRoZSByZWxhdGlvbnM/IE90aGVyd2lzZSB3ZQorCSAqIGNhbiBkbyAiQUREIFNFUVVFTkNF IHRhYmxlIiBhbmQgaXQnbGwgIndvcmsiLgorCSAqLworCisJLyoKKwkgKiBJdCBpcyBxdWl0 ZSBwb3NzaWJsZSB0aGF0IGZvciB0aGUgU0VUIGNhc2UgdXNlciBoYXMgbm90IHNwZWNpZmll ZCBhbnkKKwkgKiB0YWJsZXMgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvIHJlbW92ZSBhbGwg dGhlIGV4aXN0aW5nIHRhYmxlcy4KKwkgKi8KKwlpZiAoIXNlcXVlbmNlcyAmJiBzdG10LT5h Y3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKKwkJcmV0dXJuOworCisJcmVscyA9IE9wZW5SZWxh dGlvbkxpc3Qoc2VxdWVuY2VzKTsKKworCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2Jq ZWN0cykKKwl7CisJCUxpc3QJICAgKnNjaGVtYXMgPSBOSUw7CisKKwkJLyoKKwkJICogQ2hl Y2sgaWYgdGhlIHJlbGF0aW9uIGlzIG1lbWJlciBvZiB0aGUgZXhpc3Rpbmcgc2NoZW1hIGlu IHRoZQorCQkgKiBwdWJsaWNhdGlvbiBvciBtZW1iZXIgb2YgdGhlIHNjaGVtYSBsaXN0IHNw ZWNpZmllZC4KKwkJICovCisJCXNjaGVtYXMgPSBsaXN0X2NvbmNhdF9jb3B5KHNjaGVtYWlk bGlzdCwgR2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkLCB0cnVlKSk7CisJCUNoZWNrT2Jq U2NoZW1hTm90QWxyZWFkeUluUHVibGljYXRpb24ocmVscywgc2NoZW1hcywKKwkJCQkJCQkJ CQkJICBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRSk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRp b25zKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CisJfQorCWVsc2UgaWYgKHN0bXQtPmFj dGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1 YmlkLCByZWxzLCBmYWxzZSk7CisJZWxzZQkJCQkJCS8qIERFRkVMRU1fU0VUICovCisJewor CQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwg dHJ1ZSwKKwkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJTGlzdAkg ICAqZGVscmVscyA9IE5JTDsKKwkJTGlzdENlbGwgICAqb2xkbGM7CisKKwkJQ2hlY2tPYmpT Y2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihyZWxzLCBzY2hlbWFpZGxpc3QsCisJCQkJ CQkJCQkJCSAgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0UpOworCisJCS8qIENhbGN1bGF0ZSB3 aGljaCByZWxhdGlvbnMgdG8gZHJvcC4gKi8KKwkJZm9yZWFjaChvbGRsYywgb2xkcmVsaWRz KQorCQl7CisJCQlPaWQJCQlvbGRyZWxpZCA9IGxmaXJzdF9vaWQob2xkbGMpOworCQkJTGlz dENlbGwgICAqbmV3bGM7CisJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCQlmb3JlYWNo KG5ld2xjLCByZWxzKQorCQkJeworCQkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqbmV3cHVicmVs OworCisJCQkJbmV3cHVicmVsID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBsZmlyc3QobmV3 bGMpOworCQkJCWlmIChSZWxhdGlvbkdldFJlbGlkKG5ld3B1YnJlbC0+cmVsYXRpb24pID09 IG9sZHJlbGlkKQorCQkJCXsKKwkJCQkJZm91bmQgPSB0cnVlOworCQkJCQlicmVhazsKKwkJ CQl9CisJCQl9CisJCQkvKiBOb3QgeWV0IGluIHRoZSBsaXN0LCBvcGVuIGl0IGFuZCBhZGQg dG8gdGhlIGxpc3QgKi8KKwkJCWlmICghZm91bmQpCisJCQl7CisJCQkJUmVsYXRpb24Jb2xk cmVsOworCQkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmVsOworCisJCQkJLyogZG9uJ3Qg ZHJvcCBub24tc2VxdWVuY2VzIChub3QgaW4gbGlzdCBvZiBzZXF1ZW5jZXMpICovCisJCQkJ aWYgKGdldF9yZWxfcmVsa2luZChvbGRyZWxpZCkgIT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJ CQkJY29udGludWU7CisKKwkJCQkvKiBXcmFwIHJlbGF0aW9uIGludG8gUHVibGljYXRpb25S ZWxJbmZvICovCisJCQkJb2xkcmVsID0gdGFibGVfb3BlbihvbGRyZWxpZCwgU2hhcmVVcGRh dGVFeGNsdXNpdmVMb2NrKTsKKworCQkJCXB1YnJlbCA9IHBhbGxvYyhzaXplb2YoUHVibGlj YXRpb25SZWxJbmZvKSk7CisJCQkJcHVicmVsLT5yZWxhdGlvbiA9IG9sZHJlbDsKKwkJCQlw dWJyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKKworCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRl bHJlbHMsIHB1YnJlbCk7CisJCQl9CisJCX0KKworCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwor CQlQdWJsaWNhdGlvbkRyb3BSZWxhdGlvbnMocHViaWQsIGRlbHJlbHMsIHRydWUpOworCisJ CS8qCisJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBmb3Ig YWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKKwkJICogc2tpcCBleGlzdGluZyBvbmVzIHdoZW4g ZG9pbmcgY2F0YWxvZyB1cGRhdGUuCisJCSAqLworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9u cyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisKKwkJQ2xvc2VSZWxhdGlvbkxpc3QoZGVs cmVscyk7CisJfQorCisJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CiB9CiAKIC8qCkBAIC0x MjEzLDE0ICsxNDQxLDIyIEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJQWx0ZXJQdWJsaWNhdGlvbk9wdGlv bnMocHN0YXRlLCBzdG10LCByZWwsIHR1cCk7CiAJZWxzZQogCXsKLQkJTGlzdAkgICAqcmVs YXRpb25zID0gTklMOworCQlMaXN0CSAgICp0YWJsZXMgPSBOSUw7CisJCUxpc3QJICAgKnNl cXVlbmNlcyA9IE5JTDsKKwkJTGlzdAkgICAqdGFibGVzX3NjaGVtYWlkbGlzdCA9IE5JTDsK KwkJTGlzdAkgICAqc2VxdWVuY2VzX3NjaGVtYWlkbGlzdCA9IE5JTDsKIAkJTGlzdAkgICAq c2NoZW1haWRsaXN0ID0gTklMOwogCQlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKIAot CQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUs ICZyZWxhdGlvbnMsCisJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9i amVjdHMsIHBzdGF0ZSwKKwkJCQkJCQkJICAgJnRhYmxlcywgJnNlcXVlbmNlcywKKwkJCQkJ CQkJICAgJnRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCSAgICZzZXF1ZW5jZXNfc2No ZW1haWRsaXN0LAogCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKIAotCQlDaGVja0FsdGVy UHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlvbnMsIHNjaGVtYWlkbGlzdCk7CisJCUNo ZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsCisJCQkJCQkJICB0YWJsZXMsIHRhYmxl c19zY2hlbWFpZGxpc3QsCisJCQkJCQkJICBzZXF1ZW5jZXMsIHNlcXVlbmNlc19zY2hlbWFp ZGxpc3QpOwogCiAJCWhlYXBfZnJlZXR1cGxlKHR1cCk7CiAKQEAgLTEyNDgsOSArMTQ4NCwx NCBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQpCiAJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMg bm90IGV4aXN0IiwKIAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlBbHRlclB1Ymxp Y2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3QsCisJCUFs dGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCB0YWJsZXMsIHRhYmxlc19zY2hlbWFp ZGxpc3QsCiAJCQkJCQkJICAgcHN0YXRlLT5wX3NvdXJjZXRleHQpOwotCQlBbHRlclB1Ymxp Y2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CisKKwkJQWx0ZXJQdWJs aWNhdGlvblNlcXVlbmNlcyhzdG10LCB0dXAsIHNlcXVlbmNlcywgc2VxdWVuY2VzX3NjaGVt YWlkbGlzdCk7CisKKwkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCB0YWJs ZXNfc2NoZW1haWRsaXN0LCBmYWxzZSk7CisKKwkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMo c3RtdCwgdHVwLCBzZXF1ZW5jZXNfc2NoZW1haWRsaXN0LCB0cnVlKTsKIAl9CiAKIAkvKiBD bGVhbnVwLiAqLwpAQCAtMTMxOCw3ICsxNTU5LDcgQEAgUmVtb3ZlUHVibGljYXRpb25CeUlk KE9pZCBwdWJpZCkKIAlwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVD VCh0dXApOwogCiAJLyogSW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9u IGluZm8gaXMgcmVidWlsdC4gKi8KLQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlm IChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCS8qIEZJWE1FIGhhbmRsZSBwdWJhbGxzZXF1ZW5j ZXMgdG9vPyAqLwogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwogCiAJQ2F0YWxv Z1R1cGxlRGVsZXRlKHJlbCwgJnR1cC0+dF9zZWxmKTsKQEAgLTEzNTQsNiArMTU5NSw3IEBA IFJlbW92ZVB1YmxpY2F0aW9uU2NoZW1hQnlJZChPaWQgcHNvaWQpCiAJICogcGFydGl0aW9u cy4KIAkgKi8KIAlzY2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMo cHVic2NoLT5wbm5zcGlkLAorCQkJCQkJCQkJCQkgICBwdWJzY2gtPnBuc2VxdWVuY2VzLAog CQkJCQkJCQkJCQkgICBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJSW52YWxpZGF0ZVB1Ymxp Y2F0aW9uUmVscyhzY2hlbWFSZWxzKTsKIApAQCAtMTM5NiwxNyArMTYzOCwxNyBAQCBPcGVu UmVsSWRMaXN0KExpc3QgKnJlbGlkcykKICAqIGFkZCB0aGVtIHRvIGEgcHVibGljYXRpb24u CiAgKi8KIHN0YXRpYyBMaXN0ICoKLU9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQorT3Bl blJlbGF0aW9uTGlzdChMaXN0ICpyZWxzKQogewogCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsK LQlMaXN0CSAgICpyZWxzID0gTklMOworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0 Q2VsbCAgICpsYzsKIAlMaXN0CSAgICpyZWxpZHNfd2l0aF9yZiA9IE5JTDsKIAogCS8qCiAJ ICogT3Blbiwgc2hhcmUtbG9jaywgYW5kIGNoZWNrIGFsbCB0aGUgZXhwbGljaXRseS1zcGVj aWZpZWQgcmVsYXRpb25zCiAJICovCi0JZm9yZWFjaChsYywgdGFibGVzKQorCWZvcmVhY2go bGMsIHJlbHMpCiAJewogCQlQdWJsaWNhdGlvblRhYmxlICp0ID0gbGZpcnN0X25vZGUoUHVi bGljYXRpb25UYWJsZSwgbGMpOwogCQlib29sCQlyZWN1cnNlID0gdC0+cmVsYXRpb24tPmlu aDsKQEAgLTE0NDMsNyArMTY4NSw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQog CQlwdWJfcmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKIAkJcHVi X3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCXB1Yl9yZWwtPndoZXJlQ2xhdXNlID0gdC0+d2hl cmVDbGF1c2U7Ci0JCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOworCQlyZXN1bHQg PSBsYXBwZW5kKHJlc3VsdCwgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJl bGlkcywgbXlyZWxpZCk7CiAKIAkJaWYgKHQtPndoZXJlQ2xhdXNlKQpAQCAtMTQ5Nyw3ICsx NzM5LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCQkJcHViX3JlbC0+cmVs YXRpb24gPSByZWw7CiAJCQkJLyogY2hpbGQgaW5oZXJpdHMgV0hFUkUgY2xhdXNlIGZyb20g cGFyZW50ICovCiAJCQkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsK LQkJCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKKwkJCQlyZXN1bHQgPSBsYXBw ZW5kKHJlc3VsdCwgcHViX3JlbCk7CiAJCQkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRz LCBjaGlsZHJlbGlkKTsKIAogCQkJCWlmICh0LT53aGVyZUNsYXVzZSkKQEAgLTE1MDksMTQg KzE3NTEsMTQgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJbGlzdF9mcmVlKHJl bGlkcyk7CiAJbGlzdF9mcmVlKHJlbGlkc193aXRoX3JmKTsKIAotCXJldHVybiByZWxzOwor CXJldHVybiByZXN1bHQ7CiB9CiAKIC8qCiAgKiBDbG9zZSBhbGwgcmVsYXRpb25zIGluIHRo ZSBsaXN0LgogICovCiBzdGF0aWMgdm9pZAotQ2xvc2VUYWJsZUxpc3QoTGlzdCAqcmVscykK K0Nsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAK QEAgLTE1NjQsNyArMTgwNiw3IEBAIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3Qp CiAgKiBBZGQgbGlzdGVkIHRhYmxlcyB0byB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRp YyB2b2lkCi1QdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJv b2wgaWZfbm90X2V4aXN0cywKK1B1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwg TGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQkJCQkgQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQpCiB7CiAJTGlzdENlbGwgICAqbGM7CkBAIC0xNTk4LDcgKzE4NDAsNyBA QCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZf bm90X2V4aXN0cywKICAqIFJlbW92ZSBsaXN0ZWQgdGFibGVzIGZyb20gdGhlIHB1YmxpY2F0 aW9uLgogICovCiBzdGF0aWMgdm9pZAotUHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBwdWJp ZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKQorUHVibGljYXRpb25Ecm9wUmVsYXRp b25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKQogewogCU9iamVj dEFkZHJlc3Mgb2JqOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtMTYzOCw4ICsxODgwLDggQEAg UHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNz aW5nX29rKQogICogQWRkIGxpc3RlZCBzY2hlbWFzIHRvIHRoZSBwdWJsaWNhdGlvbi4KICAq Lwogc3RhdGljIHZvaWQKLVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3Qg KnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0cywKLQkJCQkJICBBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCkKK1B1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNj aGVtYXMsIGJvb2wgc2VxdWVuY2VzLAorCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAgLTE2 NTAsNyArMTg5Miw3IEBAIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3Qg KnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJT2lkCQkJc2NoZW1haWQgPSBsZmly c3Rfb2lkKGxjKTsKIAkJT2JqZWN0QWRkcmVzcyBvYmo7CiAKLQkJb2JqID0gcHVibGljYXRp b25fYWRkX3NjaGVtYShwdWJpZCwgc2NoZW1haWQsIGlmX25vdF9leGlzdHMpOworCQlvYmog PSBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKHB1YmlkLCBzY2hlbWFpZCwgc2VxdWVuY2VzLCBp Zl9ub3RfZXhpc3RzKTsKIAkJaWYgKHN0bXQpCiAJCXsKIAkJCUV2ZW50VHJpZ2dlckNvbGxl Y3RTaW1wbGVDb21tYW5kKG9iaiwgSW52YWxpZE9iamVjdEFkZHJlc3MsCkBAIC0xNjY2LDcg KzE5MDgsNyBAQCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hl bWFzLCBib29sIGlmX25vdF9leGlzdHMsCiAgKiBSZW1vdmUgbGlzdGVkIHNjaGVtYXMgZnJv bSB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJsaWNhdGlvbkRyb3BT Y2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKQorUHVi bGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgc2Vx dWVuY2VzLCBib29sIG1pc3Npbmdfb2spCiB7CiAJT2JqZWN0QWRkcmVzcyBvYmo7CiAJTGlz dENlbGwgICAqbGM7CkBAIC0xNjc2LDEwICsxOTE4LDExIEBAIFB1YmxpY2F0aW9uRHJvcFNj aGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2spCiAJewog CQlPaWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQobGMpOwogCi0JCXBzaWQgPSBHZXRTeXND YWNoZU9pZDIoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCisJCXBzaWQgPSBHZXRTeXNDYWNo ZU9pZDMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJICAgQW51bV9wZ19wdWJs aWNhdGlvbl9uYW1lc3BhY2Vfb2lkLAogCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oc2No ZW1haWQpLAotCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJCQkJCQkg ICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSwKKwkJCQkJCQkgICBCb29sR2V0RGF0dW0oc2Vx dWVuY2VzKSk7CiAJCWlmICghT2lkSXNWYWxpZChwc2lkKSkKIAkJewogCQkJaWYgKG1pc3Np bmdfb2spCkBAIC0xNzM0LDYgKzE5NzcsMTMgQEAgQWx0ZXJQdWJsaWNhdGlvbk93bmVyX2lu dGVybmFsKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cCwgT2lkIG5ld093bmVySWQpCiAJ CQkJCQkJTmFtZVN0cihmb3JtLT5wdWJuYW1lKSksCiAJCQkJCSBlcnJoaW50KCJUaGUgb3du ZXIgb2YgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiBtdXN0IGJlIGEgc3VwZXJ1c2Vy LiIpKSk7CiAKKwkJaWYgKGZvcm0tPnB1YmFsbHNlcXVlbmNlcyAmJiAhc3VwZXJ1c2VyX2Fy ZyhuZXdPd25lcklkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCSBlcnJtc2coInBlcm1pc3Npb24g ZGVuaWVkIHRvIGNoYW5nZSBvd25lciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIiLAorCQkJCQkJ CU5hbWVTdHIoZm9ybS0+cHVibmFtZSkpLAorCQkJCQkgZXJyaGludCgiVGhlIG93bmVyIG9m IGEgRk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24gbXVzdCBiZSBhIHN1cGVydXNlci4i KSkpOworCiAJCWlmICghc3VwZXJ1c2VyX2FyZyhuZXdPd25lcklkKSAmJiBpc19zY2hlbWFf cHVibGljYXRpb24oZm9ybS0+b2lkKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYwppbmRleCBhYjU5MmNlMmYxNS4uZmU0ZjIxZWM0MzggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VxdWVuY2UuYwpAQCAtMzM2LDYgKzMzNiw4NSBAQCBSZXNldFNlcXVlbmNlKE9pZCBz ZXFfcmVsaWQpCiAJcmVsYXRpb25fY2xvc2Uoc2VxX3JlbCwgTm9Mb2NrKTsKIH0KIAorLyoK KyAqIFJlc2V0IGEgc2VxdWVuY2UgdG8gaXRzIGluaXRpYWwgdmFsdWUuCisgKgorICogVGhl IGNoYW5nZSBpcyBtYWRlIHRyYW5zYWN0aW9uYWxseSwgc28gdGhhdCBvbiBmYWlsdXJlIG9m IHRoZSBjdXJyZW50CisgKiB0cmFuc2FjdGlvbiwgdGhlIHNlcXVlbmNlIHdpbGwgYmUgcmVz dG9yZWQgdG8gaXRzIHByZXZpb3VzIHN0YXRlLgorICogV2UgZG8gdGhhdCBieSBjcmVhdGlu ZyBhIHdob2xlIG5ldyByZWxmaWxlbm9kZSBmb3IgdGhlIHNlcXVlbmNlOyBzbyB0aGlzCisg KiB3b3JrcyBtdWNoIGxpa2UgdGhlIHJld3JpdGluZyBmb3JtcyBvZiBBTFRFUiBUQUJMRS4K KyAqCisgKiBDYWxsZXIgaXMgYXNzdW1lZCB0byBoYXZlIGFjcXVpcmVkIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2sgb24gdGhlIHNlcXVlbmNlLAorICogd2hpY2ggbXVzdCBub3QgYmUgcmVsZWFz ZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uLiAgQ2FsbGVyIGlzIGFsc28KKyAqIHJlc3Bv bnNpYmxlIGZvciBwZXJtaXNzaW9ucyBjaGVja2luZy4KKyAqLwordm9pZAorUmVzZXRTZXF1 ZW5jZTIoT2lkIHNlcV9yZWxpZCwgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9nX2NudCwg Ym9vbCBpc19jYWxsZWQpCit7CisJUmVsYXRpb24Jc2VxX3JlbDsKKwlTZXFUYWJsZQllbG07 CisJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsKKwlCdWZmZXIJCWJ1ZjsKKwlIZWFwVHVw bGVEYXRhIHNlcWRhdGF0dXBsZTsKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwkvKgorCSAqIFJl YWQgdGhlIG9sZCBzZXF1ZW5jZS4gIFRoaXMgZG9lcyBhIGJpdCBtb3JlIHdvcmsgdGhhbiBy ZWFsbHkKKwkgKiBuZWNlc3NhcnksIGJ1dCBpdCdzIHNpbXBsZSwgYW5kIHdlIGRvIHdhbnQg dG8gZG91YmxlLWNoZWNrIHRoYXQgaXQncworCSAqIGluZGVlZCBhIHNlcXVlbmNlLgorCSAq LworCWluaXRfc2VxdWVuY2Uoc2VxX3JlbGlkLCAmZWxtLCAmc2VxX3JlbCk7CisJKHZvaWQp IHJlYWRfc2VxX3R1cGxlKHNlcV9yZWwsICZidWYsICZzZXFkYXRhdHVwbGUpOworCisJLyoK KwkgKiBDb3B5IHRoZSBleGlzdGluZyBzZXF1ZW5jZSB0dXBsZS4KKwkgKi8KKwl0dXBsZSA9 IGhlYXBfY29weXR1cGxlKCZzZXFkYXRhdHVwbGUpOworCisJLyogTm93IHdlJ3JlIGRvbmUg d2l0aCB0aGUgb2xkIHBhZ2UgKi8KKwlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkv KgorCSAqIE1vZGlmeSB0aGUgY29waWVkIHR1cGxlIHRvIGV4ZWN1dGUgdGhlIHJlc3RhcnQg KGNvbXBhcmUgdGhlIFJFU1RBUlQKKwkgKiBhY3Rpb24gaW4gQWx0ZXJTZXF1ZW5jZSkKKwkg Ki8KKwlzZXEgPSAoRm9ybV9wZ19zZXF1ZW5jZV9kYXRhKSBHRVRTVFJVQ1QodHVwbGUpOwor CXNlcS0+bGFzdF92YWx1ZSA9IGxhc3RfdmFsdWU7CisJc2VxLT5pc19jYWxsZWQgPSBpc19j YWxsZWQ7CisJc2VxLT5sb2dfY250ID0gbG9nX2NudDsKKworCS8qCisJICogQ3JlYXRlIGEg bmV3IHN0b3JhZ2UgZmlsZSBmb3IgdGhlIHNlcXVlbmNlLgorCSAqLworCVJlbGF0aW9uU2V0 TmV3UmVsZmlsZW5vZGUoc2VxX3JlbCwgc2VxX3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSk7CisKKwkvKgorCSAqIEVuc3VyZSBzZXF1ZW5jZSdzIHJlbGZyb3plbnhpZCBpcyBhdCAw LCBzaW5jZSBpdCB3b24ndCBjb250YWluIGFueQorCSAqIHVuZnJvemVuIFhJRHMuICBTYW1l IHdpdGggcmVsbWlubXhpZCwgc2luY2UgYSBzZXF1ZW5jZSB3aWxsIG5ldmVyCisJICogY29u dGFpbiBtdWx0aXhhY3RzLgorCSAqLworCUFzc2VydChzZXFfcmVsLT5yZF9yZWwtPnJlbGZy b3plbnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisJQXNzZXJ0KHNlcV9yZWwtPnJk X3JlbC0+cmVsbWlubXhpZCA9PSBJbnZhbGlkTXVsdGlYYWN0SWQpOworCisJLyoKKwkgKiBJ bnNlcnQgdGhlIG1vZGlmaWVkIHR1cGxlIGludG8gdGhlIG5ldyBzdG9yYWdlIGZpbGUuCisJ ICoKKwkgKiBYWFggTWF5YmUgdGhpcyBzaG91bGQgYWxzbyB1c2UgY3JlYXRlZD10cnVlLCBq dXN0IGxpa2UgdGhlIG90aGVyIHBsYWNlcworCSAqIGNhbGxpbmcgZmlsbF9zZXFfd2l0aF9k YXRhLiBUaGF0J3MgcHJvYmFibHkgbmVlZGVkIGZvciBjb3JyZWN0IGNhc2NhZGluZworCSAq IHJlcGxpY2F0aW9uLgorCSAqCisJICogWFhYIFRoYXQnZCBtZWFuIGFsbCBmaWxsX3NlcV93 aXRoX2RhdGEgY2FsbGVycyB1c2UgY3JlYXRlZD10cnVlLCBtYWtpbmcKKwkgKiB0aGUgcGFy YW1ldGVyIHVubmVjZXNzYXJ5LgorCSAqLworCWZpbGxfc2VxX3dpdGhfZGF0YShzZXFfcmVs LCB0dXBsZSk7CisKKwkvKiBDbGVhciBsb2NhbCBjYWNoZSBzbyB0aGF0IHdlIGRvbid0IHRo aW5rIHdlIGhhdmUgY2FjaGVkIG51bWJlcnMgKi8KKwkvKiBOb3RlIHRoYXQgd2UgZG8gbm90 IGNoYW5nZSB0aGUgY3VycnZhbCgpIHN0YXRlICovCisJZWxtLT5jYWNoZWQgPSBlbG0tPmxh c3Q7CisKKwlyZWxhdGlvbl9jbG9zZShzZXFfcmVsLCBOb0xvY2spOworfQorCiAvKgogICog SW5pdGlhbGl6ZSBhIHNlcXVlbmNlJ3MgcmVsYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIHR1 cGxlIGFzIGNvbnRlbnQKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jCmluZGV4IDNlZjY2MDdkMjQ2Li41YmViNjdlNzY1MiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODUsNiArODUsNyBAQCB0eXBlZGVm IHN0cnVjdCBTdWJPcHRzCiB9IFN1Yk9wdHM7CiAKIHN0YXRpYyBMaXN0ICpmZXRjaF90YWJs ZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlvbnMpOwor c3RhdGljIExpc3QgKmZldGNoX3NlcXVlbmNlX2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3cmNv bm4sIExpc3QgKnB1YmxpY2F0aW9ucyk7CiBzdGF0aWMgdm9pZCBjaGVja19kdXBsaWNhdGVz X2luX3B1Ymxpc3QoTGlzdCAqcHVibGlzdCwgRGF0dW0gKmRhdHVtcyk7CiBzdGF0aWMgTGlz dCAqbWVyZ2VfcHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxp c3QsIGJvb2wgYWRkcHViLCBjb25zdCBjaGFyICpzdWJuYW1lKTsKIHN0YXRpYyB2b2lkIFJl cG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0YXRlcywgT2lkIHN1YmlkLCBjaGFy ICpzbG90bmFtZSwgY2hhciAqZXJyKTsKQEAgLTQ5Niw2ICs0OTcsNyBAQCBDcmVhdGVTdWJz Y3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCQljaGFyCSAgICplcnI7CiAJCVdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uOwogCQlM aXN0CSAgICp0YWJsZXM7CisJCUxpc3QJICAgKnNlcXVlbmNlczsKIAkJTGlzdENlbGwgICAq bGM7CiAJCWNoYXIJCXRhYmxlX3N0YXRlOwogCkBAIC01MzQsNiArNTM2LDI2IEBAIENyZWF0 ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0 bXQgKnN0bXQsCiAJCQkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIpOwogCQkJfQogCisJCQkv KgorCQkJICogR2V0IHRoZSBzZXF1ZW5jZSBsaXN0IGZyb20gcHVibGlzaGVyIGFuZCBidWls ZCBsb2NhbCBzZXF1ZW5jZQorCQkJICogc3RhdHVzIGluZm8uCisJCQkgKi8KKwkJCXNlcXVl bmNlcyA9IGZldGNoX3NlcXVlbmNlX2xpc3Qod3Jjb25uLCBwdWJsaWNhdGlvbnMpOworCQkJ Zm9yZWFjaChsYywgc2VxdWVuY2VzKQorCQkJeworCQkJCVJhbmdlVmFyICAgKnJ2ID0gKFJh bmdlVmFyICopIGxmaXJzdChsYyk7CisJCQkJT2lkCQkJcmVsaWQ7CisKKwkJCQlyZWxpZCA9 IFJhbmdlVmFyR2V0UmVsaWQocnYsIEFjY2Vzc1NoYXJlTG9jaywgZmFsc2UpOworCisJCQkJ LyogQ2hlY2sgZm9yIHN1cHBvcnRlZCByZWxraW5kLiAqLworCQkJCUNoZWNrU3Vic2NyaXB0 aW9uUmVsa2luZChnZXRfcmVsX3JlbGtpbmQocmVsaWQpLAorCQkJCQkJCQkJCSBydi0+c2No ZW1hbmFtZSwgcnYtPnJlbG5hbWUpOworCisJCQkJQWRkU3Vic2NyaXB0aW9uUmVsU3RhdGUo c3ViaWQsIHJlbGlkLCB0YWJsZV9zdGF0ZSwKKwkJCQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0 cik7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBJZiByZXF1ZXN0ZWQsIGNyZWF0ZSBwZXJtYW5l bnQgc2xvdCBmb3IgdGhlIHN1YnNjcmlwdGlvbi4gV2UKIAkJCSAqIHdvbid0IHVzZSB0aGUg aW5pdGlhbCBzbmFwc2hvdCBmb3IgYW55dGhpbmcsIHNvIG5vIG5lZWQgdG8KQEAgLTcwNiw2 ICs3MjgsMTAgQEAgQWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVzaChTdWJzY3JpcHRpb24gKnN1 YiwgYm9vbCBjb3B5X2RhdGEpCiAJCXsKIAkJCU9pZAkJCXJlbGlkID0gc3VicmVsX2xvY2Fs X29pZHNbb2ZmXTsKIAorCQkJLyogWFhYIGlnbm9yZSBzZXF1ZW5jZXMgLSBtYXliZSBkbyB0 aGlzIGluIEdldFN1YnNjcmlwdGlvblJlbGF0aW9ucz8gKi8KKwkJCWlmIChnZXRfcmVsX3Jl bGtpbmQocmVsaWQpID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCQkJY29udGludWU7CisKIAkJ CWlmICghYnNlYXJjaCgmcmVsaWQsIHB1YnJlbF9sb2NhbF9vaWRzLAogCQkJCQkJIGxpc3Rf bGVuZ3RoKHB1YnJlbF9uYW1lcyksIHNpemVvZihPaWQpLCBvaWRfY21wKSkKIAkJCXsKQEAg LTc5Nyw2ICs4MjMsMTgzIEBAIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0 aW9uICpzdWIsIGJvb2wgY29weV9kYXRhKQogCQkJCVJlcGxpY2F0aW9uU2xvdERyb3BBdFB1 Yk5vZGUod3Jjb25uLCBzeW5jc2xvdG5hbWUsIHRydWUpOwogCQkJfQogCQl9CisKKwkJLyoK KwkJICogWFhYIG5vdyBkbyB0aGUgc2FtZSB0aGluZyBmb3Igc2VxdWVuY2VzLCBtYXliZSBi ZWZvcmUgdGhlIHByZWNlZGluZworCQkgKiBibG9jaywgb3IgZWFybGllcj8KKwkJICovCisK KwkJLyogR2V0IHRoZSB0YWJsZSBsaXN0IGZyb20gcHVibGlzaGVyLiAqLworCQlwdWJyZWxf bmFtZXMgPSBmZXRjaF9zZXF1ZW5jZV9saXN0KHdyY29ubiwgc3ViLT5wdWJsaWNhdGlvbnMp OworCisJCS8qIEdldCBsb2NhbCB0YWJsZSBsaXN0LiAqLworCQlzdWJyZWxfc3RhdGVzID0g R2V0U3Vic2NyaXB0aW9uUmVsYXRpb25zKHN1Yi0+b2lkKTsKKworCQkvKgorCQkgKiBCdWls ZCBxc29ydGVkIGFycmF5IG9mIGxvY2FsIHRhYmxlIG9pZHMgZm9yIGZhc3RlciBsb29rdXAu IFRoaXMgY2FuCisJCSAqIHBvdGVudGlhbGx5IGNvbnRhaW4gYWxsIHRhYmxlcyBpbiB0aGUg ZGF0YWJhc2Ugc28gc3BlZWQgb2YgbG9va3VwCisJCSAqIGlzIGltcG9ydGFudC4KKwkJICov CisJCXN1YnJlbF9sb2NhbF9vaWRzID0gcGFsbG9jKGxpc3RfbGVuZ3RoKHN1YnJlbF9zdGF0 ZXMpICogc2l6ZW9mKE9pZCkpOworCQlvZmYgPSAwOworCQlmb3JlYWNoKGxjLCBzdWJyZWxf c3RhdGVzKQorCQl7CisJCQlTdWJzY3JpcHRpb25SZWxTdGF0ZSAqcmVsc3RhdGUgPSAoU3Vi c2NyaXB0aW9uUmVsU3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQkJc3VicmVsX2xvY2FsX29p ZHNbb2ZmKytdID0gcmVsc3RhdGUtPnJlbGlkOworCQl9CisJCXFzb3J0KHN1YnJlbF9sb2Nh bF9vaWRzLCBsaXN0X2xlbmd0aChzdWJyZWxfc3RhdGVzKSwKKwkJCSAgc2l6ZW9mKE9pZCks IG9pZF9jbXApOworCisJCS8qCisJCSAqIFJlbHMgdGhhdCB3ZSB3YW50IHRvIHJlbW92ZSBm cm9tIHN1YnNjcmlwdGlvbiBhbmQgZHJvcCBhbnkgc2xvdHMKKwkJICogYW5kIG9yaWdpbnMg Y29ycmVzcG9uZGluZyB0byB0aGVtLgorCQkgKi8KKwkJc3ViX3JlbW92ZV9yZWxzID0gcGFs bG9jKGxpc3RfbGVuZ3RoKHN1YnJlbF9zdGF0ZXMpICogc2l6ZW9mKFN1YlJlbW92ZVJlbHMp KTsKKworCQkvKgorCQkgKiBXYWxrIG92ZXIgdGhlIHJlbW90ZSB0YWJsZXMgYW5kIHRyeSB0 byBtYXRjaCB0aGVtIHRvIGxvY2FsbHkga25vd24KKwkJICogdGFibGVzLiBJZiB0aGUgdGFi bGUgaXMgbm90IGtub3duIGxvY2FsbHkgY3JlYXRlIGEgbmV3IHN0YXRlIGZvcgorCQkgKiBp dC4KKwkJICoKKwkJICogQWxzbyBidWlsZHMgYXJyYXkgb2YgbG9jYWwgb2lkcyBvZiByZW1v dGUgdGFibGVzIGZvciB0aGUgbmV4dCBzdGVwLgorCQkgKi8KKwkJb2ZmID0gMDsKKwkJcHVi cmVsX2xvY2FsX29pZHMgPSBwYWxsb2MobGlzdF9sZW5ndGgocHVicmVsX25hbWVzKSAqIHNp emVvZihPaWQpKTsKKworCQlmb3JlYWNoKGxjLCBwdWJyZWxfbmFtZXMpCisJCXsKKwkJCVJh bmdlVmFyICAgKnJ2ID0gKFJhbmdlVmFyICopIGxmaXJzdChsYyk7CisJCQlPaWQJCQlyZWxp ZDsKKworCQkJcmVsaWQgPSBSYW5nZVZhckdldFJlbGlkKHJ2LCBBY2Nlc3NTaGFyZUxvY2ss IGZhbHNlKTsKKworCQkJLyogQ2hlY2sgZm9yIHN1cHBvcnRlZCByZWxraW5kLiAqLworCQkJ Q2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKGdldF9yZWxfcmVsa2luZChyZWxpZCksCisJCQkJ CQkJCQkgcnYtPnNjaGVtYW5hbWUsIHJ2LT5yZWxuYW1lKTsKKworCQkJcHVicmVsX2xvY2Fs X29pZHNbb2ZmKytdID0gcmVsaWQ7CisKKwkJCWlmICghYnNlYXJjaCgmcmVsaWQsIHN1YnJl bF9sb2NhbF9vaWRzLAorCQkJCQkJIGxpc3RfbGVuZ3RoKHN1YnJlbF9zdGF0ZXMpLCBzaXpl b2YoT2lkKSwgb2lkX2NtcCkpCisJCQl7CisJCQkJQWRkU3Vic2NyaXB0aW9uUmVsU3RhdGUo c3ViLT5vaWQsIHJlbGlkLAorCQkJCQkJCQkJCWNvcHlfZGF0YSA/IFNVQlJFTF9TVEFURV9J TklUIDogU1VCUkVMX1NUQVRFX1JFQURZLAorCQkJCQkJCQkJCUludmFsaWRYTG9nUmVjUHRy KTsKKwkJCQllcmVwb3J0KERFQlVHMSwKKwkJCQkJCShlcnJtc2dfaW50ZXJuYWwoInRhYmxl IFwiJXMuJXNcIiBhZGRlZCB0byBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJCQkJCQkg cnYtPnNjaGVtYW5hbWUsIHJ2LT5yZWxuYW1lLCBzdWItPm5hbWUpKSk7CisJCQl9CisJCX0K KworCQkvKgorCQkgKiBOZXh0IHJlbW92ZSBzdGF0ZSBmb3IgdGFibGVzIHdlIHNob3VsZCBu b3QgY2FyZSBhYm91dCBhbnltb3JlIHVzaW5nCisJCSAqIHRoZSBkYXRhIHdlIGNvbGxlY3Rl ZCBhYm92ZQorCQkgKi8KKwkJcXNvcnQocHVicmVsX2xvY2FsX29pZHMsIGxpc3RfbGVuZ3Ro KHB1YnJlbF9uYW1lcyksCisJCQkgIHNpemVvZihPaWQpLCBvaWRfY21wKTsKKworCQlyZW1v dmVfcmVsX2xlbiA9IDA7CisJCWZvciAob2ZmID0gMDsgb2ZmIDwgbGlzdF9sZW5ndGgoc3Vi cmVsX3N0YXRlcyk7IG9mZisrKQorCQl7CisJCQlPaWQJCQlyZWxpZCA9IHN1YnJlbF9sb2Nh bF9vaWRzW29mZl07CisKKwkJCS8qIFhYWCBpZ25vcmUgbm9uLXNlcXVlbmNlcyAtIG1heWJl IGRvIHRoaXMgaW4gR2V0U3Vic2NyaXB0aW9uUmVsYXRpb25zPyAqLworCQkJaWYgKGdldF9y ZWxfcmVsa2luZChyZWxpZCkgIT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCQljb250aW51ZTsK KworCQkJaWYgKCFic2VhcmNoKCZyZWxpZCwgcHVicmVsX2xvY2FsX29pZHMsCisJCQkJCQkg bGlzdF9sZW5ndGgocHVicmVsX25hbWVzKSwgc2l6ZW9mKE9pZCksIG9pZF9jbXApKQorCQkJ eworCQkJCWNoYXIJCXN0YXRlOworCQkJCVhMb2dSZWNQdHIJc3RhdGVsc247CisKKwkJCQkv KgorCQkJCSAqIExvY2sgcGdfc3Vic2NyaXB0aW9uX3JlbCB3aXRoIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2sgdG8KKwkJCQkgKiBwcmV2ZW50IGFueSByYWNlIGNvbmRpdGlvbnMgd2l0aCB0aGUg YXBwbHkgd29ya2VyCisJCQkJICogcmUtbGF1bmNoaW5nIHdvcmtlcnMgYXQgdGhlIHNhbWUg dGltZSB0aGlzIGNvZGUgaXMgdHJ5aW5nCisJCQkJICogdG8gcmVtb3ZlIHRob3NlIHRhYmxl cy4KKwkJCQkgKgorCQkJCSAqIEV2ZW4gaWYgbmV3IHdvcmtlciBmb3IgdGhpcyBwYXJ0aWN1 bGFyIHJlbCBpcyByZXN0YXJ0ZWQgaXQKKwkJCQkgKiB3b24ndCBiZSBhYmxlIHRvIG1ha2Ug YW55IHByb2dyZXNzIGFzIHdlIGhvbGQgZXhjbHVzaXZlCisJCQkJICogbG9jayBvbiBzdWJz Y3JpcHRpb25fcmVsIHRpbGwgdGhlIHRyYW5zYWN0aW9uIGVuZC4gSXQgd2lsbAorCQkJCSAq IHNpbXBseSBleGl0IGFzIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgcmVsIGVudHJ5Lgor CQkJCSAqCisJCQkJICogVGhpcyBsb2NraW5nIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBzdGF0 ZSBvZiByZWxzIHdvbid0CisJCQkJICogY2hhbmdlIHRpbGwgd2UgYXJlIGRvbmUgd2l0aCB0 aGlzIHJlZnJlc2ggb3BlcmF0aW9uLgorCQkJCSAqLworCQkJCWlmICghcmVsKQorCQkJCQly ZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2spOworCisJCQkJLyogTGFzdCBrbm93biByZWwgc3RhdGUuICovCisJCQkJc3Rh dGUgPSBHZXRTdWJzY3JpcHRpb25SZWxTdGF0ZShzdWItPm9pZCwgcmVsaWQsICZzdGF0ZWxz bik7CisKKwkJCQlzdWJfcmVtb3ZlX3JlbHNbcmVtb3ZlX3JlbF9sZW5dLnJlbGlkID0gcmVs aWQ7CisJCQkJc3ViX3JlbW92ZV9yZWxzW3JlbW92ZV9yZWxfbGVuKytdLnN0YXRlID0gc3Rh dGU7CisKKwkJCQlSZW1vdmVTdWJzY3JpcHRpb25SZWwoc3ViLT5vaWQsIHJlbGlkKTsKKwor CQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Aoc3ViLT5vaWQsIHJlbGlkKTsKKworCQkJCS8q CisJCQkJICogRm9yIFJFQURZIHN0YXRlLCB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgZHJvcHBl ZCB0aGUKKwkJCQkgKiB0YWJsZXN5bmMgb3JpZ2luLgorCQkJCSAqLworCQkJCWlmIChzdGF0 ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkpCisJCQkJeworCQkJCQljaGFyCQlvcmlnaW5uYW1l W05BTUVEQVRBTEVOXTsKKworCQkJCQkvKgorCQkJCQkgKiBEcm9wIHRoZSB0YWJsZXN5bmMn cyBvcmlnaW4gdHJhY2tpbmcgaWYgZXhpc3RzLgorCQkJCQkgKgorCQkJCQkgKiBJdCBpcyBw b3NzaWJsZSB0aGF0IHRoZSBvcmlnaW4gaXMgbm90IHlldCBjcmVhdGVkIGZvcgorCQkJCQkg KiB0YWJsZXN5bmMgd29ya2VyLCB0aGlzIGNhbiBoYXBwZW4gZm9yIHRoZSBzdGF0ZXMgYmVm b3JlCisJCQkJCSAqIFNVQlJFTF9TVEFURV9GSU5JU0hFRENPUFkuIFRoZSBhcHBseSB3b3Jr ZXIgY2FuIGFsc28KKwkJCQkJICogY29uY3VycmVudGx5IHRyeSB0byBkcm9wIHRoZSBvcmln aW4gYW5kIGJ5IHRoaXMgdGltZQorCQkJCQkgKiB0aGUgb3JpZ2luIG1pZ2h0IGJlIGFscmVh ZHkgcmVtb3ZlZC4gRm9yIHRoZXNlIHJlYXNvbnMsCisJCQkJCSAqIHBhc3NpbmcgbWlzc2lu Z19vayA9IHRydWUuCisJCQkJCSAqLworCQkJCQlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JU YWJsZXN5bmMoc3ViLT5vaWQsIHJlbGlkLCBvcmlnaW5uYW1lLAorCQkJCQkJCQkJCQkJCSAg c2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwkJCQkJcmVwbG9yaWdpbl9kcm9wX2J5X25hbWUob3Jp Z2lubmFtZSwgdHJ1ZSwgZmFsc2UpOworCQkJCX0KKworCQkJCWVyZXBvcnQoREVCVUcxLAor CQkJCQkJKGVycm1zZ19pbnRlcm5hbCgidGFibGUgXCIlcy4lc1wiIHJlbW92ZWQgZnJvbSBz dWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJCQkJCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdl dF9yZWxfbmFtZXNwYWNlKHJlbGlkKSksCisJCQkJCQkJCQkJIGdldF9yZWxfbmFtZShyZWxp ZCksCisJCQkJCQkJCQkJIHN1Yi0+bmFtZSkpKTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAq IERyb3AgdGhlIHRhYmxlc3luYyBzbG90cyBhc3NvY2lhdGVkIHdpdGggcmVtb3ZlZCB0YWJs ZXMuIFRoaXMgaGFzCisJCSAqIHRvIGJlIGF0IHRoZSBlbmQgYmVjYXVzZSBvdGhlcndpc2Ug aWYgdGhlcmUgaXMgYW4gZXJyb3Igd2hpbGUgZG9pbmcKKwkJICogdGhlIGRhdGFiYXNlIG9w ZXJhdGlvbnMgd2Ugd29uJ3QgYmUgYWJsZSB0byByb2xsYmFjayBkcm9wcGVkIHNsb3RzLgor CQkgKi8KKwkJZm9yIChvZmYgPSAwOyBvZmYgPCByZW1vdmVfcmVsX2xlbjsgb2ZmKyspCisJ CXsKKwkJCWlmIChzdWJfcmVtb3ZlX3JlbHNbb2ZmXS5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVf UkVBRFkgJiYKKwkJCQlzdWJfcmVtb3ZlX3JlbHNbb2ZmXS5zdGF0ZSAhPSBTVUJSRUxfU1RB VEVfU1lOQ0RPTkUpCisJCQl7CisJCQkJY2hhcgkJc3luY3Nsb3RuYW1lW05BTUVEQVRBTEVO XSA9IHswfTsKKworCQkJCS8qCisJCQkJICogRm9yIFJFQURZL1NZTkNET05FIHN0YXRlcyB3 ZSBrbm93IHRoZSB0YWJsZXN5bmMgc2xvdCBoYXMKKwkJCQkgKiBhbHJlYWR5IGJlZW4gZHJv cHBlZCBieSB0aGUgdGFibGVzeW5jIHdvcmtlci4KKwkJCQkgKgorCQkJCSAqIEZvciBvdGhl ciBzdGF0ZXMsIHRoZXJlIGlzIG5vIGNlcnRhaW50eSwgbWF5YmUgdGhlIHNsb3QKKwkJCQkg KiBkb2VzIG5vdCBleGlzdCB5ZXQuIEFsc28sIGlmIHdlIGZhaWwgYWZ0ZXIgcmVtb3Zpbmcg c29tZSBvZgorCQkJCSAqIHRoZSBzbG90cywgbmV4dCB0aW1lLCBpdCB3aWxsIGFnYWluIHRy eSB0byBkcm9wIGFscmVhZHkKKwkJCQkgKiBkcm9wcGVkIHNsb3RzIGFuZCBmYWlsLiBGb3Ig dGhlc2UgcmVhc29ucywgd2UgYWxsb3cKKwkJCQkgKiBtaXNzaW5nX29rID0gdHJ1ZSBmb3Ig dGhlIGRyb3AuCisJCQkJICovCisJCQkJUmVwbGljYXRpb25TbG90TmFtZUZvclRhYmxlc3lu YyhzdWItPm9pZCwgc3ViX3JlbW92ZV9yZWxzW29mZl0ucmVsaWQsCisJCQkJCQkJCQkJCQlz eW5jc2xvdG5hbWUsIHNpemVvZihzeW5jc2xvdG5hbWUpKTsKKwkJCQlSZXBsaWNhdGlvblNs b3REcm9wQXRQdWJOb2RlKHdyY29ubiwgc3luY3Nsb3RuYW1lLCB0cnVlKTsKKwkJCX0KKwkJ fQorCiAJfQogCVBHX0ZJTkFMTFkoKTsKIAl7CkBAIC0xNjE2LDYgKzE4MTksNzUgQEAgZmV0 Y2hfdGFibGVfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRp b25zKQogCXJldHVybiB0YWJsZWxpc3Q7CiB9CiAKKy8qCisgKiBHZXQgdGhlIGxpc3Qgb2Yg c2VxdWVuY2VzIHdoaWNoIGJlbG9uZyB0byBzcGVjaWZpZWQgcHVibGljYXRpb25zIG9uIHRo ZQorICogcHVibGlzaGVyIGNvbm5lY3Rpb24uCisgKi8KK3N0YXRpYyBMaXN0ICoKK2ZldGNo X3NlcXVlbmNlX2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0 aW9ucykKK3sKKwlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CisJU3RyaW5nSW5mb0RhdGEgY21k OworCVR1cGxlVGFibGVTbG90ICpzbG90OworCU9pZAkJCXRhYmxlUm93WzJdID0ge1RFWFRP SUQsIFRFWFRPSUR9OworCUxpc3RDZWxsICAgKmxjOworCWJvb2wJCWZpcnN0OworCUxpc3QJ ICAgKnRhYmxlbGlzdCA9IE5JTDsKKworCUFzc2VydChsaXN0X2xlbmd0aChwdWJsaWNhdGlv bnMpID4gMCk7CisKKwlpbml0U3RyaW5nSW5mbygmY21kKTsKKwlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZjbWQsICJTRUxFQ1QgRElTVElOQ1Qgcy5zY2hlbWFuYW1lLCBzLnNlcXVlbmNl bmFtZVxuIgorCQkJCQkJICAgIiAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3Nl cXVlbmNlcyBzXG4iCisJCQkJCQkgICAiIFdIRVJFIHMucHVibmFtZSBJTiAoIik7CisJZmly c3QgPSB0cnVlOworCWZvcmVhY2gobGMsIHB1YmxpY2F0aW9ucykKKwl7CisJCWNoYXIJICAg KnB1Ym5hbWUgPSBzdHJWYWwobGZpcnN0KGxjKSk7CisKKwkJaWYgKGZpcnN0KQorCQkJZmly c3QgPSBmYWxzZTsKKwkJZWxzZQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAi LCAiKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsIHF1b3RlX2xpdGVyYWxf Y3N0cihwdWJuYW1lKSk7CisJfQorCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZjbWQsICcpJyk7 CisKKwlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5kYXRhLCAyLCB0YWJsZVJvdyk7 CisJcGZyZWUoY21kLmRhdGEpOworCisJaWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19U VVBMRVMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygiY291bGQgbm90IHJlY2Vp dmUgbGlzdCBvZiByZXBsaWNhdGVkIHRhYmxlcyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVzIiwK KwkJCQkJCXJlcy0+ZXJyKSkpOworCisJLyogUHJvY2VzcyB0YWJsZXMuICovCisJc2xvdCA9 IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmlt YWxUdXBsZSk7CisJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVz dG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQorCXsKKwkJY2hhcgkgICAqbnNwbmFtZTsKKwkJ Y2hhcgkgICAqcmVsbmFtZTsKKwkJYm9vbAkJaXNudWxsOworCQlSYW5nZVZhciAgICpydjsK KworCQluc3BuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhzbG90X2dldGF0dHIoc2xvdCwg MSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisJCXJlbG5hbWUgPSBUZXh0RGF0 dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAyLCAmaXNudWxsKSk7CisJCUFzc2Vy dCghaXNudWxsKTsKKworCQlydiA9IG1ha2VSYW5nZVZhcihuc3BuYW1lLCByZWxuYW1lLCAt MSk7CisJCXRhYmxlbGlzdCA9IGxhcHBlbmQodGFibGVsaXN0LCBydik7CisKKwkJRXhlY0Ns ZWFyVHVwbGUoc2xvdCk7CisJfQorCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xv dCk7CisKKwl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CisKKwlyZXR1cm4gdGFibGVsaXN0 OworfQorCiAvKgogICogVGhpcyBpcyB0byByZXBvcnQgdGhlIGNvbm5lY3Rpb24gZmFpbHVy ZSB3aGlsZSBkcm9wcGluZyByZXBsaWNhdGlvbiBzbG90cy4KICAqIEhlcmUsIHdlIHJlcG9y dCB0aGUgV0FSTklORyBmb3IgYWxsIHRhYmxlc3luYyBzbG90cyBzbyB0aGF0IHVzZXIgY2Fu IGRyb3AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggZGUx MDZkNzY3ZDEuLmY4ZjhhZGUxODBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVw bGljYXRpb24uYwpAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQKIENoZWNrU3Vic2NyaXB0aW9u UmVsa2luZChjaGFyIHJlbGtpbmQsIGNvbnN0IGNoYXIgKm5zcG5hbWUsCiAJCQkJCQkgY29u c3QgY2hhciAqcmVsbmFtZSkKIHsKLQlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9O ICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwlpZiAocmVsa2lu ZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSAmJiByZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJIGVy cm1zZygiY2Fubm90IHVzZSByZWxhdGlvbiBcIiVzLiVzXCIgYXMgbG9naWNhbCByZXBsaWNh dGlvbiB0YXJnZXQiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBkNGY4NDU1YTJiZC4u Y2M5MzYzMjhhMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC00ODYzLDYgKzQ4NjMs NyBAQCBfY29weUNyZWF0ZVB1YmxpY2F0aW9uU3RtdChjb25zdCBDcmVhdGVQdWJsaWNhdGlv blN0bXQgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCUNPUFlfTk9ERV9G SUVMRChwdWJvYmplY3RzKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChmb3JfYWxsX3RhYmxlcyk7 CisJQ09QWV9TQ0FMQVJfRklFTEQoZm9yX2FsbF9zZXF1ZW5jZXMpOwogCiAJcmV0dXJuIG5l d25vZGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggZjEwMDJhZmU3YTAuLjY5 MmNmMGUxMzUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMzQ2LDYgKzIzNDYs NyBAQCBfZXF1YWxBbHRlclB1YmxpY2F0aW9uU3RtdChjb25zdCBBbHRlclB1YmxpY2F0aW9u U3RtdCAqYSwKIAlDT01QQVJFX05PREVfRklFTEQob3B0aW9ucyk7CiAJQ09NUEFSRV9OT0RF X0ZJRUxEKHB1Ym9iamVjdHMpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGZvcl9hbGxfdGFi bGVzKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChmb3JfYWxsX3NlcXVlbmNlcyk7CiAJQ09N UEFSRV9TQ0FMQVJfRklFTEQoYWN0aW9uKTsKIAogCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKaW5kZXggYTAzYjMzYjUzYmQuLjkwOTdhYzNmYWJkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAg LTk3MDEsMTIgKzk3MDEsMTYgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoKICAqIENSRUFU RSBQVUJMSUNBVElPTiBGT1IgQUxMIFRBQkxFUyBbV0lUSCBvcHRpb25zXQogICoKKyAqIENS RUFURSBQVUJMSUNBVElPTiBGT1IgQUxMIFNFUVVFTkNFUyBbV0lUSCBvcHRpb25zXQorICoK ICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlv bnNdCiAgKgogICogcHViX29iaiBpcyBvbmUgb2Y6CiAgKgogICoJCVRBQkxFIHRhYmxlIFss IC4uLl0KKyAqCQlTRVFVRU5DRSB0YWJsZSBbLCAuLi5dCiAgKgkJQUxMIFRBQkxFUyBJTiBT Q0hFTUEgc2NoZW1hIFssIC4uLl0KKyAqCQlBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSBzY2hl bWEgWywgLi4uXQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtOTcyNiw2 ICs5NzMwLDE0IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+Zm9yX2FsbF90 YWJsZXMgPSB0cnVlOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJCQl8IENSRUFU RSBQVUJMSUNBVElPTiBuYW1lIEZPUiBBTEwgU0VRVUVOQ0VTIG9wdF9kZWZpbml0aW9uCisJ CQkJeworCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQ dWJsaWNhdGlvblN0bXQpOworCQkJCQluLT5wdWJuYW1lID0gJDM7CisJCQkJCW4tPm9wdGlv bnMgPSAkNzsKKwkJCQkJbi0+Zm9yX2FsbF9zZXF1ZW5jZXMgPSB0cnVlOworCQkJCQkkJCA9 IChOb2RlICopbjsKKwkJCQl9CiAJCQl8IENSRUFURSBQVUJMSUNBVElPTiBuYW1lIEZPUiBw dWJfb2JqX2xpc3Qgb3B0X2RlZmluaXRpb24KIAkJCQl7CiAJCQkJCUNyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVB1YmxpY2F0aW9uU3RtdCk7CkBAIC05Nzcy LDYgKzk3ODQsMjYgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVib2JqdHlw ZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOwogCQkJCQkkJC0+bG9j YXRpb24gPSBANTsKIAkJCQl9CisJCQl8IFNFUVVFTkNFIHJlbGF0aW9uX2V4cHIKKwkJCQl7 CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1 Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRTsKKwkJCQkJJCQtPnB1YnRhYmxl ID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVs YXRpb24gPSAkMjsKKwkJCQl9CisJCQl8IEFMTCBTRVFVRU5DRVMgSU5fUCBTQ0hFTUEgQ29s SWQKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJ CQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fU0NIRU1B OworCQkJCQkkJC0+bmFtZSA9ICQ1OworCQkJCQkkJC0+bG9jYXRpb24gPSBANTsKKwkJCQl9 CisJCQl8IEFMTCBTRVFVRU5DRVMgSU5fUCBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEKKwkJCQl7 CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1 Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fQ1VSX1NDSEVNQTsKKwkJ CQkJJCQtPmxvY2F0aW9uID0gQDU7CisJCQkJfQogCQkJfCBDb2xJZCBPcHRXaGVyZUNsYXVz ZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwpAQCAt OTgzOSw3ICs5ODcxLDkgQEAgcHViX29ial9saXN0OiAJUHVibGljYXRpb25PYmpTcGVjCiAg KiBwdWJfb2JqIGlzIG9uZSBvZjoKICAqCiAgKgkJVEFCTEUgdGFibGVfbmFtZSBbLCAuLi5d CisgKgkJU0VRVUVOQ0UgdGFibGVfbmFtZSBbLCAuLi5dCiAgKgkJQUxMIFRBQkxFUyBJTiBT Q0hFTUEgc2NoZW1hX25hbWUgWywgLi4uXQorICoJCUFMTCBTRVFVRU5DRVMgSU4gU0NIRU1B IHNjaGVtYV9uYW1lIFssIC4uLl0KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAK QEAgLTEwMTI0LDYgKzEwMTU4LDEyIEBAIFVubGlzdGVuU3RtdDoKIAkJCQl9CiAJCTsKIAor LyoKKyAqIEZJWE1FCisgKgorICogb3B0X3B1YmxpY2F0aW9uX2Zvcl9zZXF1ZW5jZXMgYW5k IHB1YmxpY2F0aW9uX2Zvcl9zZXF1ZW5jZXMgc2hvdWxkIGJlCisgKiBjb3BpZXMgZm9yIHNl cXVlbmNlcworICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBjOWIwZWVlZmQ3ZS4uM2Ri ZTg1ZDYxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMK QEAgLTY0OCw2ICs2NDgsNTYgQEAgbG9naWNhbHJlcF93cml0ZV9tZXNzYWdlKFN0cmluZ0lu Zm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCiAJcHFfc2VuZGJ5 dGVzKG91dCwgbWVzc2FnZSwgc3opOwogfQogCisvKgorICogV3JpdGUgU0VRVUVOQ0UgdG8g c3RyZWFtCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfc2VxdWVuY2UoU3RyaW5nSW5m byBvdXQsIFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkgIFhMb2dS ZWNQdHIgbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkgIGludDY0IGxhc3RfdmFs dWUsIGludDY0IGxvZ19jbnQsIGJvb2wgaXNfY2FsbGVkKQoreworCXVpbnQ4CQlmbGFncyA9 IDA7CisJY2hhcgkgICAqcmVsbmFtZTsKKworCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9S RVBfTVNHX1NFUVVFTkNFKTsKKworCS8qIHRyYW5zYWN0aW9uIElEIChpZiBub3QgdmFsaWQs IHdlJ3JlIG5vdCBzdHJlYW1pbmcpICovCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhp ZCkpCisJCXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZs YWdzKTsKKwlwcV9zZW5kaW50NjQob3V0LCBsc24pOworCisJbG9naWNhbHJlcF93cml0ZV9u YW1lc3BhY2Uob3V0LCBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKTsKKwlyZWxuYW1lID0g UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKTsKKwlwcV9zZW5kc3RyaW5nKG91dCwgcmVs bmFtZSk7CisKKwlwcV9zZW5kaW50OChvdXQsIHRyYW5zYWN0aW9uYWwpOworCXBxX3NlbmRp bnQ2NChvdXQsIGxhc3RfdmFsdWUpOworCXBxX3NlbmRpbnQ2NChvdXQsIGxvZ19jbnQpOwor CXBxX3NlbmRpbnQ4KG91dCwgaXNfY2FsbGVkKTsKK30KKworLyoKKyAqIFJlYWQgU0VRVUVO Q0UgZnJvbSB0aGUgc3RyZWFtLgorICovCit2b2lkCitsb2dpY2FscmVwX3JlYWRfc2VxdWVu Y2UoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFNlcXVlbmNlICpzZXFkYXRhKQoreworCS8q IFhYWCBza2lwcGluZyBmbGFncyBhbmQgbHNuICovCisJcHFfZ2V0bXNnaW50KGluLCAxKTsK KwlwcV9nZXRtc2dpbnQ2NChpbik7CisKKwkvKiBSZWFkIHJlbGF0aW9uIG5hbWUgZnJvbSBz dHJlYW0gKi8KKwlzZXFkYXRhLT5uc3BuYW1lID0gcHN0cmR1cChsb2dpY2FscmVwX3JlYWRf bmFtZXNwYWNlKGluKSk7CisJc2VxZGF0YS0+c2VxbmFtZSA9IHBzdHJkdXAocHFfZ2V0bXNn c3RyaW5nKGluKSk7CisKKwlzZXFkYXRhLT50cmFuc2FjdGlvbmFsID0gcHFfZ2V0bXNnaW50 KGluLCAxKTsKKwlzZXFkYXRhLT5sYXN0X3ZhbHVlID0gcHFfZ2V0bXNnaW50NjQoaW4pOwor CXNlcWRhdGEtPmxvZ19jbnQgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJc2VxZGF0YS0+aXNf Y2FsbGVkID0gcHFfZ2V0bXNnaW50KGluLCAxKTsKK30KKwogLyoKICAqIFdyaXRlIHJlbGF0 aW9uIGRlc2NyaXB0aW9uIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogICovCkBAIC0xMjAzLDYg KzEyNTMsOCBAQCBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBh Y3Rpb24pCiAJCQlyZXR1cm4gIlNUUkVBTSBBQk9SVCI7CiAJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9QUkVQQVJFOgogCQkJcmV0dXJuICJTVFJFQU0gUFJFUEFSRSI7CisJCWNh c2UgTE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNFOgorCQkJcmV0dXJuICJTRVFVRU5DRSI7CiAJ fQogCiAJZWxvZyhFUlJPUiwgImludmFsaWQgbG9naWNhbCByZXBsaWNhdGlvbiBtZXNzYWdl IHR5cGUgXCIlY1wiIiwgYWN0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDE2NTk5NjQ1NzFjLi4zMTU2OTcwNjlkYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0x MDAsNiArMTAwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9j b3B5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKQEAgLTM1OSw2ICszNjAsMTIgQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxl c19mb3Jfc3luYyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogICoKICAqIElmIHRoZSBzeW5j aHJvbml6YXRpb24gcG9zaXRpb24gaXMgcmVhY2hlZCAoU1lOQ0RPTkUpLCB0aGVuIHRoZSB0 YWJsZSBjYW4KICAqIGJlIG1hcmtlZCBhcyBSRUFEWSBhbmQgaXMgbm8gbG9uZ2VyIHRyYWNr ZWQuCisgKgorICogWFhYIFRoaXMgbmVlZHMgdG8gaGFuZGxlIHNlcXVlbmNlcyB0b28gLSBh ZnRlciBBbHRlclN1YnNjcmlwdGlvbl9yZWZyZXNoCisgKiBzdGFydHMgY2FyaW5nIGFib3V0 IHNlcXVlbmNlcywgR2V0U3Vic2NyaXB0aW9uTm90UmVhZHlSZWxhdGlvbnMgd29uJ3QKKyAq IHJldHVybiBqdXN0IHRhYmxlcywgYW5kIHdlJ2xsIGhhdmUgdG8gc3luYyB0aGVtIGhlcmUu IE5vdCBzdXJlIGl0J3Mgd29ydGgKKyAqIGNyZWF0aW5nIGEgbmV3ICJzeW5jIiB3b3JrZXIg cGVyIHNlcXVlbmNlLCBtYXliZSB3ZSBzaG91bGQganVzdCBzeW5jIHRoZW0KKyAqIGluIHRo ZSBjdXJyZW50IHByb2Nlc3MgKGl0J3MgcHJldHR5IGxpZ2h0LXdlaWdodCkuCiAgKi8KIHN0 YXRpYyB2b2lkCiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRy IGN1cnJlbnRfbHNuKQpAQCAtOTk5LDYgKzEwMDYsOTkgQEAgY29weV90YWJsZShSZWxhdGlv biByZWwpCiAJbG9naWNhbHJlcF9yZWxfY2xvc2UocmVsbWFwZW50cnksIE5vTG9jayk7CiB9 CiAKKworCisvKgorICogRklYTUUgYWRkIGNvbW1lbnQKKyAqLworc3RhdGljIHZvaWQKK2Zl dGNoX3NlcXVlbmNlX2RhdGEoY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKKwkJCQkJ aW50NjQgKmxhc3RfdmFsdWUsIGludDY0ICpsb2dfY250LCBib29sICppc19jYWxsZWQpCit7 CisJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOworCVN0cmluZ0luZm9EYXRhIGNtZDsKKwlUdXBs ZVRhYmxlU2xvdCAqc2xvdDsKKwlPaWQJCQl0YWJsZVJvd1szXSA9IHtJTlQ4T0lELCBJTlQ4 T0lELCBCT09MT0lEfTsKKworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmlu Z0luZm8oJmNtZCwgIlNFTEVDVCBsYXN0X3ZhbHVlLCBsb2dfY250LCBpc19jYWxsZWRcbiIK KwkJCQkJICAgIiAgRlJPTSAlcyIsIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5h bWUsIHJlbG5hbWUpKTsKKworCXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4sIGNtZC5kYXRhLCAzLCB0YWJsZVJvdyk7CisJcGZyZWUoY21kLmRhdGEpOworCisJ aWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycm1zZygiY291bGQgbm90IHJlY2VpdmUgbGlzdCBvZiByZXBsaWNhdGVkIHRh YmxlcyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCXJlcy0+ZXJyKSkpOworCisJ LyogUHJvY2VzcyB0aGUgc2VxdWVuY2UuICovCisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRh YmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJd2hpbGUg KHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2Us IHNsb3QpKQorCXsKKwkJYm9vbAkJaXNudWxsOworCisJCSpsYXN0X3ZhbHVlID0gRGF0dW1H ZXRJbnQ2NChzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlz bnVsbCk7CisKKwkJKmxvZ19jbnQgPSBEYXR1bUdldEludDY0KHNsb3RfZ2V0YXR0cihzbG90 LCAyLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKworCQkqaXNfY2FsbGVkID0g RGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cihzbG90LCAzLCAmaXNudWxsKSk7CisJCUFzc2Vy dCghaXNudWxsKTsKKworCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwl9CisJRXhlY0Ryb3BT aW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVz KTsKK30KKworLyoKKyAqIENvcHkgZXhpc3RpbmcgZGF0YSBvZiBhIHNlcXVlbmNlIGZyb20g cHVibGlzaGVyLgorICoKKyAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbG9ja2luZyB0 aGUgbG9jYWwgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitjb3B5X3NlcXVlbmNlKFJl bGF0aW9uIHJlbCkKK3sKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbG1hcGVudHJ5Owor CUxvZ2ljYWxSZXBSZWxhdGlvbiBscmVsOworCUxpc3QJICAgKnF1YWwgPSBOSUw7CisJU3Ry aW5nSW5mb0RhdGEgY21kOworCWludDY0CQlsYXN0X3ZhbHVlID0gMCwKKwkJCQlsb2dfY250 ID0gMDsKKwlib29sCQlpc19jYWxsZWQgPSAwOworCisJLyogR2V0IHRoZSBwdWJsaXNoZXIg cmVsYXRpb24gaW5mby4gKi8KKwlmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhnZXRfbmFtZXNw YWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCisJCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsKSwgJmxyZWwsICZxdWFsKTsKKworCS8qIHNlcXVlbmNlcyBk b24ndCBoYXZlIHJvdyBmaWx0ZXJzICovCisJQXNzZXJ0KCFxdWFsKTsKKworCS8qIFB1dCB0 aGUgcmVsYXRpb24gaW50byByZWxtYXAuICovCisJbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRl KCZscmVsKTsKKworCS8qIE1hcCB0aGUgcHVibGlzaGVyIHJlbGF0aW9uIHRvIGxvY2FsIG9u ZS4gKi8KKwlyZWxtYXBlbnRyeSA9IGxvZ2ljYWxyZXBfcmVsX29wZW4obHJlbC5yZW1vdGVp ZCwgTm9Mb2NrKTsKKwlBc3NlcnQocmVsID09IHJlbG1hcGVudHJ5LT5sb2NhbHJlbCk7CisK KwkvKiBTdGFydCBjb3B5IG9uIHRoZSBwdWJsaXNoZXIuICovCisJaW5pdFN0cmluZ0luZm8o JmNtZCk7CisKKwlBc3NlcnQobHJlbC5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpOwor CisJZmV0Y2hfc2VxdWVuY2VfZGF0YShscmVsLm5zcG5hbWUsIGxyZWwucmVsbmFtZSwgJmxh c3RfdmFsdWUsICZsb2dfY250LCAmaXNfY2FsbGVkKTsKKworCVJlc2V0U2VxdWVuY2UyKFJl bGF0aW9uR2V0UmVsaWQocmVsKSwgbGFzdF92YWx1ZSwgbG9nX2NudCwgaXNfY2FsbGVkKTsK KworCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKHJlbG1hcGVudHJ5LCBOb0xvY2spOworfQorCisK KworCiAvKgogICogRGV0ZXJtaW5lIHRoZSB0YWJsZXN5bmMgc2xvdCBuYW1lLgogICoKQEAg LTEyNjAsMTAgKzEzNjAsMjAgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQ dHIgKm9yaWdpbl9zdGFydHBvcykKIAkJCQkJCW9yaWdpbm5hbWUpKSk7CiAJfQogCi0JLyog Tm93IGRvIHRoZSBpbml0aWFsIGRhdGEgY29weSAqLwotCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCWNvcHlfdGFibGUocmVsKTsKLQlQb3BBY3Rp dmVTbmFwc2hvdCgpOworCWlmIChnZXRfcmVsX3JlbGtpbmQoUmVsYXRpb25HZXRSZWxpZChy ZWwpKSA9PSBSRUxLSU5EX1NFUVVFTkNFKQorCXsKKwkJLyogTm93IGRvIHRoZSBpbml0aWFs IHNlcXVlbmNlIGNvcHkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJCWNvcHlfc2VxdWVuY2UocmVsKTsKKwkJUG9wQWN0aXZlU25hcHNo b3QoKTsKKwl9CisJZWxzZQorCXsKKwkJLyogTm93IGRvIHRoZSBpbml0aWFsIGRhdGEgY29w eSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK KwkJY29weV90YWJsZShyZWwpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCX0KIAogCXJl cyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICJDT01NSVQiLCAwLCBO VUxMKTsKIAlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX0NPTU1BTkQpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA1ZDlhY2M2MTczMy4u ZjRkNDVkODMxNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwpAQCAtMTQ0LDYgKzE0NCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNw YWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgpAQCAtMTA5Myw2 ICsxMDk0LDU3IEBAIGFwcGx5X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5mbyBzKQogCQkJCSBl cnJtc2dfaW50ZXJuYWwoIk9SSUdJTiBtZXNzYWdlIHNlbnQgb3V0IG9mIG9yZGVyIikpKTsK IH0KIAorLyoKKyAqIEhhbmRsZSBTRVFVRU5DRSBtZXNzYWdlLgorICovCitzdGF0aWMgdm9p ZAorYXBwbHlfaGFuZGxlX3NlcXVlbmNlKFN0cmluZ0luZm8gcykKK3sKKwlMb2dpY2FsUmVw U2VxdWVuY2UJc2VxOworCU9pZAkJCQkJcmVsaWQ7CisKKwlpZiAoaGFuZGxlX3N0cmVhbWVk X3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19TRVFVRU5DRSwgcykpCisJCXJldHVybjsK KworCWxvZ2ljYWxyZXBfcmVhZF9zZXF1ZW5jZShzLCAmc2VxKTsKKworCS8qCisJICogTm9u LXRyYW5zYWN0aW9uYWwgc2VxdWVuY2UgdXBkYXRlcyBzaG91bGQgbm90IGJlIHBhcnQgb2Yg YSByZW1vdGUKKwkgKiB0cmFuc2FjdGlvbi4gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgcnVu bmluZyB0cmFuc2FjdGlvbi4KKwkgKi8KKwlBc3NlcnQoKCFzZXEudHJhbnNhY3Rpb25hbCkg fHwgaW5fcmVtb3RlX3RyYW5zYWN0aW9uKTsKKwlBc3NlcnQoISghc2VxLnRyYW5zYWN0aW9u YWwgJiYgaW5fcmVtb3RlX3RyYW5zYWN0aW9uKSk7CisJQXNzZXJ0KCEoIXNlcS50cmFuc2Fj dGlvbmFsICYmIElzVHJhbnNhY3Rpb25TdGF0ZSgpKSk7CisKKwkvKgorCSAqIE1ha2Ugc3Vy ZSB3ZSdyZSBpbiBhIHRyYW5zYWN0aW9uIChuZWVkZWQgYnkgUmVzZXRTZXF1ZW5jZTIpLiBG b3IKKwkgKiBub24tdHJhbnNhY3Rpb25hbCB1cGRhdGVzIHdlJ3JlIGd1YXJhbnRlZWQgdG8g c3RhcnQgYSBuZXcgb25lLAorCSAqIGFuZCB3ZSdsbCBjb21taXQgaXQgYXQgdGhlIGVuZC4K KwkgKi8KKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigpOworCX0KKwor CXJlbGlkID0gUmFuZ2VWYXJHZXRSZWxpZChtYWtlUmFuZ2VWYXIoc2VxLm5zcG5hbWUsCisJ CQkJCQkJCQkJICBzZXEuc2VxbmFtZSwgLTEpLAorCQkJCQkJCSBSb3dFeGNsdXNpdmVMb2Nr LCBmYWxzZSk7CisKKwkvKiBsb2NrIHRoZSBzZXF1ZW5jZSBpbiBBY2Nlc3NFeGNsdXNpdmVM b2NrLCBhcyBleHBlY3RlZCBieSBSZXNldFNlcXVlbmNlMiAqLworCUxvY2tSZWxhdGlvbk9p ZChyZWxpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkvKiBhcHBseSB0aGUgc2VxdWVu Y2UgY2hhbmdlICovCisJUmVzZXRTZXF1ZW5jZTIocmVsaWQsIHNlcS5sYXN0X3ZhbHVlLCBz ZXEubG9nX2NudCwgc2VxLmlzX2NhbGxlZCk7CisKKwkvKgorCSAqIENvbW1pdCB0aGUgcGVy LXN0cmVhbSB0cmFuc2FjdGlvbiAod2Ugb25seSBkbyB0aGlzIHdoZW4gbm90IGluCisJICog cmVtb3RlIHRyYW5zYWN0aW9uLCBpLmUuIGZvciBub24tdHJhbnNhY3Rpb25hbCBzZXF1ZW5j ZSB1cGRhdGVzLgorCSAqLworCWlmICghaW5fcmVtb3RlX3RyYW5zYWN0aW9uKQorCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKwogLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RB UlQgbWVzc2FnZS4KICAqLwpAQCAtMjQyMSw2ICsyNDczLDEwIEBAIGFwcGx5X2Rpc3BhdGNo KFN0cmluZ0luZm8gcykKIAkJCSAqLwogCQkJYnJlYWs7CiAKKwkJY2FzZSBMT0dJQ0FMX1JF UF9NU0dfU0VRVUVOQ0U6CisJCQlhcHBseV9oYW5kbGVfc2VxdWVuY2Uocyk7CisJCQlyZXR1 cm47CisKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJUOgogCQkJYXBwbHlf aGFuZGxlX3N0cmVhbV9zdGFydChzKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggZWE1N2EwNDc3ZjAuLjYwYmJj NTI0YjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKQEAgLTUzLDYgKzUzLDEwIEBAIHN0YXRpYyB2b2lkIHBnb3V0cHV0X21lc3NhZ2Uo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCiAJCQkJCQkJIGJvb2wgdHJhbnNhY3Rp b25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCSBTaXplIHN6LCBjb25zdCBjaGFy ICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnb3V0cHV0X3NlcXVlbmNlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExv Z1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwgYm9v bCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9n X2NudCwgYm9vbCBpc19jYWxsZWQpOwogc3RhdGljIGJvb2wgcGdvdXRwdXRfb3JpZ2luX2Zp bHRlcihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCSAgIFJlcE9yaWdp bklkIG9yaWdpbl9pZCk7CiBzdGF0aWMgdm9pZCBwZ291dHB1dF9iZWdpbl9wcmVwYXJlX3R4 bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCkBAIC0yMDgsNiArMjEyLDcgQEAgX1BH X291dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5j aGFuZ2VfY2IgPSBwZ291dHB1dF9jaGFuZ2U7CiAJY2ItPnRydW5jYXRlX2NiID0gcGdvdXRw dXRfdHJ1bmNhdGU7CiAJY2ItPm1lc3NhZ2VfY2IgPSBwZ291dHB1dF9tZXNzYWdlOworCWNi LT5zZXF1ZW5jZV9jYiA9IHBnb3V0cHV0X3NlcXVlbmNlOwogCWNiLT5jb21taXRfY2IgPSBw Z291dHB1dF9jb21taXRfdHhuOwogCiAJY2ItPmJlZ2luX3ByZXBhcmVfY2IgPSBwZ291dHB1 dF9iZWdpbl9wcmVwYXJlX3R4bjsKQEAgLTIyNCw2ICsyMjksNyBAQCBfUEdfb3V0cHV0X3Bs dWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21t aXRfY2IgPSBwZ291dHB1dF9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hhbmdlX2Ni ID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBnb3V0cHV0 X21lc3NhZ2U7CisJY2ItPnN0cmVhbV9zZXF1ZW5jZV9jYiA9IHBnb3V0cHV0X3NlcXVlbmNl OwogCWNiLT5zdHJlYW1fdHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90cnVuY2F0ZTsKIAkvKiB0 cmFuc2FjdGlvbiBzdHJlYW1pbmcgLSB0d28tcGhhc2UgY29tbWl0ICovCiAJY2ItPnN0cmVh bV9wcmVwYXJlX2NiID0gcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuOwpAQCAtMjM3LDYg KzI0Myw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0 cHV0RGF0YSAqZGF0YSkKIAlib29sCQlwdWJsaWNhdGlvbl9uYW1lc19naXZlbiA9IGZhbHNl OwogCWJvb2wJCWJpbmFyeV9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIAlib29sCQltZXNzYWdl c19vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKKwlib29sCQlzZXF1ZW5jZXNfb3B0aW9uX2dpdmVu ID0gZmFsc2U7CiAJYm9vbAkJc3RyZWFtaW5nX2dpdmVuID0gZmFsc2U7CiAJYm9vbAkJdHdv X3BoYXNlX29wdGlvbl9naXZlbiA9IGZhbHNlOwogCkBAIC0yNDQsNiArMjUxLDcgQEAgcGFy c2Vfb3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRh KQogCWRhdGEtPnN0cmVhbWluZyA9IGZhbHNlOwogCWRhdGEtPm1lc3NhZ2VzID0gZmFsc2U7 CiAJZGF0YS0+dHdvX3BoYXNlID0gZmFsc2U7CisJZGF0YS0+c2VxdWVuY2VzID0gdHJ1ZTsK IAogCWZvcmVhY2gobGMsIG9wdGlvbnMpCiAJewpAQCAtMzEyLDYgKzMyMCwxNiBAQCBwYXJz ZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRhdGEp CiAKIAkJCWRhdGEtPm1lc3NhZ2VzID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CiAJCX0KKwkJ ZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic2VxdWVuY2VzIikgPT0gMCkKKwkJ eworCQkJaWYgKHNlcXVlbmNlc19vcHRpb25fZ2l2ZW4pCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2co ImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCXNlcXVlbmNlc19v cHRpb25fZ2l2ZW4gPSB0cnVlOworCisJCQlkYXRhLT5zZXF1ZW5jZXMgPSBkZWZHZXRCb29s ZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJz dHJlYW1pbmciKSA9PSAwKQogCQl7CiAJCQlpZiAoc3RyZWFtaW5nX2dpdmVuKQpAQCAtMTQ0 MCw2ICsxNDU4LDUxIEBAIHBnb3V0cHV0X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4 LCB0cnVlKTsKIH0KIAorc3RhdGljIHZvaWQKK3Bnb3V0cHV0X3NlcXVlbmNlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExv Z1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCB0 cmFuc2FjdGlvbmFsLAorCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9nX2NudCwg Ym9vbCBpc19jYWxsZWQpCit7CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0 YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlUcmFuc2FjdGlvbklkIHhpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCVJlbGF0aW9uU3luY0VudHJ5ICpyZWxlbnRyeTsK KworCWlmICghZGF0YS0+c2VxdWVuY2VzKQorCQlyZXR1cm47CisKKwlpZiAoIWlzX3B1Ymxp c2hhYmxlX3JlbGF0aW9uKHJlbGF0aW9uKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBSZW1l bWJlciB0aGUgeGlkIGZvciB0aGUgbWVzc2FnZSBpbiBzdHJlYW1pbmcgbW9kZS4gU2VlCisJ ICogcGdvdXRwdXRfY2hhbmdlLgorCSAqLworCWlmIChpbl9zdHJlYW1pbmcpCisJCXhpZCA9 IHR4bi0+eGlkOworCisJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgcmVs YXRpb24pOworCisJLyoKKwkgKiBGaXJzdCBjaGVjayB0aGUgc2VxdWVuY2UgZmlsdGVyLgor CSAqCisJICogV2UgaGFuZGxlIGp1c3QgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNF IGhlcmUuCisJICovCisJaWYgKCFyZWxlbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSkK KwkJcmV0dXJuOworCisJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CisJ bG9naWNhbHJlcF93cml0ZV9zZXF1ZW5jZShjdHgtPm91dCwKKwkJCQkJCQkgIHJlbGF0aW9u LAorCQkJCQkJCSAgeGlkLAorCQkJCQkJCSAgc2VxdWVuY2VfbHNuLAorCQkJCQkJCSAgdHJh bnNhY3Rpb25hbCwKKwkJCQkJCQkgIGxhc3RfdmFsdWUsCisJCQkJCQkJICBsb2dfY250LAor CQkJCQkJCSAgaXNfY2FsbGVkKTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwor fQorCiAvKgogICogQ3VycmVudGx5IHdlIGFsd2F5cyBmb3J3YXJkLgogICovCkBAIC0xNzI1 LDcgKzE3ODgsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBS ZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFsc2U7CiAJCWVu dHJ5LT5zdHJlYW1lZF90eG5zID0gTklMOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNl cnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQotCQkJZW50cnktPnB1YmFjdGlv bnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsK KwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1 YnRydW5jYXRlID0KKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlID0gZmFsc2U7 CiAJCWVudHJ5LT5uZXdfc2xvdCA9IE5VTEw7CiAJCWVudHJ5LT5vbGRfc2xvdCA9IE5VTEw7 CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXplb2YoZW50cnktPmV4cHJzdGF0 ZSkpOwpAQCAtMTc1MSw2ICsxODE1LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWJvb2wJCWFtX3BhcnRpdGlvbiA9 IGdldF9yZWxfcmVsaXNwYXJ0aXRpb24ocmVsaWQpOwogCQljaGFyCQlyZWxraW5kID0gZ2V0 X3JlbF9yZWxraW5kKHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5J TDsKKwkJYm9vbAkJaXNfc2VxdWVuY2UgPSAoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSA9PSBS RUxLSU5EX1NFUVVFTkNFKTsKIAogCQkvKiBSZWxvYWQgcHVibGljYXRpb25zIGlmIG5lZWRl ZCBiZWZvcmUgdXNlLiAqLwogCQlpZiAoIXB1YmxpY2F0aW9uc192YWxpZCkKQEAgLTE3Nzks NiArMTg0NCw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uKQogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPSBmYWxz ZTsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZmFsc2U7CiAJCWVudHJ5LT5w dWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCWVudHJ5LT5wdWJhY3Rpb25zLnB1 YnNlcXVlbmNlID0gZmFsc2U7CiAKIAkJLyoKIAkJICogVHVwbGUgc2xvdHMgY2xlYW51cHMu IChXaWxsIGJlIHJlYnVpbHQgbGF0ZXIgaWYgbmVlZGVkKS4KQEAgLTE4MTUsMTIgKzE4ODEs MjMgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24g cmVsYXRpb24pCiAJCQlQdWJsaWNhdGlvbiAqcHViID0gbGZpcnN0KGxjKTsKIAkJCWJvb2wJ CXB1Ymxpc2ggPSBmYWxzZTsKIAotCQkJaWYgKHB1Yi0+YWxsdGFibGVzKQorCQkJaWYgKHB1 Yi0+YWxsdGFibGVzICYmICghaXNfc2VxdWVuY2UpKQogCQkJewogCQkJCXB1Ymxpc2ggPSB0 cnVlOwogCQkJCWlmIChwdWItPnB1YnZpYXJvb3QgJiYgYW1fcGFydGl0aW9uKQogCQkJCQlw dWJsaXNoX2FzX3JlbGlkID0gbGxhc3Rfb2lkKGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJl bGlkKSk7CiAJCQl9CisJCQllbHNlIGlmIChwdWItPmFsbHNlcXVlbmNlcyAmJiBpc19zZXF1 ZW5jZSkKKwkJCXsKKwkJCQlwdWJsaXNoID0gdHJ1ZTsKKwkJCX0KKworCQkJLyogaWYgYSBz ZXF1ZW5jZSwganVzdCBjcm9zcy1jaGVjayB0aGUgbGlzdCBvZiBwdWJsaWNhdGlvbnMgKi8K KwkJCWlmICghcHVibGlzaCAmJiBpc19zZXF1ZW5jZSkKKwkJCXsKKwkJCQlpZiAobGlzdF9t ZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpKQorCQkJCQlwdWJsaXNoID0gdHJ1ZTsKKwkJ CX0KIAogCQkJaWYgKCFwdWJsaXNoKQogCQkJewpAQCAtMTg2Niw2ICsxOTQzLDcgQEAgZ2V0 X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24p CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5w dWJ1cGRhdGU7CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlIHw9IHB1Yi0+cHVi YWN0aW9ucy5wdWJkZWxldGU7CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUg fD0gcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlOworCQkJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YnNlcXVlbmNlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZTsKIAogCQkJCXJl bF9wdWJsaWNhdGlvbnMgPSBsYXBwZW5kKHJlbF9wdWJsaWNhdGlvbnMsIHB1Yik7CiAJCQl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCBmY2NmZmNlNTcyOS4uYzI5 ZDgyMjMxM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTU4Nyw3 ICs1NTg3LDE1IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVs YXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJCQkJCQkJCQkJIEdldFNjaGVt YVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwogCQl9CiAJfQotCXB1Ym9pZHMgPSBsaXN0X2Nv bmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsK KworCS8qCisJICogQ29uc2lkZXIgYWxzbyBGT1IgQUxMIFRBQkxFUyBhbmQgRk9SIEFMTCBT RVFVRU5DRVMgcHVibGljYXRpb25zLAorCSAqIGRlcGVuZGluZyBvbiB0aGUgcmVsa2luZCBv ZiB0aGUgcmVsYXRpb24uCisJICovCisJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9v aWQocHVib2lkcywgR2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25zKCkpOworCWVsc2UKKwkJ cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0QWxsVGFibGVz UHVibGljYXRpb25zKCkpOwogCiAJZm9yZWFjaChsYywgcHVib2lkcykKIAl7CkBAIC01NjA2 LDYgKzU2MTQsNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJl bGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCXB1YmRlc2MtPnB1YmFjdGlv bnMucHVidXBkYXRlIHw9IHB1YmZvcm0tPnB1YnVwZGF0ZTsKIAkJcHViZGVzYy0+cHViYWN0 aW9ucy5wdWJkZWxldGUgfD0gcHViZm9ybS0+cHViZGVsZXRlOwogCQlwdWJkZXNjLT5wdWJh Y3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1YmZvcm0tPnB1YnRydW5jYXRlOworCQlwdWJkZXNj LT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlIHw9IHB1YmZvcm0tPnB1YnNlcXVlbmNlOwogCiAJ CS8qCiAJCSAqIENoZWNrIGlmIGFsbCBjb2x1bW5zIHJlZmVyZW5jZWQgaW4gdGhlIGZpbHRl ciBleHByZXNzaW9uIGFyZSBwYXJ0IG9mCkBAIC01NjMxLDYgKzU2NDAsOCBAQCBSZWxhdGlv bkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRl c2MgKnB1YmRlc2MpCiAJCSAqIElmIHdlIGtub3cgZXZlcnl0aGluZyBpcyByZXBsaWNhdGVk IGFuZCB0aGUgcm93IGZpbHRlciBpcyBpbnZhbGlkCiAJCSAqIGZvciB1cGRhdGUgYW5kIGRl bGV0ZSwgdGhlcmUgaXMgbm8gcG9pbnQgdG8gY2hlY2sgZm9yIG90aGVyCiAJCSAqIHB1Ymxp Y2F0aW9ucy4KKwkJICoKKwkJICogWFhYIFdlIGlnbm9yZSBzZXF1ZW5jZXMgaGVyZSwgYmVj YXVzZSB0aG9zZSBkb24ndCB1c2Ugcm93IGZpbHRlcnMuCiAJCSAqLwogCQlpZiAocHViZGVz Yy0+cHViYWN0aW9ucy5wdWJpbnNlcnQgJiYgcHViZGVzYy0+cHViYWN0aW9ucy5wdWJ1cGRh dGUgJiYKIAkJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHViZGVsZXRlICYmIHB1YmRlc2MtPnB1 YmFjdGlvbnMucHVidHJ1bmNhdGUgJiYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3N5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5j CmluZGV4IGY0ZTc4MTlmMWUyLi43NjNhYWM4MTU5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9zeXNjYWNoZS5jCkBAIC02MzAsMTIgKzYzMCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJNjQKIAl9LAogCXtQdWJsaWNhdGlvbk5h bWVzcGFjZVJlbGF0aW9uSWQsCS8qIFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQICovCi0JCVB1 YmxpY2F0aW9uTmFtZXNwYWNlUG5uc3BpZFBucHViaWRJbmRleElkLAotCQkyLAorCQlQdWJs aWNhdGlvbk5hbWVzcGFjZVBubnNwaWRQbnB1YmlkU2VxSW5kZXhJZCwKKwkJMywKIAkJewog CQkJQW51bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5uc3BpZCwKIAkJCUFudW1fcGdf cHVibGljYXRpb25fbmFtZXNwYWNlX3BucHViaWQsCi0JCQkwLAorCQkJQW51bV9wZ19wdWJs aWNhdGlvbl9uYW1lc3BhY2VfcG5zZXF1ZW5jZXMsCiAJCQkwCiAJCX0sCiAJCTY0CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCBlNjlkY2Y4YTQ4NC4uZWY4YzZlNDNjNjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwpAQCAtMzc4OCwxMCArMzc4OCwxMiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91 dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaW50CQkJaV9wdWJuYW1lOwogCWludAkJCWlf cHVib3duZXI7CiAJaW50CQkJaV9wdWJhbGx0YWJsZXM7CisJaW50CQkJaV9wdWJhbGxzZXF1 ZW5jZXM7CiAJaW50CQkJaV9wdWJpbnNlcnQ7CiAJaW50CQkJaV9wdWJ1cGRhdGU7CiAJaW50 CQkJaV9wdWJkZWxldGU7CiAJaW50CQkJaV9wdWJ0cnVuY2F0ZTsKKwlpbnQJCQlpX3B1YnNl cXVlbmNlOwogCWludAkJCWlfcHVidmlhcm9vdDsKIAlpbnQJCQlpLAogCQkJCW50dXBzOwpA QCAtMzgwNywyMyArMzgwOSwyOSBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwg aW50ICpudW1QdWJsaWNhdGlvbnMpCiAJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAKIAkv KiBHZXQgdGhlIHB1YmxpY2F0aW9ucy4gKi8KLQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxMzAwMDApCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCQlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9p ZCwgcC5wdWJuYW1lLCAiCisJCQkJCQkgICJwLnB1Ym93bmVyLCAiCisJCQkJCQkgICJwLnB1 YmFsbHRhYmxlcywgcC5wdWJhbGxzZXF1ZW5jZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0 ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIHAucHVic2VxdWVuY2UsIHAucHVidmlh cm9vdCAiCisJCQkJCQkgICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKKwllbHNlIGlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksCiAJCQkJCQkgICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgog CQkJCQkJICAicC5wdWJvd25lciwgIgotCQkJCQkJICAicC5wdWJhbGx0YWJsZXMsIHAucHVi aW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIHAucHVi dmlhcm9vdCAiCisJCQkJCQkgICJwLnB1YmFsbHRhYmxlcywgZmFsc2UgQVMgcC5wdWJhbGxz ZXF1ZW5jZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVi dHJ1bmNhdGUsIGZhbHNlIEFTIHAucHVic2VxdWVuY2UsIHAucHVidmlhcm9vdCAiCiAJCQkJ CQkgICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNlIGlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDExMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkg ICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJICAicC5w dWJvd25lciwgIgotCQkJCQkJICAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1 YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIEFTIHB1YnZpYXJv b3QgIgorCQkJCQkJICAicC5wdWJhbGx0YWJsZXMsIGZhbHNlIEFTIHAucHViYWxsc2VxdWVu Y2VzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5j YXRlLCBmYWxzZSBBUyBwLnB1YnNlcXVlbmNlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKIAkJ CQkJCSAgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksCiAJCQkJCQkgICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVi bmFtZSwgIgogCQkJCQkJICAicC5wdWJvd25lciwgIgotCQkJCQkJICAicC5wdWJhbGx0YWJs ZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNlIEFTIHB1 YnRydW5jYXRlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCSAgInAucHViYWxsdGFi bGVzLCBmYWxzZSBBUyBwLnB1YmFsbHNlcXVlbmNlcywgcC5wdWJpbnNlcnQsIHAucHVidXBk YXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMgcHVidHJ1bmNhdGUsIGZhbHNlIEFTIHAucHVi c2VxdWVuY2UsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgogCQkJCQkJICAiRlJPTSBwZ19wdWJs aWNhdGlvbiBwIik7CiAKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRh dGEsIFBHUkVTX1RVUExFU19PSyk7CkBAIC0zODM1LDEwICszODQzLDEyIEBAIGdldFB1Ymxp Y2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlpX3B1Ym5h bWUgPSBQUWZudW1iZXIocmVzLCAicHVibmFtZSIpOwogCWlfcHVib3duZXIgPSBQUWZudW1i ZXIocmVzLCAicHVib3duZXIiKTsKIAlpX3B1YmFsbHRhYmxlcyA9IFBRZm51bWJlcihyZXMs ICJwdWJhbGx0YWJsZXMiKTsKKwlpX3B1YmFsbHNlcXVlbmNlcyA9IFBRZm51bWJlcihyZXMs ICJwdWJhbGxzZXF1ZW5jZXMiKTsKIAlpX3B1Ymluc2VydCA9IFBRZm51bWJlcihyZXMsICJw dWJpbnNlcnQiKTsKIAlpX3B1YnVwZGF0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJ1cGRhdGUi KTsKIAlpX3B1YmRlbGV0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJkZWxldGUiKTsKIAlpX3B1 YnRydW5jYXRlID0gUFFmbnVtYmVyKHJlcywgInB1YnRydW5jYXRlIik7CisJaV9wdWJzZXF1 ZW5jZSA9IFBRZm51bWJlcihyZXMsICJwdWJzZXF1ZW5jZSIpOwogCWlfcHVidmlhcm9vdCA9 IFBRZm51bWJlcihyZXMsICJwdWJ2aWFyb290Iik7CiAKIAlwdWJpbmZvID0gcGdfbWFsbG9j KG50dXBzICogc2l6ZW9mKFB1YmxpY2F0aW9uSW5mbykpOwpAQCAtMzg1NCw2ICszODY0LDgg QEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25z KQogCQlwdWJpbmZvW2ldLnJvbG5hbWUgPSBnZXRSb2xlTmFtZShQUWdldHZhbHVlKHJlcywg aSwgaV9wdWJvd25lcikpOwogCQlwdWJpbmZvW2ldLnB1YmFsbHRhYmxlcyA9CiAJCQkoc3Ry Y21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmFsbHRhYmxlcyksICJ0IikgPT0gMCk7CisJ CXB1YmluZm9baV0ucHViYWxsc2VxdWVuY2VzID0KKwkJCShzdHJjbXAoUFFnZXR2YWx1ZShy ZXMsIGksIGlfcHViYWxsc2VxdWVuY2VzKSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5w dWJpbnNlcnQgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJpbnNlcnQp LCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YnVwZGF0ZSA9CkBAIC0zODYyLDYgKzM4 NzQsOCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNh dGlvbnMpCiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmRlbGV0ZSksICJ0 IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHVidHJ1bmNhdGUgPQogCQkJKHN0cmNtcChQUWdl dHZhbHVlKHJlcywgaSwgaV9wdWJ0cnVuY2F0ZSksICJ0IikgPT0gMCk7CisJCXB1YmluZm9b aV0ucHVic2VxdWVuY2UgPQorCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJz ZXF1ZW5jZSksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHVidmlhcm9vdCA9CiAJCQko c3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnZpYXJvb3QpLCAidCIpID09IDApOwog CkBAIC0zOTA3LDYgKzM5MjEsOSBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwg Y29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKQogCWlmIChwdWJpbmZvLT5wdWJhbGx0 YWJsZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgVEFCTEVT Iik7CiAKKwlpZiAocHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFNFUVVFTkNFUyIpOworCiAJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIgV0lUSCAocHVibGlzaCA9ICciKTsKIAlpZiAocHViaW5mby0+ cHViaW5zZXJ0KQogCXsKQEAgLTM5NDEsNiArMzk1OCwxNSBAQCBkdW1wUHVibGljYXRpb24o QXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKQogCQlmaXJz dCA9IGZhbHNlOwogCX0KIAorCWlmIChwdWJpbmZvLT5wdWJzZXF1ZW5jZSkKKwl7CisJCWlm ICghZmlyc3QpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJzZXF1ZW5jZSIpOworCQlmaXJzdCA9IGZh bHNlOworCX0KKwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiJyIpOwogCiAJaWYg KHB1YmluZm8tPnB1YnZpYXJvb3QpCkBAIC0zOTg3LDYgKzQwMTMsNyBAQCBnZXRQdWJsaWNh dGlvbk5hbWVzcGFjZXMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX29pZDsKIAlpbnQJCQlp X3BucHViaWQ7CiAJaW50CQkJaV9wbm5zcGlkOworCWludAkJCWlfcG5zZXF1ZW5jZXM7CiAJ aW50CQkJaSwKIAkJCQlqLAogCQkJCW50dXBzOwpAQCAtMzk5OCw3ICs0MDI1LDcgQEAgZ2V0 UHVibGljYXRpb25OYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAKIAkvKiBDb2xsZWN0IGFs bCBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCiAJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksCi0JCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwbnB1YmlkLCBwbm5z cGlkICIKKwkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBucHViaWQsIHBubnNwaWQs IHBuc2VxdWVuY2VzICIKIAkJCQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u X25hbWVzcGFjZSIpOwogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0 YSwgUEdSRVNfVFVQTEVTX09LKTsKIApAQCAtNDAwOCw2ICs0MDM1LDcgQEAgZ2V0UHVibGlj YXRpb25OYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAJaV9vaWQgPSBQUWZudW1iZXIocmVz LCAib2lkIik7CiAJaV9wbnB1YmlkID0gUFFmbnVtYmVyKHJlcywgInBucHViaWQiKTsKIAlp X3BubnNwaWQgPSBQUWZudW1iZXIocmVzLCAicG5uc3BpZCIpOworCWlfcG5zZXF1ZW5jZXMg PSBQUWZudW1iZXIocmVzLCAicG5zZXF1ZW5jZXMiKTsKIAogCS8qIHRoaXMgYWxsb2NhdGlv biBtYXkgYmUgbW9yZSB0aGFuIHdlIG5lZWQgKi8KIAlwdWJzaW5mbyA9IHBnX21hbGxvYyhu dHVwcyAqIHNpemVvZihQdWJsaWNhdGlvblNjaGVtYUluZm8pKTsKQEAgLTQwMTcsNiArNDA0 NSw3IEBAIGdldFB1YmxpY2F0aW9uTmFtZXNwYWNlcyhBcmNoaXZlICpmb3V0KQogCXsKIAkJ T2lkCQkJcG5wdWJpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9wbnB1YmlkKSk7 CiAJCU9pZAkJCXBubnNwaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfcG5uc3Bp ZCkpOworCQlib29sCQlwbnNlcXVlbmNlcyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGks IGlfcG5zZXF1ZW5jZXMpLCAidCIpID09IDApOwogCQlQdWJsaWNhdGlvbkluZm8gKnB1Ymlu Zm87CiAJCU5hbWVzcGFjZUluZm8gKm5zcGluZm87CiAKQEAgLTQwNDgsNiArNDA3Nyw3IEBA IGdldFB1YmxpY2F0aW9uTmFtZXNwYWNlcyhBcmNoaXZlICpmb3V0KQogCQlwdWJzaW5mb1tq XS5kb2JqLm5hbWUgPSBuc3BpbmZvLT5kb2JqLm5hbWU7CiAJCXB1YnNpbmZvW2pdLnB1Ymxp Y2F0aW9uID0gcHViaW5mbzsKIAkJcHVic2luZm9bal0ucHVic2NoZW1hID0gbnNwaW5mbzsK KwkJcHVic2luZm9bal0ucHVic2VxdWVuY2VzID0gcG5zZXF1ZW5jZXM7CiAKIAkJLyogRGVj aWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlUHVi bGljYXRpb25PYmplY3QoJihwdWJzaW5mb1tqXS5kb2JqKSwgZm91dCk7CkBAIC00MTgxLDcg KzQyMTEsMTEgQEAgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNv bnN0IFB1YmxpY2F0aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCiAJcXVlcnkgPSBjcmVhdGVQ UUV4cEJ1ZmZlcigpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRFUiBQVUJM SUNBVElPTiAlcyAiLCBmbXRJZChwdWJpbmZvLT5kb2JqLm5hbWUpKTsKLQlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwgIkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSAlcztcbiIsIGZtdElk KHNjaGVtYWluZm8tPmRvYmoubmFtZSkpOworCisJaWYgKHB1YnNpbmZvLT5wdWJzZXF1ZW5j ZXMpCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUREIEFMTCBTRVFVRU5DRVMgSU4g U0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CisJZWxzZQor CQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSAl cztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkpOwogCiAJLyoKIAkgKiBUaGVy ZSBpcyBubyBwb2ludCBpbiBjcmVhdGluZyBkcm9wIHF1ZXJ5IGFzIHRoZSBkcm9wIGlzIGRv bmUgYnkgc2NoZW1hCkBAIC00MjE0LDYgKzQyNDgsNyBAQCBkdW1wUHVibGljYXRpb25UYWJs ZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvKQog CVRhYmxlSW5mbyAgKnRiaW5mbyA9IHB1YnJpbmZvLT5wdWJ0YWJsZTsKIAlQUUV4cEJ1ZmZl ciBxdWVyeTsKIAljaGFyCSAgICp0YWc7CisJY2hhcgkgICAqZGVzY3JpcHRpb247CiAKIAkv KiBEbyBub3RoaW5nIGluIGRhdGEtb25seSBkdW1wICovCiAJaWYgKGRvcHQtPmRhdGFPbmx5 KQpAQCAtNDIyMywxMCArNDI1OCwyMiBAQCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZl ICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvKQogCiAJcXVlcnkg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCi0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJB TFRFUiBQVUJMSUNBVElPTiAlcyBBREQgVEFCTEUgT05MWSIsCi0JCQkJCSAgZm10SWQocHVi aW5mby0+ZG9iai5uYW1lKSk7CisJaWYgKHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRFUiBQVUJMSUNB VElPTiAlcyBBREQgU0VRVUVOQ0UiLAorCQkJCQkJICBmbXRJZChwdWJpbmZvLT5kb2JqLm5h bWUpKTsKKwkJZGVzY3JpcHRpb24gPSAiUFVCTElDQVRJT04gU0VRVUVOQ0UiOworCX0KKwll bHNlCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFMVEVSIFBVQkxJQ0FUSU9O ICVzIEFERCBUQUJMRSBPTkxZIiwKKwkJCQkJCSAgZm10SWQocHViaW5mby0+ZG9iai5uYW1l KSk7CisJCWRlc2NyaXB0aW9uID0gIlBVQkxJQ0FUSU9OIFRBQkxFIjsKKwl9CisKIAlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAlcyIsCiAJCQkJCSAgZm10UXVhbGlmaWVkRHVtcGFi bGUodGJpbmZvKSk7CisKIAlpZiAocHVicmluZm8tPnB1YnJlbHF1YWwpCiAJewogCQkvKgpA QCAtNDI0OSw3ICs0Mjk2LDcgQEAgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91 dCwgY29uc3QgUHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5mbykKIAkJCQkJIEFSQ0hJVkVf T1BUUygudGFnID0gdGFnLAogCQkJCQkJCQkgIC5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmou bmFtZXNwYWNlLT5kb2JqLm5hbWUsCiAJCQkJCQkJCSAgLm93bmVyID0gcHViaW5mby0+cm9s bmFtZSwKLQkJCQkJCQkJICAuZGVzY3JpcHRpb24gPSAiUFVCTElDQVRJT04gVEFCTEUiLAor CQkJCQkJCQkgIC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLAogCQkJCQkJCQkgIC5zZWN0 aW9uID0gU0VDVElPTl9QT1NUX0RBVEEsCiAJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBxdWVy eS0+ZGF0YSkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA5OTdhM2I2MDcxOS4uODczOWFmNjkx MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjE1LDEwICs2MTUsMTIgQEAgdHlwZWRlZiBzdHJ1 Y3QgX1B1YmxpY2F0aW9uSW5mbwogCUR1bXBhYmxlT2JqZWN0IGRvYmo7CiAJY29uc3QgY2hh ciAqcm9sbmFtZTsKIAlib29sCQlwdWJhbGx0YWJsZXM7CisJYm9vbAkJcHViYWxsc2VxdWVu Y2VzOwogCWJvb2wJCXB1Ymluc2VydDsKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHVi ZGVsZXRlOwogCWJvb2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1YnNlcXVlbmNlOwogCWJv b2wJCXB1YnZpYXJvb3Q7CiB9IFB1YmxpY2F0aW9uSW5mbzsKIApAQCAtNjQzLDYgKzY0NSw3 IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvblNjaGVtYUluZm8KIAlEdW1wYWJsZU9i amVjdCBkb2JqOwogCVB1YmxpY2F0aW9uSW5mbyAqcHVibGljYXRpb247CiAJTmFtZXNwYWNl SW5mbyAqcHVic2NoZW1hOworCWJvb2wgcHVic2VxdWVuY2VzOwogfSBQdWJsaWNhdGlvblNj aGVtYUluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGRkMDY1 Yzc1OGZhLi4zODBjOTI5ZjgxNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAy X3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAg LTIzNTcsNyArMjM1Nyw3IEBAIG15ICV0ZXN0cyA9ICgKIAkJY3JlYXRlX29yZGVyID0+IDUw LAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxOycsCiAJCXJl Z2V4cCAgICAgICA9PiBxci9eCi0JCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxIFdJVEgg KHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJ XFFDUkVBVEUgUFVCTElDQVRJT04gcHViMSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBk YXRlLCBkZWxldGUsIHRydW5jYXRlLCBzZXF1ZW5jZScpO1xFCiAJCQkveG0sCiAJCWxpa2Ug PT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCkBAIC0y Mzc3LDcgKzIzNzcsMTggQEAgbXkgJXRlc3RzID0gKAogCQljcmVhdGVfb3JkZXIgPT4gNTAs CiAJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjM7JywKIAkJcmVn ZXhwID0+IHFyL14KLQkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjMgV0lUSCAocHVibGlz aCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQlcUUNSRUFU RSBQVUJMSUNBVElPTiBwdWIzIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRl bGV0ZSwgdHJ1bmNhdGUsIHNlcXVlbmNlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVm dWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKworCSdDUkVBVEUg UFVCTElDQVRJT04gcHViNCcgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAsCisJCWNyZWF0 ZV9zcWwgICA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjQKKwkJCQkJCSBGT1IgQUxMIFNF UVVFTkNFUworCQkJCQkJIFdJVEggKHB1Ymxpc2ggPSBcJ1wnKTsnLAorCQlyZWdleHAgPT4g cXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViNCBGT1IgQUxMIFNFUVVFTkNFUyBX SVRIIChwdWJsaXNoID0gJycpO1xFCiAJCQkveG0sCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5z LCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCkBAIC0yNDM5LDYgKzI0NTAsMjcg QEAgbXkgJXRlc3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0 X2RhdGEgPT4gMSwgfSwKIAl9LAogCisJJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIEFM TCBTRVFVRU5DRVMgSU4gU0NIRU1BIGR1bXBfdGVzdCcgPT4geworCQljcmVhdGVfb3JkZXIg PT4gNTEsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQUxURVIgUFVCTElDQVRJT04gcHViMyBB REQgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0OycsCisJCXJlZ2V4cCA9PiBx ci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIEFMTCBTRVFVRU5DRVMgSU4g U0NIRU1BIGR1bXBfdGVzdDtcRQorCQkJL3htLAorCQlsaWtlICAgPT4geyAlZnVsbF9ydW5z LCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geyBleGNsdWRlX2R1 bXBfdGVzdF9zY2hlbWEgPT4gMSwgfSwKKwl9LAorCisJJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1 YjMgQUREIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1YmxpYycgPT4geworCQljcmVhdGVf b3JkZXIgPT4gNTIsCisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQUxURVIgUFVCTElDQVRJT04g cHViMyBBREQgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVibGljOycsCisJCXJlZ2V4cCA9 PiBxci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIEFMTCBTRVFVRU5DRVMg SU4gU0NIRU1BIHB1YmxpYztcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywg c2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBTQ0hFTUEgcHVi bGljJyA9PiB7CiAJCXJlZ2V4cCA9PiBxci9eQ1JFQVRFIFNDSEVNQSBwdWJsaWM7L20sCiAK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKaW5kZXggZTMzODI5MzNkOTguLmMwZGY3MGYwZjlhIDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpA QCAtMTYyMSwyOCArMTYyMSwxOSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBj aGFyICpzY2hlbWFuYW1lLAogCWlmICh0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFKQogCXsKIAkJUEdyZXN1bHQgICAqcmVzdWx0ID0gTlVMTDsKLQkJcHJpbnRRdWVy eU9wdCBteW9wdCA9IHBzZXQucG9wdDsKLQkJY2hhcgkgICAqZm9vdGVyc1syXSA9IHtOVUxM LCBOVUxMfTsKIAogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCiAJCXsKIAkJCXBy aW50ZlBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cuZm9y bWF0X3R5cGUoc2VxdHlwaWQsIE5VTEwpIEFTIFwiJXNcIixcbiIKLQkJCQkJCQkgICIgICAg ICAgc2Vxc3RhcnQgQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAgIiAgICAgICBzZXFtaW4gQVMg XCIlc1wiLFxuIgotCQkJCQkJCSAgIiAgICAgICBzZXFtYXggQVMgXCIlc1wiLFxuIgotCQkJ CQkJCSAgIiAgICAgICBzZXFpbmNyZW1lbnQgQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAgIiAg ICAgICBDQVNFIFdIRU4gc2VxY3ljbGUgVEhFTiAnJXMnIEVMU0UgJyVzJyBFTkQgQVMgXCIl c1wiLFxuIgotCQkJCQkJCSAgIiAgICAgICBzZXFjYWNoZSBBUyBcIiVzXCJcbiIsCi0JCQkJ CQkJICBnZXR0ZXh0X25vb3AoIlR5cGUiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3Rh cnQiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiTWluaW11bSIpLAotCQkJCQkJCSAgZ2V0 dGV4dF9ub29wKCJNYXhpbXVtIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkluY3JlbWVu dCIpLAorCQkJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHNlcXR5cGlk LCBOVUxMKSxcbiIKKwkJCQkJCQkgICIgICAgICAgc2Vxc3RhcnQsXG4iCisJCQkJCQkJICAi ICAgICAgIHNlcW1pbixcbiIKKwkJCQkJCQkgICIgICAgICAgc2VxbWF4LFxuIgorCQkJCQkJ CSAgIiAgICAgICBzZXFpbmNyZW1lbnQsXG4iCisJCQkJCQkJICAiICAgICAgIENBU0UgV0hF TiBzZXFjeWNsZSBUSEVOICclcycgRUxTRSAnJXMnIEVORCxcbiIKKwkJCQkJCQkgICIgICAg ICAgc2VxY2FjaGVcbiIsCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoInllcyIpLAotCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJubyIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJDeWNsZXM/ IiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkNhY2hlIikpOworCQkJCQkJCSAgZ2V0dGV4 dF9ub29wKCJubyIpKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX3NlcXVlbmNlXG4iCiAJCQkJCQkJICAiV0hFUkUgc2VxcmVs aWQgPSAnJXMnOyIsCkBAIC0xNjUxLDIyICsxNjQyLDE1IEBAIGRlc2NyaWJlT25lVGFibGVE ZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCWVsc2UKIAkJewogCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICJTRUxFQ1QgJ2JpZ2ludCcgQVMgXCIlc1wi LFxuIgotCQkJCQkJCSAgIiAgICAgICBzdGFydF92YWx1ZSBBUyBcIiVzXCIsXG4iCi0JCQkJ CQkJICAiICAgICAgIG1pbl92YWx1ZSBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAg IG1heF92YWx1ZSBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIGluY3JlbWVudF9i eSBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIENBU0UgV0hFTiBpc19jeWNsZWQg VEhFTiAnJXMnIEVMU0UgJyVzJyBFTkQgQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAgIiAgICAg ICBjYWNoZV92YWx1ZSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIlR5 cGUiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RhcnQiKSwKLQkJCQkJCQkgIGdldHRl eHRfbm9vcCgiTWluaW11bSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJNYXhpbXVtIiks Ci0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkluY3JlbWVudCIpLAorCQkJCQkJCSAgIlNFTEVD VCAnYmlnaW50JyxcbiIKKwkJCQkJCQkgICIgICAgICAgc3RhcnRfdmFsdWUsXG4iCisJCQkJ CQkJICAiICAgICAgIG1pbl92YWx1ZSxcbiIKKwkJCQkJCQkgICIgICAgICAgbWF4X3ZhbHVl LFxuIgorCQkJCQkJCSAgIiAgICAgICBpbmNyZW1lbnRfYnksXG4iCisJCQkJCQkJICAiICAg ICAgIENBU0UgV0hFTiBpc19jeWNsZWQgVEhFTiAnJXMnIEVMU0UgJyVzJyBFTkQsXG4iCisJ CQkJCQkJICAiICAgICAgIGNhY2hlX3ZhbHVlXG4iLAogCQkJCQkJCSAgZ2V0dGV4dF9ub29w KCJ5ZXMiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgibm8iKSwKLQkJCQkJCQkgIGdldHRl eHRfbm9vcCgiQ3ljbGVzPyIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJDYWNoZSIpKTsK KwkJCQkJCQkgIGdldHRleHRfbm9vcCgibm8iKSk7CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLCAiRlJPTSAlcyIsIGZtdElkKHNjaGVtYW5hbWUpKTsKIAkJCS8qIG11c3QgYmUgc2Vw YXJhdGUgYmVjYXVzZSBmbXRJZCBpc24ndCByZWVudHJhbnQgKi8KIAkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsICIuJXM7IiwgZm10SWQocmVsYXRpb25uYW1lKSk7CkBAIC0xNjc2LDYg KzE2NjAsNTEgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1h bmFtZSwKIAkJaWYgKCFyZXMpCiAJCQlnb3RvIGVycm9yX3JldHVybjsKIAorCQludW1yb3dz ID0gUFFudHVwbGVzKHJlcyk7CisKKwkJLyogWFhYIHJlc2V0IHRvIHVzZSBleHBhbmRlZCBv dXRwdXQgZm9yIHNlcXVlbmNlcyAobWF5YmUgd2Ugc2hvdWxkCisJCSAqIGtlZXAgdGhpcyBk aXNhYmxlZCwganVzdCBsaWtlIGZvciB0YWJsZXM/KSAqLworCQlteW9wdC5leHBhbmRlZCA9 IHBzZXQucG9wdC50b3B0LmV4cGFuZGVkOworCisJCXByaW50VGFibGVJbml0KCZjb250LCAm bXlvcHQsIHRpdGxlLmRhdGEsIDcsIG51bXJvd3MpOworCQlwcmludFRhYmxlSW5pdGlhbGl6 ZWQgPSB0cnVlOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygiU2VxdWVuY2Ug XCIlcy4lc1wiIiksCisJCQkJCQkgIHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CisKKwkJ cHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJUeXBlIiksIHRydWUs ICdsJyk7CisJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiU3Rh cnQiKSwgdHJ1ZSwgJ3InKTsKKwkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4 dF9ub29wKCJNaW5pbXVtIiksIHRydWUsICdyJyk7CisJCXByaW50VGFibGVBZGRIZWFkZXIo JmNvbnQsIGdldHRleHRfbm9vcCgiTWF4aW11bSIpLCB0cnVlLCAncicpOworCQlwcmludFRh YmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkluY3JlbWVudCIpLCB0cnVlLCAn cicpOworCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkN5Y2xl cz8iKSwgdHJ1ZSwgJ2wnKTsKKwkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4 dF9ub29wKCJDYWNoZSIpLCB0cnVlLCAncicpOworCisJCS8qIEdlbmVyYXRlIHRhYmxlIGNl bGxzIHRvIGJlIHByaW50ZWQgKi8KKwkJZm9yIChpID0gMDsgaSA8IG51bXJvd3M7IGkrKykK KwkJeworCQkJLyogVHlwZSAqLworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0 dmFsdWUocmVzLCBpLCAwKSwgZmFsc2UsIGZhbHNlKTsKKworCQkJLyogU3RhcnQgKi8KKwkJ CXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMSksIGZhbHNl LCBmYWxzZSk7CisKKwkJCS8qIE1pbmltdW0gKi8KKwkJCXByaW50VGFibGVBZGRDZWxsKCZj b250LCBQUWdldHZhbHVlKHJlcywgaSwgMiksIGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qIE1h eGltdW0gKi8KKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywg aSwgMyksIGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qIEluY3JlbWVudCAqLworCQkJcHJpbnRU YWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA0KSwgZmFsc2UsIGZhbHNl KTsKKworCQkJLyogQ3ljbGVzPyAqLworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBR Z2V0dmFsdWUocmVzLCBpLCA1KSwgZmFsc2UsIGZhbHNlKTsKKworCQkJLyogQ2FjaGUgKi8K KwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNiksIGZh bHNlLCBmYWxzZSk7CisJCX0KKwogCQkvKiBGb290ZXIgaW5mb3JtYXRpb24gYWJvdXQgYSBz ZXF1ZW5jZSAqLwogCiAJCS8qIEdldCB0aGUgY29sdW1uIHRoYXQgb3ducyB0aGlzIHNlcXVl bmNlICovCkBAIC0xNzA5LDI5ICsxNzM4LDYzIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQlzd2l0Y2ggKFBRZ2V0dmFsdWUocmVzdWx0 LCAwLCAxKVswXSkKIAkJCXsKIAkJCQljYXNlICdhJzoKLQkJCQkJZm9vdGVyc1swXSA9IHBz cHJpbnRmKF8oIk93bmVkIGJ5OiAlcyIpLAotCQkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1 bHQsIDAsIDApKTsKKwkJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwKKwkJCQkJCQkJ CQlwc3ByaW50ZihfKCJPd25lZCBieTogJXMiKSwKKwkJCQkJCQkJCQkJCSBQUWdldHZhbHVl KHJlc3VsdCwgMCwgMCkpKTsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSAnaSc6Ci0JCQkJCWZv b3RlcnNbMF0gPSBwc3ByaW50ZihfKCJTZXF1ZW5jZSBmb3IgaWRlbnRpdHkgY29sdW1uOiAl cyIpLAotCQkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIDAsIDApKTsKKwkJCQkJcHJp bnRUYWJsZUFkZEZvb3RlcigmY29udCwKKwkJCQkJCQkJCQlwc3ByaW50ZihfKCJTZXF1ZW5j ZSBmb3IgaWRlbnRpdHkgY29sdW1uOiAlcyIpLAorCQkJCQkJCQkJCQkJIFBRZ2V0dmFsdWUo cmVzdWx0LCAwLCAwKSkpOwogCQkJCQlicmVhazsKIAkJCX0KIAkJfQogCQlQUWNsZWFyKHJl c3VsdCk7CiAKLQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJTZXF1ZW5jZSBcIiVz LiVzXCIiKSwKLQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKKwkJLyogcHJp bnQgYW55IHB1YmxpY2F0aW9ucyAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDAp CisJCXsKKwkJCWludAkJCXR1cGxlcyA9IDA7CiAKLQkJbXlvcHQuZm9vdGVycyA9IGZvb3Rl cnM7Ci0JCW15b3B0LnRvcHQuZGVmYXVsdF9mb290ZXIgPSBmYWxzZTsKLQkJbXlvcHQudGl0 bGUgPSB0aXRsZS5kYXRhOwotCQlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwkJ CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIK KwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJCQkJ CSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSBwbiBPTiBw Lm9pZCA9IHBuLnBucHViaWRcbiIKKwkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19j bGFzcyBwYyBPTiBwYy5yZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkXG4iCisJCQkJCQkJICAi V0hFUkUgcGMub2lkID0nJXMnIGFuZCBwbi5wbnNlcXVlbmNlcyBhbmQgcGdfY2F0YWxvZy5w Z19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgorCQkJCQkJCSAgIlVOSU9OXG4i CisJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFs b2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBn X3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkg ICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCSAgIlVOSU9OXG4iCisJCQkJ CQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb24gcFxuIgorCQkJCQkJCSAgIldIRVJFIHAucHViYWxsc2VxdWVuY2VzIEFO RCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCisJCQkJ CQkJICAiT1JERVIgQlkgMTsiLAorCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCwgb2lkKTsKIAot CQlwcmludFF1ZXJ5KHJlcywgJm15b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQu bG9nZmlsZSk7CisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJl c3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQ UW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDApCisJCQkJcHJpbnRUYWJs ZUFkZEZvb3RlcigmY29udCwgXygiUHVibGljYXRpb25zOiIpKTsKKworCQkJLyogTWlnaHQg YmUgYW4gZW1wdHkgc2V0IC0gdGhhdCdzIG9rICovCisJCQlmb3IgKGkgPSAwOyBpIDwgdHVw bGVzOyBpKyspCisJCQl7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVz XCIiLAorCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CisKKwkJCQlwcmlu dFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQl9CisJCQlQUWNsZWFyKHJl c3VsdCk7CisJCX0KIAotCQlpZiAoZm9vdGVyc1swXSkKLQkJCWZyZWUoZm9vdGVyc1swXSk7 CisJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dm aWxlKTsKIAogCQlyZXR2YWwgPSB0cnVlOwogCQlnb3RvIGVycm9yX3JldHVybjsJCS8qIG5v dCBhbiBlcnJvciwganVzdCByZXR1cm4gZWFybHkgKi8KQEAgLTE5NTgsNiArMjAyMSwxMSBA QCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCWZv ciAoaSA9IDA7IGkgPCBjb2xzOyBpKyspCiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQs IGhlYWRlcnNbaV0sIHRydWUsICdsJyk7CiAKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7 CisJaWYgKCFyZXMpCisJCWdvdG8gZXJyb3JfcmV0dXJuOworCW51bXJvd3MgPSBQUW50dXBs ZXMocmVzKTsKKwogCS8qIEdlbmVyYXRlIHRhYmxlIGNlbGxzIHRvIGJlIHByaW50ZWQgKi8K IAlmb3IgKGkgPSAwOyBpIDwgbnVtcm93czsgaSsrKQogCXsKQEAgLTI4ODMsNyArMjk1MSw3 IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCiAJCQkJCQkJ CSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSBwbiBPTiBw Lm9pZCA9IHBuLnBucHViaWRcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdf Y2xhc3MgcGMgT04gcGMucmVsbmFtZXNwYWNlID0gcG4ucG5uc3BpZFxuIgotCQkJCQkJCQkg ICJXSEVSRSBwYy5vaWQgPSclcycgYW5kIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVi bGlzaGFibGUoJyVzJylcbiIKKwkJCQkJCQkJICAiV0hFUkUgcGMub2lkID0nJXMnIGFuZCAo bm90IHBuLnBuc2VxdWVuY2VzKSBhbmQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJs aXNoYWJsZSgnJXMnKVxuIgogCQkJCQkJCQkgICJVTklPTlxuIgogCQkJCQkJCQkgICJTRUxF Q1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIJCSwgcGdfZ2V0X2V4cHIocHIucHJxdWFsLCBj Lm9pZClcbiIKQEAgLTQ3NjQsNyArNDgzMiw3IEBAIGxpc3RTY2hlbWFzKGNvbnN0IGNoYXIg KnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCQlpbnQJCQlpOwog CiAJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkgICJTRUxFQ1QgcHVibmFtZSBc biIKKwkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lLCAoQ0FTRSBXSEVOIHBuc2VxdWVuY2VzIFRI RU4gJ3NlcXVlbmNlcycgRUxTRSAndGFibGVzJyBFTkQpIEFTIHB1YnR5cGVcbiIKIAkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCiAJCQkJCQkgICIJCUpP SU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gcC5vaWQgPSBw bi5wbnB1YmlkXG4iCiAJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2Ug biBPTiBuLm9pZCA9IHBuLnBubnNwaWQgXG4iCkBAIC00NzkzLDggKzQ4NjEsOSBAQCBsaXN0 U2NoZW1hcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5 c3RlbSkKIAkJCS8qIE1pZ2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAqLwogCQkJ Zm9yIChpID0gMDsgaSA8IHB1Yl9zY2hlbWFfdHVwbGVzOyBpKyspCiAJCQl7Ci0JCQkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVzXCIiLAotCQkJCQkJCQkgIFBRZ2V0dmFs dWUocmVzdWx0LCBpLCAwKSk7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBc IiVzXCIgKCVzKSIsCisJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApLAorCQkJ CQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxKSk7CiAKIAkJCQlmb290ZXJzW2kgKyAx XSA9IHBnX3N0cmR1cChidWYuZGF0YSk7CiAJCQl9CkBAIC01Nzk5LDcgKzU4NjgsNyBAQCBs aXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJUFFFeHBCdWZmZXJEYXRh IGJ1ZjsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQu cG9wdDsKLQlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJ c3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZX07CiAKIAlpZiAocHNldC5zdmVyc2lvbiA8IDEwMDAwMCkKIAl7CkBAIC01ODEzLDIzICs1 ODgyLDQ1IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAogCWlu aXRQUUV4cEJ1ZmZlcigmYnVmKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCi0JCQkJ CSAgIlNFTEVDVCBwdWJuYW1lIEFTIFwiJXNcIixcbiIKLQkJCQkJICAiICBwZ19jYXRhbG9n LnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHB1 YmFsbHRhYmxlcyBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAgcHViaW5zZXJ0IEFTIFwiJXNc IixcbiIKLQkJCQkJICAiICBwdWJ1cGRhdGUgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHB1 YmRlbGV0ZSBBUyBcIiVzXCIiLAotCQkJCQkgIGdldHRleHRfbm9vcCgiTmFtZSIpLAotCQkJ CQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSwKLQkJCQkJICBnZXR0ZXh0X25vb3AoIkFsbCB0 YWJsZXMiKSwKLQkJCQkJICBnZXR0ZXh0X25vb3AoIkluc2VydHMiKSwKLQkJCQkJICBnZXR0 ZXh0X25vb3AoIlVwZGF0ZXMiKSwKLQkJCQkJICBnZXR0ZXh0X25vb3AoIkRlbGV0ZXMiKSk7 CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAorCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAi ICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgXCIlc1wiLFxuIgor CQkJCQkJICAiICBwdWJhbGx0YWJsZXMgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJh bGxzZXF1ZW5jZXMgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJpbnNlcnQgQVMgXCIl c1wiLFxuIgorCQkJCQkJICAiICBwdWJ1cGRhdGUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAi ICBwdWJkZWxldGUgQVMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJOYW1lIiks CisJCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29w KCJBbGwgdGFibGVzIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiQWxsIHNlcXVlbmNlcyIp LAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkluc2VydHMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9u b29wKCJVcGRhdGVzIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiRGVsZXRlcyIpKTsKKwll bHNlCisJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICJTRUxFQ1QgcHVibmFt ZSBBUyBcIiVzXCIsXG4iCisJCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlk KHB1Ym93bmVyKSBBUyBcIiVzXCIsXG4iCisJCQkJCQkgICIgIHB1YmFsbHRhYmxlcyBBUyBc IiVzXCIsXG4iCisJCQkJCQkgICIgIHB1Ymluc2VydCBBUyBcIiVzXCIsXG4iCisJCQkJCQkg ICIgIHB1YnVwZGF0ZSBBUyBcIiVzXCIsXG4iCisJCQkJCQkgICIgIHB1YmRlbGV0ZSBBUyBc IiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIk5hbWUiKSwKKwkJCQkJCSAgZ2V0dGV4 dF9ub29wKCJPd25lciIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkFsbCB0YWJsZXMiKSwK KwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksCisJCQkJCQkgIGdldHRleHRfbm9v cCgiVXBkYXRlcyIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkRlbGV0ZXMiKSk7CisKIAlp ZiAocHNldC5zdmVyc2lvbiA+PSAxMTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs CiAJCQkJCQkgICIsXG4gIHB1YnRydW5jYXRlIEFTIFwiJXNcIiIsCiAJCQkJCQkgIGdldHRl eHRfbm9vcCgiVHJ1bmNhdGVzIikpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkK KwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIixcbiAgcHVic2VxdWVuY2Ug QVMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTZXF1ZW5jZXMiKSk7CiAJaWYg KHBzZXQuc3ZlcnNpb24gPj0gMTMwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAog CQkJCQkJICAiLFxuICBwdWJ2aWFyb290IEFTIFwiJXNcIiIsCkBAIC01OTE1LDYgKzYwMDYs NyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCVBHcmVz dWx0ICAgKnJlczsKIAlib29sCQloYXNfcHVidHJ1bmNhdGU7CiAJYm9vbAkJaGFzX3B1YnZp YXJvb3Q7CisJYm9vbAkJaGFzX3B1YnNlcXVlbmNlOwogCiAJUFFFeHBCdWZmZXJEYXRhIHRp dGxlOwogCXByaW50VGFibGVDb250ZW50IGNvbnQ7CkBAIC01OTMxLDEzICs2MDIzLDIxIEBA IGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAKIAloYXNfcHVi dHJ1bmNhdGUgPSAocHNldC5zdmVyc2lvbiA+PSAxMTAwMDApOwogCWhhc19wdWJ2aWFyb290 ID0gKHBzZXQuc3ZlcnNpb24gPj0gMTMwMDAwKTsKKwloYXNfcHVic2VxdWVuY2UgPSAocHNl dC5zdmVyc2lvbiA+PSAxNTAwMDApOwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0J cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJICAiU0VMRUNUIG9pZCwgcHVibmFtZSxc biIKLQkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMg b3duZXIsXG4iCi0JCQkJCSAgIiAgcHViYWxsdGFibGVzLCBwdWJpbnNlcnQsIHB1YnVwZGF0 ZSwgcHViZGVsZXRlIik7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiU0VMRUNUIG9pZCwgcHVibmFtZSxcbiIK KwkJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQocHVib3duZXIpIEFTIG93 bmVyLFxuIgorCQkJCQkJICAiICBwdWJhbGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcywgcHVi aW5zZXJ0LCBwdWJ1cGRhdGUsIHB1YmRlbGV0ZSwgcHVic2VxdWVuY2UiKTsKKwllbHNlCisJ CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICJTRUxFQ1Qgb2lkLCBwdWJuYW1l LFxuIgorCQkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChwdWJvd25lcikg QVMgb3duZXIsXG4iCisJCQkJCQkgICIgIHB1YmFsbHRhYmxlcywgZmFsc2UgYXMgcHViYWxs c2VxdWVuY2VzLCBwdWJpbnNlcnQsIHB1YnVwZGF0ZSwgcHViZGVsZXRlLCBmYWxzZSBhcyBw dWJzZXF1ZW5jZSIpOworCiAJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwKIAkJCQkJCQkgIiwgcHVidHJ1bmNhdGUiKTsKQEAgLTU5ODQsMTIg KzYwODQsMTUgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikK IAkJY2hhcgkgICAqcHViaWQgPSBQUWdldHZhbHVlKHJlcywgaSwgMCk7CiAJCWNoYXIJICAg KnB1Ym5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMSk7CiAJCWJvb2wJCXB1YmFsbHRhYmxl cyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMyksICJ0IikgPT0gMDsKKwkJYm9vbAkJ cHViYWxsc2VxdWVuY2VzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCA0KSwgInQiKSA9 PSAwOwogCQlwcmludFRhYmxlT3B0IG15b3B0ID0gcHNldC5wb3B0LnRvcHQ7CiAKIAkJaWYg KGhhc19wdWJ0cnVuY2F0ZSkKIAkJCW5jb2xzKys7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkK IAkJCW5jb2xzKys7CisJCWlmIChoYXNfcHVic2VxdWVuY2UpCisJCQluY29scyArPSAyOwkv KiBhZGRzICJ0cnVuY2F0ZSIgYWN0aW9uIGFuZCAiYWxsIHNlcXVlbmNlcyIgKi8KIAogCQlp bml0UFFFeHBCdWZmZXIoJnRpdGxlKTsKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBf KCJQdWJsaWNhdGlvbiAlcyIpLCBwdWJuYW1lKTsKQEAgLTU5OTcsMjMgKzYxMDAsMzAgQEAg ZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAogCQlwcmludFRh YmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIk93bmVyIiksIHRydWUsIGFsaWdu KTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJBbGwgdGFi bGVzIiksIHRydWUsIGFsaWduKTsKKwkJaWYgKGhhc19wdWJzZXF1ZW5jZSkKKwkJCXByaW50 VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiQWxsIHNlcXVlbmNlcyIpLCB0 cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiSW5zZXJ0cyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNv bnQsIGdldHRleHRfbm9vcCgiVXBkYXRlcyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFi bGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiRGVsZXRlcyIpLCB0cnVlLCBhbGln bik7CisJCWlmIChoYXNfcHVic2VxdWVuY2UpCisJCQlwcmludFRhYmxlQWRkSGVhZGVyKCZj b250LCBnZXR0ZXh0X25vb3AoIlNlcXVlbmNlcyIpLCB0cnVlLCBhbGlnbik7CiAJCWlmICho YXNfcHVidHJ1bmNhdGUpCiAJCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0 X25vb3AoIlRydW5jYXRlcyIpLCB0cnVlLCBhbGlnbik7CiAJCWlmIChoYXNfcHVidmlhcm9v dCkKIAkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVmlhIHJv b3QiKSwgdHJ1ZSwgYWxpZ24pOwogCi0JCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdl dHZhbHVlKHJlcywgaSwgMiksIGZhbHNlLCBmYWxzZSk7Ci0JCXByaW50VGFibGVBZGRDZWxs KCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMyksIGZhbHNlLCBmYWxzZSk7Ci0JCXByaW50 VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNCksIGZhbHNlLCBmYWxz ZSk7Ci0JCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNSks IGZhbHNlLCBmYWxzZSk7Ci0JCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVl KHJlcywgaSwgNiksIGZhbHNlLCBmYWxzZSk7CisJCXByaW50VGFibGVBZGRDZWxsKCZjb250 LCBQUWdldHZhbHVlKHJlcywgaSwgMiksIGZhbHNlLCBmYWxzZSk7IC8qIG93bmVyICovCisJ CXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMyksIGZhbHNl LCBmYWxzZSk7IC8qIGFsbCB0YWJsZXMgKi8KKwkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQs IFBRZ2V0dmFsdWUocmVzLCBpLCA0KSwgZmFsc2UsIGZhbHNlKTsgLyogYWxsIHNlcXVlbmNl cyAqLworCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDUp LCBmYWxzZSwgZmFsc2UpOyAvKiBpbnNlcnQgKi8KKwkJcHJpbnRUYWJsZUFkZENlbGwoJmNv bnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA2KSwgZmFsc2UsIGZhbHNlKTsgLyogdXBkYXRlICov CisJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNyksIGZh bHNlLCBmYWxzZSk7IC8qIGRlbGV0ZSAqLworCQlpZiAoaGFzX3B1YnNlcXVlbmNlKQorCQkJ cHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA4KSwgZmFsc2Us IGZhbHNlKTsgLyogc2VxdWVuY2UgKi8KIAkJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKLQkJCXBy aW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNyksIGZhbHNlLCBm YWxzZSk7CisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGks IDkpLCBmYWxzZSwgZmFsc2UpOyAvKiB0cnVuY2F0ZSAqLwogCQlpZiAoaGFzX3B1YnZpYXJv b3QpCi0JCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgp LCBmYWxzZSwgZmFsc2UpOworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFs dWUocmVzLCBpLCAxMCksIGZhbHNlLCBmYWxzZSk7IC8qIHZpYSByb290ICovCiAKIAkJaWYg KCFwdWJhbGx0YWJsZXMpCiAJCXsKQEAgLTYwMzMsNiArNjE0Myw3IEBAIGRlc2NyaWJlUHVi bGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJICAiV0hFUkUgYy5yZWxu YW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAgQU5EIGMub2lkID0gcHIucHJyZWxp ZFxuIgogCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJICAi ICBBTkQgYy5yZWxraW5kICE9ICdTJ1xuIiAvKiBleGNsdWRlIHNlcXVlbmNlcyAqLwogCQkJ CQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKIAkJCWlmICghYWRkRm9vdGVyVG9QdWJs aWNhdGlvbkRlc2MoJmJ1ZiwgIlRhYmxlczoiLCBmYWxzZSwgJmNvbnQpKQogCQkJCWdvdG8g ZXJyb3JfcmV0dXJuOwpAQCAtNjA0NCw3ICs2MTU1LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZVxu IgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG5cbiIKIAkJCQkJ CQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBu IE9OIG4ub2lkID0gcG4ucG5uc3BpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBwbi5wbnB1Ymlk ID0gJyVzJ1xuIgorCQkJCQkJCQkgICJXSEVSRSBwbi5wbnB1YmlkID0gJyVzJyBBTkQgTk9U IHBuLnBuc2VxdWVuY2VzXG4iCiAJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CiAJ CQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCAiVGFibGVzIGZyb20g c2NoZW1hczoiLAogCQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQpAQCAtNjA1Miw2ICs2MTYz LDM3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQl9 CiAJCX0KIAorCQlpZiAoIXB1YmFsbHNlcXVlbmNlcykKKwkJeworCQkJLyogR2V0IHRoZSB0 YWJsZXMgZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24gKi8KKwkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSwgYy5yZWxuYW1lLCBO VUxMXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsXG4iCisJCQkJ CQkJICAiICAgICBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuLFxuIgorCQkJCQkJCSAgIiAg ICAgcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKKwkJCQkJCQkgICJXSEVS RSBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkXG4iCisJCQkJCQkJICAiICBBTkQgYy5vaWQgPSBw ci5wcnJlbGlkXG4iCisJCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydcbiIKKwkJ CQkJCQkgICIgIEFORCBjLnJlbGtpbmQgPSAnUydcbiIgLyogb25seSBzZXF1ZW5jZXMgKi8K KwkJCQkJCQkgICJPUkRFUiBCWSAxLDIiLCBwdWJpZCk7CisJCQlpZiAoIWFkZEZvb3RlclRv UHVibGljYXRpb25EZXNjKCZidWYsICJTZXF1ZW5jZXM6IiwgZmFsc2UsICZjb250KSkKKwkJ CQlnb3RvIGVycm9yX3JldHVybjsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAw KQorCQkJeworCQkJCS8qIEdldCB0aGUgc2NoZW1hcyBmb3IgdGhlIHNwZWNpZmllZCBwdWJs aWNhdGlvbiAqLworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIlNF TEVDVCBuLm5zcG5hbWVcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX25hbWVz cGFjZSBuXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZSBwbiBPTiBuLm9pZCA9IHBuLnBubnNwaWRcbiIKKwkJCQkJCQkJICAi V0hFUkUgcG4ucG5wdWJpZCA9ICclcycgQU5EIHBuLnBuc2VxdWVuY2VzXG4iCisJCQkJCQkJ CSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0 aW9uRGVzYygmYnVmLCAiU2VxdWVuY2VzIGZyb20gc2NoZW1hczoiLAorCQkJCQkJCQkJCQkJ dHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQorCiAJ CXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxl KTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5k ZXggNjk1NzU2NzI2NGEuLmE4Y2RmYzRjZmJhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC0x NzgyLDExICsxNzgyLDE1IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBp bnQgc3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEgoIkFERCIsICJEUk9QIiwgIk9X TkVSIFRPIiwgIlJFTkFNRSBUTyIsICJTRVQiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8 bmFtZT4gQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERCIpKQotCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFND SEVNQSIsICJUQUJMRSIpOworCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVN QSIsICJBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSIsICJUQUJMRSIsICJTRVFVRU5DRSIpOwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJB RER8U0VUIiwgIlRBQkxFIikgfHwKIAkJCSAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIikgJiYKIAkJCSAgZW5kc193 aXRoKHByZXZfd2QsICcsJykpKQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlNFUVVFTkNFIikgfHwKKwkJCSAo SGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VU IiwgIlNFUVVFTkNFIikgJiYKKwkJCSAgZW5kc193aXRoKHByZXZfd2QsICcsJykpKQorCQlD T01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMp OwogCS8qCiAJICogIkFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBTRVQgVEFCTEUgPG5hbWU+ IFdIRVJFICgiIC0gY29tcGxldGUgd2l0aAogCSAqIHRhYmxlIGF0dHJpYnV0ZXMKQEAgLTE4 MDUsMTEgKzE4MDksMTEgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGlu dCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiLCIpOwogCS8qIEFMVEVSIFBV QkxJQ0FUSU9OIDxuYW1lPiBEUk9QICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkRST1AiKSkKLQkJQ09NUExFVEVfV0lUSCgiQUxM IFRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJQ09NUExFVEVfV0lUSCgiQUxMIFRB QkxFUyBJTiBTQ0hFTUEiLCAiQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiLCAi U0VRVUVOQ0UiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICovCiAJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIp KQotCQlDT01QTEVURV9XSVRIKCIoIiwgIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxF Iik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkFERHxEUk9QfFNFVCIsICJBTEwiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIpKQor CQlDT01QTEVURV9XSVRIKCIoIiwgIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwgIkFMTCBTRVFV RU5DRVMgSU4gU0NIRU1BIiwgIlRBQkxFIiwgIlNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxEUk9QfFNFVCIs ICJBTEwiLCAiVEFCTEVTfFNFUVVFTkNFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExF VEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJ ICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSciLAogCQkJCQkJCQkgIkNVUlJF TlRfU0NIRU1BIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA3ZjFlZTk3ZjU1 Yy4uMjliODRhZjA0YjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTE1NDYs NiArMTE1NDYsMTEgQEAKICAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdv aWQnLCBwcm9hcmd0eXBlcyA9PiAndGV4dCcsCiAgIHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4 dCxvaWR9JywgcHJvYXJnbW9kZXMgPT4gJ3tpLG99JywKICAgcHJvYXJnbmFtZXMgPT4gJ3tw dWJuYW1lLHJlbGlkfScsIHByb3NyYyA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcycg fSwKK3sgb2lkID0+ICc4MDAwJywgZGVzY3IgPT4gJ2dldCBPSURzIG9mIHNlcXVlbmNlcyBp biBhIHB1YmxpY2F0aW9uJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X3B1YmxpY2F0aW9uX3Nl cXVlbmNlcycsIHByb3Jvd3MgPT4gJzEwMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAorICBwcm92 b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ29pZCcsIHByb2FyZ3R5cGVzID0+ICd0 ZXh0JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3t0ZXh0LG9pZH0nLCBwcm9hcmdtb2RlcyA9 PiAne2ksb30nLAorICBwcm9hcmduYW1lcyA9PiAne3B1Ym5hbWUscmVsaWR9JywgcHJvc3Jj ID0+ICdwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzJyB9LAogeyBvaWQgPT4gJzYxMjEn LAogICBkZXNjciA9PiAncmV0dXJucyB3aGV0aGVyIGEgcmVsYXRpb24gY2FuIGJlIHBhcnQg b2YgYSBwdWJsaWNhdGlvbicsCiAgIHByb25hbWUgPT4gJ3BnX3JlbGF0aW9uX2lzX3B1Ymxp c2hhYmxlJywgcHJvdm9sYXRpbGUgPT4gJ3MnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oCmluZGV4IGJhNzJlNjJlNjE0Li5mMmI0ZTgzOGM3NyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtNDAsNiArNDAsMTIgQEAgQ0FUQUxPRyhw Z19wdWJsaWNhdGlvbiw2MTA0LFB1YmxpY2F0aW9uUmVsYXRpb25JZCkKIAkgKi8KIAlib29s CQlwdWJhbGx0YWJsZXM7CiAKKwkvKgorCSAqIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgc3Bl Y2lhbCBwdWJsaWNhdGlvbiB3aGljaCBzaG91bGQgZW5jb21wYXNzIGFsbAorCSAqIHNlcXVl bmNlcyBpbiB0aGUgZGF0YWJhc2UgKGV4Y2VwdCBmb3IgdGhlIHVubG9nZ2VkIGFuZCB0ZW1w IG9uZXMpCisJICovCisJYm9vbAkJcHViYWxsc2VxdWVuY2VzOworCiAJLyogdHJ1ZSBpZiBp bnNlcnRzIGFyZSBwdWJsaXNoZWQgKi8KIAlib29sCQlwdWJpbnNlcnQ7CiAKQEAgLTUyLDYg KzU4LDkgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbiw2MTA0LFB1YmxpY2F0aW9uUmVsYXRp b25JZCkKIAkvKiB0cnVlIGlmIHRydW5jYXRlcyBhcmUgcHVibGlzaGVkICovCiAJYm9vbAkJ cHVidHJ1bmNhdGU7CiAKKwkvKiB0cnVlIGlmIHNlcXVlbmNlcyBhcmUgcHVibGlzaGVkICov CisJYm9vbAkJcHVic2VxdWVuY2U7CisKIAkvKiB0cnVlIGlmIHBhcnRpdGlvbiBjaGFuZ2Vz IGFyZSBwdWJsaXNoZWQgdXNpbmcgcm9vdCBzY2hlbWEgKi8KIAlib29sCQlwdWJ2aWFyb290 OwogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbjsKQEAgLTcyLDYgKzgxLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHVibGljYXRpb25BY3Rpb25zCiAJYm9vbAkJcHVidXBkYXRlOwogCWJvb2wJ CXB1YmRlbGV0ZTsKIAlib29sCQlwdWJ0cnVuY2F0ZTsKKwlib29sCQlwdWJzZXF1ZW5jZTsK IH0gUHVibGljYXRpb25BY3Rpb25zOwogCiB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkRl c2MKQEAgLTkyLDYgKzEwMiw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uCiAJT2lk CQkJb2lkOwogCWNoYXIJICAgKm5hbWU7CiAJYm9vbAkJYWxsdGFibGVzOworCWJvb2wJCWFs bHNlcXVlbmNlczsKIAlib29sCQlwdWJ2aWFyb290OwogCVB1YmxpY2F0aW9uQWN0aW9ucyBw dWJhY3Rpb25zOwogfSBQdWJsaWNhdGlvbjsKQEAgLTEyMiwyNiArMTMzLDMwIEBAIHR5cGVk ZWYgZW51bSBQdWJsaWNhdGlvblBhcnRPcHQKIAlQVUJMSUNBVElPTl9QQVJUX0FMTCwKIH0g UHVibGljYXRpb25QYXJ0T3B0OwogCi1leHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxh dGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0 ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgYm9vbCBzZXF1 ZW5jZXMsCisJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4 dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCk7CiBleHRlcm4gTGlz dCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoYm9vbCBwdWJ2aWFyb290KTsK LWV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKK2V4dGVy biBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkLCBib29sIHNlcXVlbmNl KTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsK LWV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1h aWQsCitleHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNj aGVtYWlkLCBib29sIHNlcXVlbmNlcywKIAkJCQkJCQkJCQkgICBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQpOwotZXh0ZXJuIExpc3QgKkdldEFsbFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBwdWJvaWQsCitleHRlcm4gTGlzdCAqR2V0QWxsU2NoZW1hUHVibGlj YXRpb25SZWxhdGlvbnMoT2lkIHB1Ym9pZCwgYm9vbCBzZXF1ZW5jZXMsCiAJCQkJCQkJCQkJ CSAgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRQ dWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LAogCQkJCQkJCQkJCQlQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAJCQkJCQkJCQkJCU9pZCByZWxpZCk7 CiBleHRlcm4gT2lkCUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9p ZCwgTGlzdCAqYW5jZXN0b3JzKTsKIAorZXh0ZXJuIExpc3QgKkdldEFsbFNlcXVlbmNlc1B1 YmxpY2F0aW9ucyh2b2lkKTsKK2V4dGVybiBMaXN0ICpHZXRBbGxTZXF1ZW5jZXNQdWJsaWNh dGlvblJlbGF0aW9ucyh2b2lkKTsKKwogZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVs YXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlv bihPaWQgcHViaWQpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3Jl bGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJ CSAgYm9vbCBpZl9ub3RfZXhpc3RzKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0 aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsCi0JCQkJCQkJCQkJCWJv b2wgaWZfbm90X2V4aXN0cyk7CisJCQkJCQkJCQkJCWJvb2wgc2VxdWVuY2VzLCBib29sIGlm X25vdF9leGlzdHMpOwogCiBleHRlcm4gT2lkCWdldF9wdWJsaWNhdGlvbl9vaWQoY29uc3Qg Y2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRfcHVi bGljYXRpb25fbmFtZShPaWQgcHViaWQsIGJvb2wgbWlzc2luZ19vayk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaAppbmRleCBlNDMw NmRhMDJlNy4uYmJjMjJkZWM5ZjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaApAQCAtMzIsNiArMzIsNyBAQCBDQVRBTE9HKHBn X3B1YmxpY2F0aW9uX25hbWVzcGFjZSw4OTAxLFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVsYXRp b25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcG5wdWJpZCBCS0lfTE9P S1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCU9p ZAkJCXBubnNwaWQgQktJX0xPT0tVUChwZ19uYW1lc3BhY2UpOwkvKiBPaWQgb2YgdGhlIHNj aGVtYSAqLworCWJvb2wJCXBuc2VxdWVuY2VzOwkvKiB0YWJsZXMgb3Igc2VxdWVuY2VzIGZy b20gdGhlIHNjaGVtYT8gKi8KIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb25fbmFtZXNwYWNl OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC00Miw2ICs0Myw2IEBAIENBVEFMT0cocGdf cHVibGljYXRpb25fbmFtZXNwYWNlLDg5MDEsUHVibGljYXRpb25OYW1lc3BhY2VSZWxhdGlv bklkKQogdHlwZWRlZiBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgKkZvcm1f cGdfcHVibGljYXRpb25fbmFtZXNwYWNlOwogCiBERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZ KHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9vaWRfaW5kZXgsIDg5MDIsIFB1YmxpY2F0aW9u TmFtZXNwYWNlT2JqZWN0SW5kZXhJZCwgb24gcGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHVz aW5nIGJ0cmVlKG9pZCBvaWRfb3BzKSk7Ci1ERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wdWJs aWNhdGlvbl9uYW1lc3BhY2VfcG5uc3BpZF9wbnB1YmlkX2luZGV4LCA4OTAzLCBQdWJsaWNh dGlvbk5hbWVzcGFjZVBubnNwaWRQbnB1YmlkSW5kZXhJZCwgb24gcGdfcHVibGljYXRpb25f bmFtZXNwYWNlIHVzaW5nIGJ0cmVlKHBubnNwaWQgb2lkX29wcywgcG5wdWJpZCBvaWRfb3Bz KSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5u c3BpZF9wbnB1YmlkX3Buc2VxX2luZGV4LCA4OTAzLCBQdWJsaWNhdGlvbk5hbWVzcGFjZVBu bnNwaWRQbnB1YmlkU2VxSW5kZXhJZCwgb24gcGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHVz aW5nIGJ0cmVlKHBubnNwaWQgb2lkX29wcywgcG5wdWJpZCBvaWRfb3BzLCBwbnNlcXVlbmNl cyBib29sX29wcykpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdfUFVCTElDQVRJT05fTkFNRVNQ QUNFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCmluZGV4IDlmZWNjNDE5NTRlLi5k OGMyNTVhN2FmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2Uu aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCkBAIC02MCw2ICs2MCw3 IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIERlZmluZVNlcXVlbmNlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlU2VxU3RtdCAqc3RtdCk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRl clNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTZXFTdG10ICpzdG10KTsKIGV4 dGVybiB2b2lkIERlbGV0ZVNlcXVlbmNlVHVwbGUoT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lk IFJlc2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCk7CitleHRlcm4gdm9pZCBSZXNldFNlcXVl bmNlMihPaWQgc2VxX3JlbGlkLCBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBi b29sIGlzX2NhbGxlZCk7CiBleHRlcm4gdm9pZCBSZXNldFNlcXVlbmNlQ2FjaGVzKHZvaWQp OwogCiBleHRlcm4gdm9pZCBzZXFfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJwdHIpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDE2MTc3MDJkOWQ2Li43YWRjMzcxMDQwOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzY2Myw2ICszNjYzLDEwIEBAIHR5cGVkZWYg ZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lO X1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9U QUJMRVNfSU5fQ1VSX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9m CiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCisJUFVCTElDQVRJT05PQkpfU0VRVUVO Q0UsCQkvKiBTZXF1ZW5jZSB0eXBlICovCisJUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VTX0lO X1NDSEVNQSwgLyogU2VxdWVuY2VzIGluIHNjaGVtYSB0eXBlICovCisJUFVCTElDQVRJT05P QkpfU0VRVUVOQ0VTX0lOX0NVUl9TQ0hFTUEsIC8qIEdldCB0aGUgZmlyc3QgZWxlbWVudCBv ZgorCQkJCQkJCQkJCQkgKiBzZWFyY2hfcGF0aCAqLwogCVBVQkxJQ0FUSU9OT0JKX0NPTlRJ TlVBVElPTiAvKiBDb250aW51YXRpb24gb2YgcHJldmlvdXMgdHlwZSAqLwogfSBQdWJsaWNh dGlvbk9ialNwZWNUeXBlOwogCkBAIC0zNjgyLDYgKzM2ODYsNyBAQCB0eXBlZGVmIHN0cnVj dCBDcmVhdGVQdWJsaWNhdGlvblN0bXQKIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBv ZiBEZWZFbGVtIG5vZGVzICovCiAJTGlzdAkgICAqcHVib2JqZWN0czsJCS8qIE9wdGlvbmFs IGxpc3Qgb2YgcHVibGljYXRpb24gb2JqZWN0cyAqLwogCWJvb2wJCWZvcl9hbGxfdGFibGVz OyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgdGFibGVzIGluIGRiICovCisJYm9v bAkJZm9yX2FsbF9zZXF1ZW5jZXM7IC8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCBz ZXF1ZW5jZXMgaW4gZGIgKi8KIH0gQ3JlYXRlUHVibGljYXRpb25TdG10OwogCiB0eXBlZGVm IGVudW0gQWx0ZXJQdWJsaWNhdGlvbkFjdGlvbgpAQCAtMzcwNSw2ICszNzEwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgQWx0ZXJQdWJsaWNhdGlvblN0bXQKIAkgKi8KIAlMaXN0CSAgICpwdWJv YmplY3RzOwkJLyogT3B0aW9uYWwgbGlzdCBvZiBwdWJsaWNhdGlvbiBvYmplY3RzICovCiAJ Ym9vbAkJZm9yX2FsbF90YWJsZXM7IC8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCB0 YWJsZXMgaW4gZGIgKi8KKwlib29sCQlmb3JfYWxsX3NlcXVlbmNlczsgLyogU3BlY2lhbCBw dWJsaWNhdGlvbiBmb3IgYWxsIHNlcXVlbmNlcyBpbiBkYiAqLwogCUFsdGVyUHVibGljYXRp b25BY3Rpb24gYWN0aW9uOwkvKiBXaGF0IGFjdGlvbiB0byBwZXJmb3JtIHdpdGggdGhlIGdp dmVuCiAJCQkJCQkJCQkgKiBvYmplY3RzICovCiB9IEFsdGVyUHVibGljYXRpb25TdG10Owpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCA0ZDJjODgxNjQ0 YS4uNDE1NzU3ZDhhMmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90 by5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgZW51bSBMb2dpY2FsUmVwTXNnVHlwZQog CUxPR0lDQUxfUkVQX01TR19SRUxBVElPTiA9ICdSJywKIAlMT0dJQ0FMX1JFUF9NU0dfVFlQ RSA9ICdZJywKIAlMT0dJQ0FMX1JFUF9NU0dfTUVTU0FHRSA9ICdNJywKKwlMT0dJQ0FMX1JF UF9NU0dfU0VRVUVOQ0UgPSAnWCcsCS8qIEZJWE1FIGNoYW5nZSAqLwogCUxPR0lDQUxfUkVQ X01TR19CRUdJTl9QUkVQQVJFID0gJ2InLAogCUxPR0lDQUxfUkVQX01TR19QUkVQQVJFID0g J1AnLAogCUxPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQgPSAnSycsCkBAIC0xMTgs NiArMTE5LDE4IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBUeXAKIAljaGFyCSAgICp0 eXBuYW1lOwkJLyogbmFtZSBvZiB0aGUgcmVtb3RlIHR5cGUgKi8KIH0gTG9naWNhbFJlcFR5 cDsKIAorLyogU2VxdWVuY2UgaW5mbyAqLwordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFNl cXVlbmNlCit7CisJT2lkCQkJcmVtb3RlaWQ7CQkvKiB1bmlxdWUgaWQgb2YgdGhlIHJlbW90 ZSBzZXF1ZW5jZSAqLworCWNoYXIJICAgKm5zcG5hbWU7CQkvKiBzY2hlbWEgbmFtZSBvZiBy ZW1vdGUgc2VxdWVuY2UgKi8KKwljaGFyCSAgICpzZXFuYW1lOwkJLyogbmFtZSBvZiB0aGUg cmVtb3RlIHNlcXVlbmNlICovCisJYm9vbAkJdHJhbnNhY3Rpb25hbDsKKwlpbnQ2NAkJbGFz dF92YWx1ZTsKKwlpbnQ2NAkJbG9nX2NudDsKKwlib29sCQlpc19jYWxsZWQ7Cit9IExvZ2lj YWxSZXBTZXF1ZW5jZTsKKwogLyogVHJhbnNhY3Rpb24gaW5mbyAqLwogdHlwZWRlZiBzdHJ1 Y3QgTG9naWNhbFJlcEJlZ2luRGF0YQogewpAQCAtMjMwLDYgKzI0MywxMiBAQCBleHRlcm4g TGlzdCAqbG9naWNhbHJlcF9yZWFkX3RydW5jYXRlKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJ CQkgIGJvb2wgKmNhc2NhZGUsIGJvb2wgKnJlc3RhcnRfc2Vxcyk7CiBleHRlcm4gdm9pZCBs b2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWwsIGNv bnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3NlcXVlbmNlKFN0cmluZ0luZm8gb3V0LCBSZWxh dGlvbiByZWwsCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz biwKKwkJCQkJCQkJCSAgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJICBpbnQ2NCBs YXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LAorCQkJCQkJCQkJICBib29sIGlzX2NhbGxlZCk7 CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc2VxdWVuY2UoU3RyaW5nSW5mbyBpbiwg TG9naWNhbFJlcFNlcXVlbmNlICpzZXFkYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d3JpdGVfcmVsKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJ IFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gTG9naWNhbFJlcFJlbGF0aW9uICpsb2dpY2FscmVw X3JlYWRfcmVsKFN0cmluZ0luZm8gaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 LmgKaW5kZXggZWFmZWRkNjEwYTUuLmY0ZTlmMzVkMDlkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0LmgKQEAgLTI5LDYgKzI5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRw dXREYXRhCiAJYm9vbAkJc3RyZWFtaW5nOwogCWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3 b19waGFzZTsKKwlib29sCQlzZXF1ZW5jZXM7CiB9IFBHT3V0cHV0RGF0YTsKIAogI2VuZGlm CQkJCQkJCS8qIFBHT1VUUFVUX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWV4ZWMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwppbmRleCA0 NWRkZGFmNTU2Mi4uNmU4N2Q2ZjVjMzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWV4ZWMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKQEAg LTM3MjUsNyArMzcyNSwxMCBAQCBjaGFyICoKIFBRZ2V0dmFsdWUoY29uc3QgUEdyZXN1bHQg KnJlcywgaW50IHR1cF9udW0sIGludCBmaWVsZF9udW0pCiB7CiAJaWYgKCFjaGVja190dXBs ZV9maWVsZF9udW1iZXIocmVzLCB0dXBfbnVtLCBmaWVsZF9udW0pKQorCXsKKwkJcHJpbnRm KCJnZXR2YWx1ZVxuIik7CiAJCXJldHVybiBOVUxMOworCX0KIAlyZXR1cm4gcmVzLT50dXBs ZXNbdHVwX251bV1bZmllbGRfbnVtXS52YWx1ZTsKIH0KIApAQCAtMzczNiw3ICszNzM5LDEw IEBAIGludAogUFFnZXRsZW5ndGgoY29uc3QgUEdyZXN1bHQgKnJlcywgaW50IHR1cF9udW0s IGludCBmaWVsZF9udW0pCiB7CiAJaWYgKCFjaGVja190dXBsZV9maWVsZF9udW1iZXIocmVz LCB0dXBfbnVtLCBmaWVsZF9udW0pKQorCXsKKwkJcHJpbnRmKCJnZXRsZW5ndGhcbiIpOwog CQlyZXR1cm4gMDsKKwl9CiAJaWYgKHJlcy0+dHVwbGVzW3R1cF9udW1dW2ZpZWxkX251bV0u bGVuICE9IE5VTExfTEVOKQogCQlyZXR1cm4gcmVzLT50dXBsZXNbdHVwX251bV1bZmllbGRf bnVtXS5sZW47CiAJZWxzZQpAQCAtMzc1MCw3ICszNzU2LDEwIEBAIGludAogUFFnZXRpc251 bGwoY29uc3QgUEdyZXN1bHQgKnJlcywgaW50IHR1cF9udW0sIGludCBmaWVsZF9udW0pCiB7 CiAJaWYgKCFjaGVja190dXBsZV9maWVsZF9udW1iZXIocmVzLCB0dXBfbnVtLCBmaWVsZF9u dW0pKQorCXsKKwkJcHJpbnRmKCJnZXRpc251bGxcbiIpOwogCQlyZXR1cm4gMTsJCQkJLyog cHJldGVuZCBpdCBpcyBudWxsICovCisJfQogCWlmIChyZXMtPnR1cGxlc1t0dXBfbnVtXVtm aWVsZF9udW1dLmxlbiA9PSBOVUxMX0xFTikKIAkJcmV0dXJuIDE7CiAJZWxzZQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAzYzM4MmU1MjBl NC4uYmM4YmE3MTkyNWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGlj YXRpb24ub3V0CkBAIC0zMCwyMCArMzAsMjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBvciBy ZWR1bmRhbnQgb3B0aW9ucwogTElORSAxOiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSAndHJ1ZScsIHB1Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBcZFJw Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25z CisgICAgICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJf ZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAg IHwgZiAgICAgICAgIHwgZgogKDIgcm93cykKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9kZWZhdWx0IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2Vy dCwgdXBkYXRlLCBkZWxldGUsIHNlcXVlbmNlJyk7CiBcZFJwCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAg ICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5hbWUgICAg ICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1 ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgIHwgZgog KDIgcm93cykKIAogLS0tIGFkZGluZyB0YWJsZXMKQEAgLTg3LDEwICs4NywxMCBAQCBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIHNjaGVt YSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3J0YWJsZSBBREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0 ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRl c3RwdWJfdGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC05OSwyMCArOTksMjAgQEAg VGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3Agc2NoZW1h IGZyb20gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgRFJPUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnAr IHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMu dGVzdHB1Yl90YmwxIgogCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdG T1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRh YmxlIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJf Zm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVi X3Rlc3QiCiAKQEAgLTEzNCwxMCArMTM0LDEwIEBAIEVSUk9SOiAgcmVsYXRpb24gInRlc3Rw dWJfbm9wayIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCiAtLSBzaG91bGQgYmUg YWJsZSB0byBzZXQgdGFibGUgdG8gc2NoZW1hIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3Br OwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAg ICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAKQEAgLTE1OSwxMCArMTU5LDEwIEBAIFB1Ymxp Y2F0aW9uczoKICAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMiCiAKIFxkUnArIHRlc3RwdWJf Zm9yYWxsdGFibGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg dCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgfCBmICAgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIERST1AgVEFCTEUg dGVzdHB1Yl90YmwyOwpAQCAtMTc0LDI0ICsxNzQsNTIwIEBAIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViMwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIz CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl90YmwzIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKIAogXGRScCsg dGVzdHB1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNAorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKIAog RFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7CiBEUk9QIFBVQkxJQ0FU SU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKKy0tLSBhZGRpbmcgc2VxdWVuY2VzCitDUkVBVEUg U0VRVUVOQ0UgdGVzdHB1Yl9zZXEwOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3Rw dWJfc2VxMTsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBGT1IgQUxMIFNFUVVFTkNFUyBX SVRIIChwdWJsaXNoID0gJ3NlcXVlbmNlJyk7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgU0VUIChwdWJs aXNoID0gJ2luc2VydCwgc2VxdWVuY2UnKTsKK0NSRUFURSBTRVFVRU5DRSB0ZXN0cHViX3Nl cTI7CistLSBmYWlsIC0gY2FuJ3QgYWRkIHRvIGZvciBhbGwgc2VxdWVuY2VzIHB1YmxpY2F0 aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBBREQgU0VR VUVOQ0UgdGVzdHB1Yl9zZXEyOworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3Jh bGxzZXF1ZW5jZXMiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDog IFNlcXVlbmNlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwg U0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBkcm9wIGZyb20gYWxs IHNlcXVlbmNlcyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGxzZXF1ZW5jZXMgRFJPUCBTRVFVRU5DRSB0ZXN0cHViX3NlcTI7CitFUlJPUjogIHB1Ymxp Y2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyIgaXMgZGVmaW5lZCBhcyBGT1IgQUxM IFNFUVVFTkNFUworREVUQUlMOiAgU2VxdWVuY2VzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBk cm9wcGVkIGZyb20gRk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAt IGNhbid0IGFkZCB0byBmb3IgYWxsIHNlcXVlbmNlcyBwdWJsaWNhdGlvbgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgU0VUIFNFUVVFTkNFIHB1Yl90ZXN0 LnRlc3RwdWJfc2VxMTsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxsc2Vx dWVuY2VzIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTCitERVRBSUw6ICBTZXF1 ZW5jZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFNFUVVF TkNFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3QgYWRkIHNjaGVtYSB0byAnRk9S IEFMTCBTRVFVRU5DRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHNlcXVlbmNlcyBBREQgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7 CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyIgaXMgZGVm aW5lZCBhcyBGT1IgQUxMIFNFUVVFTkNFUworREVUQUlMOiAgU2VxdWVuY2VzIGZyb20gc2No ZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gRk9SIEFM TCBTRVFVRU5DRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGRyb3Agc2NoZW1h IGZyb20gJ0ZPUiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRFJPUCBBTEwgU0VRVUVOQ0VTIElOIFNDSEVN QSBwdWJfdGVzdDsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxsc2VxdWVu Y2VzIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTCitERVRBSUw6ICBTZXF1ZW5j ZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNl dCBvbiBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3Qg c2V0IHNjaGVtYSB0byAnRk9SIEFMTCBTRVFVRU5DRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBTRVQgQUxMIFNFUVVFTkNFUyBJ TiBTQ0hFTUEgcHViX3Rlc3Q7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFs bHNlcXVlbmNlcyIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFNFUVVFTkNFUworREVUQUlMOiAg U2VxdWVuY2VzIGZyb20gc2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9t LCBvciBzZXQgb24gRk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb25zLgorU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9yc2VxdWVuY2UgRk9SIFNFUVVFTkNFIHRlc3RwdWJfc2VxMDsKK1JFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CistLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgc2NoZW1hIHRvICdGT1Ig U0VRVUVOQ0UnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNl cXVlbmNlIEFERCBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRl c3RwdWJfZm9yc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzZXF1ZW5jZQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICB8IGYKK1NlcXVlbmNlczoKKyAgICAicHVibGljLnRlc3RwdWJf c2VxMCIKK1NlcXVlbmNlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorCistLSBz aG91bGQgYmUgYWJsZSB0byBkcm9wIHNjaGVtYSBmcm9tICdGT1IgU0VRVUVOQ0UnIHB1Ymxp Y2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIERST1AgQUxM IFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX2ZvcnNlcXVl bmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9yc2VxdWVuY2UKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAg ICAgfCBmCitTZXF1ZW5jZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3NlcTAiCisKKy0tIHNo b3VsZCBiZSBhYmxlIHRvIHNldCBzY2hlbWEgdG8gJ0ZPUiBTRVFVRU5DRScgcHVibGljYXRp b24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2VxdWVuY2UgU0VUIEFMTCBTRVFV RU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9mb3JzZXF1ZW5jZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2ZvcnNlcXVlbmNlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwg ZgorU2VxdWVuY2VzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisKK1NFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnNjaGVtYSBGT1IgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gZmFpbCAtIGNhbid0IGNyZWF0ZSBwdWJsaWNh dGlvbiB3aXRoIHNjaGVtYSBhbmQgdGFibGUgb2YgdGhlIHNhbWUgc2NoZW1hCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jfc2VxX3NjaGVtYSBGT1IgQUxMIFNFUVVFTkNFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QsIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKK0VS Uk9SOiAgY2Fubm90IGFkZCByZWxhdGlvbiAicHViX3Rlc3QudGVzdHB1Yl9zZXExIiB0byBw dWJsaWNhdGlvbgorREVUQUlMOiAgU2VxdWVuY2UncyBzY2hlbWEgInB1Yl90ZXN0IiBpcyBh bHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9yIHBhcnQgb2YgdGhlIHNwZWNpZmll ZCBzY2hlbWEgbGlzdC4KKy0tIGZhaWwgLSBjYW4ndCBhZGQgYSBzZXF1ZW5jZSBvZiB0aGUg c2FtZSBzY2hlbWEgdG8gdGhlIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2Vx MTsKK0VSUk9SOiAgY2Fubm90IGFkZCByZWxhdGlvbiAicHViX3Rlc3QudGVzdHB1Yl9zZXEx IiB0byBwdWJsaWNhdGlvbgorREVUQUlMOiAgU2VxdWVuY2UncyBzY2hlbWEgInB1Yl90ZXN0 IiBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9yIHBhcnQgb2YgdGhlIHNw ZWNpZmllZCBzY2hlbWEgbGlzdC4KKy0tIGZhaWwgLSBjYW4ndCBkcm9wIGEgc2VxdWVuY2Ug ZnJvbSB0aGUgc2NoZW1hIHB1YmxpY2F0aW9uIHdoaWNoIGlzbid0IGluIHRoZQorLS0gcHVi bGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIERST1AgU0VR VUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXExOworRVJST1I6ICByZWxhdGlvbiAidGVzdHB1 Yl9zZXExIiBpcyBub3QgcGFydCBvZiB0aGUgcHVibGljYXRpb24KKy0tIHNob3VsZCBiZSBh YmxlIHRvIHNldCBzZXF1ZW5jZSB0byBzY2hlbWEgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHVi X3NlcTE7CitcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitTZXF1ZW5jZXM6CisgICAgInB1 Yl90ZXN0LnRlc3RwdWJfc2VxMSIKKworU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywg cHViYWxsc2VxdWVuY2VzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0 ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyc7CisgICAgICAgICBwdWJuYW1lICAgICAgICAgfCBw dWJhbGx0YWJsZXMgfCBwdWJhbGxzZXF1ZW5jZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdHB1Yl9mb3JhbGxz ZXF1ZW5jZXMgfCBmICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK1xkKyBwdWJfdGVzdC50 ZXN0cHViX3NlcTEKKyAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0 LnRlc3RwdWJfc2VxMSIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhp bXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAzNjg1 NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGljYXRpb25zOgor ICAgICJ0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyIKKyAgICAidGVzdHB1Yl9mb3JzY2hlbWEi CisgICAgInRlc3RwdWJfZm9yc2VxdWVuY2UiCisKK1xkUnArIHRlc3RwdWJfZm9yYWxsc2Vx dWVuY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcworICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8IGYg ICAgICAgICB8IGYKKygxIHJvdykKKworRFJPUCBTRVFVRU5DRSB0ZXN0cHViX3NlcTAsIHB1 Yl90ZXN0LnRlc3RwdWJfc2VxMSwgdGVzdHB1Yl9zZXEyOworRFJPUCBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcywgdGVzdHB1Yl9mb3JzZXF1ZW5jZSwgdGVzdHB1Yl9m b3JzY2hlbWE7CistLSBQdWJsaWNhdGlvbiBtaXhpbmcgdGFibGVzIGFuZCBzZXF1ZW5jZXMK K1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX21peDsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitDUkVBVEUgU0VR VUVOQ0UgdGVzdHB1Yl9zZXExOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJf c2VxMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4IEFERCBTRVFVRU5DRSB0ZXN0 cHViX3NlcTEsIFRBQkxFIHRlc3RwdWJfdGJsMTsKK1xkUnArIHRlc3RwdWJfbWl4CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX21peAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVu Y2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxl czoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKK1NlcXVlbmNlczoKKyAgICAicHVibGlj LnRlc3RwdWJfc2VxMSIKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9taXggQUREIEFM TCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBBTEwgVEFCTEVTIElOIFNDSEVNQSBw dWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfbWl4CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX21peAorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsMSIKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorU2VxdWVu Y2VzOgorICAgICJwdWJsaWMudGVzdHB1Yl9zZXExIgorU2VxdWVuY2VzIGZyb20gc2NoZW1h czoKKyAgICAicHViX3Rlc3QiCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4IERS T1AgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21p eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9taXgKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBm CitUYWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCitUYWJsZXMgZnJvbSBzY2hl bWFzOgorICAgICJwdWJfdGVzdCIKK1NlcXVlbmNlczoKKyAgICAicHVibGljLnRlc3RwdWJf c2VxMSIKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9taXggRFJPUCBBTEwgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfbWl4CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X21peAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAi cHVibGljLnRlc3RwdWJfdGJsMSIKK1NlcXVlbmNlczoKKyAgICAicHVibGljLnRlc3RwdWJf c2VxMSIKKworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX21peDsKK0RST1AgU0VRVUVOQ0Ug dGVzdHB1Yl9zZXExOworRFJPUCBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHViX3NlcTI7Cist LSBtYWtlIHN1cmUgd2UgcmVwbGljYXRlIG9ubHkgdGhlIGNvcnJlY3QgcmVsYXRpb24gdHlw ZQorQ1JFQVRFIFNDSEVNQSBwdWJfdGVzdDE7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3Qx LnRlc3Rfc2VxMTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdDEudGVzdF90YmwxIChhIGludCBw cmltYXJ5IGtleSwgYiBpbnQpOworQ1JFQVRFIFNDSEVNQSBwdWJfdGVzdDI7CitDUkVBVEUg U0VRVUVOQ0UgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdDIu dGVzdF90YmwyIChhIGludCBwcmltYXJ5IGtleSwgYiBpbnQpOworU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1h czsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBhZGQgdGFibGVzIGZyb20gb25l IHNjaGVtYSwgc2VxdWVuY2VzIGZyb20gdGhlIG90aGVyCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3NjaGVtYXMgQUREIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgQUxMIFNFUVVFTkNFUyBJTiBT Q0hFTUEgcHViX3Rlc3QxOworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9z Y2hlbWFzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzIGZyb20g c2NoZW1hczoKKyAgICAicHViX3Rlc3QyIgorU2VxdWVuY2VzIGZyb20gc2NoZW1hczoKKyAg ICAicHViX3Rlc3QxIgorCitcZG4rIHB1Yl90ZXN0MQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc2NoZW1hcworICAgTmFtZSAgICB8ICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFjY2VzcyBwcml2aWxlZ2VzIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0KKyBwdWJfdGVzdDEgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCAgICAg ICAgICAgICAgICAgICB8IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMi IChzZXF1ZW5jZXMpCisKK1xkbisgcHViX3Rlc3QyCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzY2hlbWFzCisgICBOYW1lICAgIHwgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIHB1Yl90ZXN0MiB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8ICAgICAg ICAgICAgICAgICAgIHwgCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIg KHRhYmxlcykKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CisgICAgICAgICAgICAgICAg ICAgICAgICBTZXF1ZW5jZSAicHViX3Rlc3QxLnRlc3Rfc2VxMSIKKyAgVHlwZSAgfCBTdGFy dCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVz PyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEg fCAgICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAg fCAgICAgMQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBw dWJfdGVzdDEudGVzdF90YmwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRh YmxlICJwdWJfdGVzdDEudGVzdF90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJ0ZXN0X3RibDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorCitcZCsg cHViX3Rlc3QyLnRlc3Rfc2VxMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcXVlbmNl ICJwdWJfdGVzdDIudGVzdF9zZXEyIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8ICAg ICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCistLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8ICAgICAgIDEgfCA5MjIz MzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8ICAgICAxCisKK1xkKyBw dWJfdGVzdDIudGVzdF90YmwyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRh YmxlICJwdWJfdGVzdDIudGVzdF90YmwyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAg ICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJ0ZXN0X3RibDJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorUHVibGlj YXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKKy0tIGFkZCB0aGUgb3RoZXIgb2Jq ZWN0IHR5cGUgZnJvbSBlYWNoIHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9z Y2hlbWFzIEFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0MjsKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hcwor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2Vz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlcyBmcm9tIHNjaGVtYXM6 CisgICAgInB1Yl90ZXN0MSIKKyAgICAicHViX3Rlc3QyIgorU2VxdWVuY2VzIGZyb20gc2No ZW1hczoKKyAgICAicHViX3Rlc3QxIgorICAgICJwdWJfdGVzdDIiCisKK1xkbisgcHViX3Rl c3QxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzY2hlbWFzCisgICBO YW1lICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHB1Yl90ZXN0MSB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8ICAgICAgICAgICAgICAgICAgIHwgCitQdWJsaWNhdGlv bnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIgKHNlcXVlbmNlcykKKyAgICAidGVzdHB1Yl9z Y2hlbWFzIiAodGFibGVzKQorCitcZG4rIHB1Yl90ZXN0MgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc2NoZW1hcworICAgTmFtZSAgICB8ICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFjY2VzcyBwcml2aWxlZ2VzIHwgRGVzY3JpcHRpb24gCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyBwdWJfdGVzdDIgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCAg ICAgICAgICAgICAgICAgICB8IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVt YXMiICh0YWJsZXMpCisgICAgInRlc3RwdWJfc2NoZW1hcyIgKHNlcXVlbmNlcykKKworXGQr IHB1Yl90ZXN0MS50ZXN0X3NlcTE7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5j ZSAicHViX3Rlc3QxLnRlc3Rfc2VxMSIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAg ICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIy MzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGlj YXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDEudGVzdF90 YmwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDEu dGVzdF90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAg ICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3Ri bDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorUHVibGljYXRpb25zOgorICAgICJ0 ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF9zZXEyOworICAgICAgICAg ICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0Mi50ZXN0X3NlcTIiCisgIFR5cGUg IHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8 IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8 ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBu byAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgor CitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUYWJsZSAicHViX3Rlc3QyLnRlc3RfdGJsMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor SW5kZXhlczoKKyAgICAidGVzdF90YmwyX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoYSkK K1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgorCistLSBub3cgZHJvcCB0 aGUgb2JqZWN0IHR5cGUgYWRkZWQgZmlyc3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c2NoZW1hcyBEUk9QIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBEUk9QIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1B IHB1Yl90ZXN0MTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1h cworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlcyBmcm9tIHNjaGVt YXM6CisgICAgInB1Yl90ZXN0MSIKK1NlcXVlbmNlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1 Yl90ZXN0MiIKKworXGRuKyBwdWJfdGVzdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHNjaGVtYXMKKyAgIE5hbWUgICAgfCAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBY2Nlc3MgcHJpdmlsZWdlcyB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgcHViX3Rlc3QxIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgICAgICAgICAg ICAgICAgICAgfCAKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIiAodGFi bGVzKQorCitcZG4rIHB1Yl90ZXN0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc2NoZW1hcworICAgTmFtZSAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFjY2VzcyBwcml2aWxlZ2VzIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K KyBwdWJfdGVzdDIgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCAgICAgICAgICAgICAg ICAgICB8IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiIChzZXF1ZW5j ZXMpCisKK1xkKyBwdWJfdGVzdDEudGVzdF9zZXExOworICAgICAgICAgICAgICAgICAgICAg ICAgU2VxdWVuY2UgInB1Yl90ZXN0MS50ZXN0X3NlcTEiCisgIFR5cGUgIHwgU3RhcnQgfCBN aW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBD YWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAg ICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAg IDEKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVGFibGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0 YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAg ICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKK0luZGV4ZXM6CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUg KGEpCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90 ZXN0Mi50ZXN0X3NlcTI7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHVi X3Rlc3QyLnRlc3Rfc2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBN YXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAz Njg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGljYXRpb25z OgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDIudGVzdF90 YmwyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor IGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3RibDJfcGtl eSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorCistLSBzaG91bGQgZmFpbCAocHVibGljYXRp b24gY29udGFpbnMgdGhlIHdob2xlIHNjaGVtYSkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfc2NoZW1hcyBBREQgVEFCTEUgcHViX3Rlc3QxLnRlc3RfdGJsMTsKK0VSUk9SOiAgY2Fu bm90IGFkZCByZWxhdGlvbiAicHViX3Rlc3QxLnRlc3RfdGJsMSIgdG8gcHVibGljYXRpb24K K0RFVEFJTDogIFRhYmxlJ3Mgc2NoZW1hICJwdWJfdGVzdDEiIGlzIGFscmVhZHkgcGFydCBv ZiB0aGUgcHVibGljYXRpb24gb3IgcGFydCBvZiB0aGUgc3BlY2lmaWVkIHNjaGVtYSBsaXN0 LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBTRVFVRU5DRSBwdWJf dGVzdDIudGVzdF9zZXEyOworRVJST1I6ICBjYW5ub3QgYWRkIHJlbGF0aW9uICJwdWJfdGVz dDIudGVzdF9zZXEyIiB0byBwdWJsaWNhdGlvbgorREVUQUlMOiAgU2VxdWVuY2UncyBzY2hl bWEgInB1Yl90ZXN0MiIgaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiBvciBw YXJ0IG9mIHRoZSBzcGVjaWZpZWQgc2NoZW1hIGxpc3QuCistLSBzaG91bGQgd29yayAoZGlm ZmVyZW50IHNjaGVtYSkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQg VEFCTEUgcHViX3Rlc3QyLnRlc3RfdGJsMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c2NoZW1hcyBBREQgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkUnArIHRlc3Rw dWJfc2NoZW1hcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQg ICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHViX3Rlc3QyLnRlc3RfdGJsMiIKK1RhYmxl cyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0MSIKK1NlcXVlbmNlczoKKyAgICAicHVi X3Rlc3QxLnRlc3Rfc2VxMSIKK1NlcXVlbmNlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90 ZXN0MiIKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CisgICAgICAgICAgICAgICAgICAg ICAgICBTZXF1ZW5jZSAicHViX3Rlc3QxLnRlc3Rfc2VxMSIKKyAgVHlwZSAgfCBTdGFydCB8 IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8 IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAg ICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAg ICAgMQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJf dGVzdDEudGVzdF90YmwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxl ICJwdWJfdGVzdDEudGVzdF90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgor ICAgICJ0ZXN0X3RibDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorUHVibGljYXRp b25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF9zZXEy OworICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0Mi50ZXN0X3Nl cTIiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8 IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAg ICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1 Yl9zY2hlbWFzIgorCitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QyLnRlc3RfdGJsMiIKKyBDb2x1bW4g fCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8 IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxs IHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwyX3BrZXkiIFBSSU1BUlkgS0VZ LCBidHJlZSAoYSkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgorCist LSBub3cgZHJvcCB0aGUgZXhwbGljaXRseSBhZGRlZCBvYmplY3RzIGFnYWluCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgRFJPUCBUQUJMRSBwdWJfdGVzdDIudGVzdF90 YmwyOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIERST1AgU0VRVUVOQ0Ug cHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfc2NoZW1hcworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2Vz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlcyBm cm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0MSIKK1NlcXVlbmNlcyBmcm9tIHNjaGVtYXM6 CisgICAgInB1Yl90ZXN0MiIKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CisgICAgICAg ICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHViX3Rlc3QxLnRlc3Rfc2VxMSIKKyAgVHlw ZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50 IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50 IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8 IG5vICAgICAgfCAgICAgMQorCitcZCsgcHViX3Rlc3QxLnRlc3RfdGJsMTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QxLnRlc3RfdGJsMSIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3Rv cmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwxX3BrZXkiIFBSSU1B UlkgS0VZLCBidHJlZSAoYSkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFz IgorCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKKyAgICAgICAgICAgICAgICAgICAgICAg IFNlcXVlbmNlICJwdWJfdGVzdDIudGVzdF9zZXEyIgorICBUeXBlICB8IFN0YXJ0IHwgTWlu aW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2Fj aGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8ICAgICAg IDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8ICAgICAx CitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0 Mi50ZXN0X3RibDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1 Yl90ZXN0Mi50ZXN0X3RibDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAg InRlc3RfdGJsMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCisKK0RST1AgUFVCTElD QVRJT04gdGVzdHB1Yl9zY2hlbWFzOworRFJPUCBUQUJMRSBwdWJfdGVzdDEudGVzdF90Ymwx LCBwdWJfdGVzdDIudGVzdF90YmwyOworRFJPUCBTRVFVRU5DRSBwdWJfdGVzdDEudGVzdF9z ZXExLCBwdWJfdGVzdDIudGVzdF9zZXEyOworRFJPUCBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJf dGVzdDI7CiAtLSBUZXN0cyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCiBTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jw YXJ0ZWQ7CkBAIC0yMDcsMTAgKzcwMywxMCBAQCBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNF VCBhID0gMTsKIC0tIG9ubHkgcGFyZW50IGlzIGxpc3RlZCBhcyBiZWluZyBpbiBwdWJsaWNh dGlvbiwgbm90IHRoZSBwYXJ0aXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y cGFydGVkIEFERCBUQUJMRSB0ZXN0cHViX3BhcnRlZDsKIFxkUnArIHRlc3RwdWJfZm9ycGFy dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcGFydGVk IgogCkBAIC0yMjMsMTAgKzcxOSwxMCBAQCBBTFRFUiBUQUJMRSB0ZXN0cHViX3BhcnRlZCBE RVRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcGFydGVkMTsKIFVQREFURSB0ZXN0cHViX3BhcnRl ZDEgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgU0VU IChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogXGRScCsgdGVzdHB1Yl9m b3JwYXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9w YXJ0ZWQiCiAKQEAgLTI1NSwyMCArNzUxLDIwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgVEFCTEUgdGVz dHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDIgV0hFUkUgKGMgPD4gJ3Rlc3QnIEFORCBk IDwgNSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVz dHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVSRSAoKGMg PD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKIAogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDEwMDAgQU5EIGUg PCAyMDAwKTsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgfCBmICAgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgo YyA8PiAndGVzdCc6OnRleHQpIEFORCAoZCA8IDUpKQpAQCAtMjc2LDEwICs3NzIsMTAgQEAg VGFibGVzOgogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBEUk9QIFRBQkxFIHRlc3Rw dWJfcmZfdGJsMjsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Ymxp Yy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJF ICgoZSA+IDEwMDApIEFORCAoZSA8IDIwMDApKQpAQCAtMjg3LDEwICs3ODMsMTAgQEAgVGFi bGVzOgogLS0gcmVtb3ZlIHRlc3RwdWJfcmZfdGJsMSBhbmQgYWRkIHRlc3RwdWJfcmZfdGJs MyBhZ2FpbiAoYW5vdGhlciBXSEVSRSBleHByZXNzaW9uKQogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDMwMCBBTkQg ZSA8IDUwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMu dGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAzMDApIEFORCAoZSA8IDUwMCkpCiAKQEAg LTMxNSwxMCArODExLDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDEgRk9SIFRBQkxFIHRlc3RwdWJf cmZfdGJsMSwgT05MWSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCA5OTkpIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsg dGVzdHB1Yl9zeW50YXgxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0 cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFIChlIDwg OTk5KQpAQCAtMzI4LDEwICs4MjQsMTAgQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MiBGT1IgVEFCTEUg dGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1IFdI RVJFIChoIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9zeW50YXgyCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1 ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJ0ZXN0cHViX3JmX3Nj aGVtYTEudGVzdHB1Yl9yZl90Ymw1IiBXSEVSRSAoaCA8IDk5OSkKQEAgLTYzNiwxMCArMTEz MiwxMCBAQCBFUlJPUjogIHJlbGF0aW9uICJ0ZXN0cHViX3RibDEiIGlzIGFscmVhZHkgbWVt YmVyIG9mIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRibAogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGJsIEZPUiBUQUJMRSB0ZXN0cHViX3RibDE7CiBFUlJPUjogIHB1Ymxp Y2F0aW9uICJ0ZXN0cHViX2ZvcnRibCIgYWxyZWFkeSBleGlzdHMKIFxkUnArIHRlc3RwdWJf Zm9ydGJsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnRibAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9w ayIKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKQEAgLTY3NywxMCArMTE3MywxMCBAQCBQ dWJsaWNhdGlvbnM6CiAgICAgInRlc3RwdWJfZm9ydGJsIgogCiBcZFJwKyB0ZXN0cHViX2Rl ZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3Br IgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtNzU4LDEwICsxMjU0LDEwIEBAIFJF Vk9LRSBDUkVBVEUgT04gREFUQUJBU0UgcmVncmVzc2lvbiBGUk9NIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlcjI7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcGFydGVkOwogRFJPUCBUQUJMRSB0 ZXN0cHViX3RibDE7CiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZGVmYXVsdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVu Y2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJv dykKIAogLS0gZmFpbCAtIG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24KQEAgLTc3MSwy MCArMTI2NywyMCBAQCBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24gdGVz dHB1Yl9kZWZhdWx0CiBSRVNFVCBST0xFOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9k ZWZhdWx0IFJFTkFNRSBUTyB0ZXN0cHViX2ZvbzsKIFxkUnAgdGVzdHB1Yl9mb28KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0 aW9ucwotICAgIE5hbWUgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHRlc3RwdWJfZm9vIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgTmFtZSAgICAgfCAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cHViX2ZvbyB8IHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQog CiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb28gUkVOQU1FIFRPIHRlc3RwdWJfZGVmYXVsdDsKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIyOwogXGRScCB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHRlc3RwdWJfZGVmYXVsdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwdWJfZGVmYXVsdCB8 IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAg ICB8IGYKICgxIHJvdykKIAogLS0gYWRkaW5nIHNjaGVtYXMgYW5kIHRhYmxlcwpAQCAtODAw LDE5ICsxMjk2LDE5IEBAIENSRUFURSBUQUJMRSAiQ1VSUkVOVF9TQ0hFTUEiLiJDVVJSRU5U X1NDSEVNQSIoaWQgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRk9SIEFMTCBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVt YQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIyX2ZvcnNjaGVtYSBGT1IgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDIsIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIy X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAg InB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtODI2LDQ0ICsxMzIyLDQ0IEBAIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNl9mb3JzY2hlbWEgRk9SIEFMTCBUQUJMRVMgSU4g U0NIRU1BICJDVVJSRU5UX1NDSEVNQSIsCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBGT1IgVEFCTEUgIkNVUlJFTlRfU0NIRU1BIi4iQ1VSUkVOVF9TQ0hFTUEiOwog UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1YmxpYyIKIAog XGRScCsgdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjRfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20g c2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEiCiAKIFxkUnArIHRlc3RwdWI1X2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWI1X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1X2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJF TlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWI2X2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2X2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NI RU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJDVVJSRU5UX1NDSEVNQS5DVVJSRU5UX1NDSEVNQSIKIApA QCAtODk3LDEwICsxMzkzLDEwIEBAIEVSUk9SOiAgc2NoZW1hICJ0ZXN0cHViX3ZpZXciIGRv ZXMgbm90IGV4aXN0CiAtLSBkcm9wcGluZyB0aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRo ZSBjaGFuZ2UgaW4gcHVibGljYXRpb24KIERST1AgU0NIRU1BIHB1Yl90ZXN0MzsKIFxkUnAr IHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtOTA4LDIwICsxNDA0 LDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSByZW5hbWluZyB0aGUgc2NoZW1hIHNo b3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGljYXRpb24KIEFMVEVSIFNDSEVNQSBw dWJfdGVzdDEgUkVOQU1FIHRvIHB1Yl90ZXN0MV9yZW5hbWVkOwogXGRScCsgdGVzdHB1YjJf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAi cHViX3Rlc3QxX3JlbmFtZWQiCiAgICAgInB1Yl90ZXN0MiIKIAogQUxURVIgU0NIRU1BIHB1 Yl90ZXN0MV9yZW5hbWVkIFJFTkFNRSB0byBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMl9m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJw dWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTkyOSwxMCArMTQyNSwxMCBAQCBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogLS0gYWx0ZXIgcHVibGljYXRpb24gYWRkIHNjaGVtYQogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBBTEwgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90 ZXN0MiIKQEAgLTk0MSwxMCArMTQzNywxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBBTEwgVEFCTEVTIElOIFND SEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVu dF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAg ICAgInB1Yl90ZXN0MiIKQEAgLTk1MywxMCArMTQ0OSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hl bWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBBTEwgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBFUlJPUjogIHNjaGVtYSAicHViX3Rlc3QxIiBp cyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1YjFfZm9yc2NoZW1hIgog XGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20g c2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC05NjQsMTAg KzE0NjAsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1YmxpY2F0aW9u IGRyb3Agc2NoZW1hCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJP UCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJf dGVzdDEiCiAKQEAgLTk3NSwxMCArMTQ3MSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgog QUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QyOwogRVJST1I6ICB0YWJsZXMgZnJvbSBzY2hlbWEgInB1Yl90 ZXN0MiIgYXJlIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgogXGRScCsgdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAi cHViX3Rlc3QxIgogCkBAIC05ODYsMjkgKzE0ODIsMjkgQEAgVGFibGVzIGZyb20gc2NoZW1h czoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9QIEFMTCBUQUJM RVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9u X2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90 ZXN0MSIKIAogLS0gZHJvcCBhbGwgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjFfZm9yc2NoZW1hIERST1AgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRS cCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2No ZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBTZXF1ZW5jZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBh bHRlciBwdWJsaWNhdGlvbiBzZXQgbXVsdGlwbGUgc2NoZW1hCiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 MSwgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xMDE3LDEwICsxNTEzLDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIEFMTCBUQUJMRVMgSU4gU0NI RU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50 X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQg ICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAg ICAicHViX3Rlc3QyIgpAQCAtMTAyOSwxMCArMTUyNSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hl bWFzOgogLS0gcmVtb3ZpbmcgdGhlIGR1cGxpY2F0ZSBzY2hlbWFzCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MSwgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBTZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xMTAy LDE4ICsxNTk4LDE4IEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWE7CiBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBT ZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgog KDEgcm93KQogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VUIEFM TCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIz X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgU2VxdWVuY2VzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0 MSIKIApAQCAtMTEyMywyMCArMTYxOSwyMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JzY2hlbWFfZm9ydGFibGUgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 MQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hIEZPUiBU QUJMRSBwdWJfdGVzdDIudGJsMSwgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwog UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hX2Zv cnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X2ZvcnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFNlcXVlbmNlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0 Mi50YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCiBcZFJw KyB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9ydGFibGVfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBT ZXF1ZW5jZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJfdGVzdDIudGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBA IC0xMTgwLDQwICsxNjc2LDg1IEBAIENSRUFURSBTQ0hFTUEgc2NoMTsKIENSRUFURSBTQ0hF TUEgc2NoMjsKIENSRUFURSBUQUJMRSBzY2gxLnRibDEgKGEgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UoYSk7CiBDUkVBVEUgVEFCTEUgc2NoMi50YmwxX3BhcnQxIFBBUlRJVElPTiBPRiBz Y2gxLnRibDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTApOworQ1JFQVRFIFNFUVVFTkNF IHNjaDEuc2VxMTsKK0NSRUFURSBTRVFVRU5DRSBzY2gyLnNlcTI7CiAtLSBTY2hlbWEgcHVi bGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzY2hlbWEgdGhhdCBoYXMgdGhl IHBhcmVudCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEgc2NoMiBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKK0FM VEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMjsK IFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOwogIHB1Ym5hbWUgfCBzY2hl bWFuYW1lIHwgdGFibGVuYW1lICAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCiAgcHViICAgICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQxCiAoMSByb3cpCiAKK1NF TEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hl bWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2VxMgorKDEgcm93KQorCiBEUk9Q IFBVQkxJQ0FUSU9OIHB1YjsKIC0tIFRhYmxlIHB1YmxpY2F0aW9uIHRoYXQgZG9lcyBub3Qg aW5jbHVkZSB0aGUgcGFyZW50IHRhYmxlCiBDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBU QUJMRSBzY2gyLnRibDFfcGFydDEgV0lUSCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9 MSk7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFIHNjaDIuc2VxMjsKIFNF TEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOwogIHB1Ym5hbWUgfCBzY2hlbWFu YW1lIHwgdGFibGVuYW1lICAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CiAgcHViICAgICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQxCiAoMSByb3cpCiAKK1NFTEVD VCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFu YW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2VxMgorKDEgcm93KQorCiAtLSBUYWJs ZSBwdWJsaWNhdGlvbiB0aGF0IGluY2x1ZGVzIGJvdGggdGhlIHBhcmVudCB0YWJsZSBhbmQg dGhlIGNoaWxkIHRhYmxlCiBBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFRBQkxFIHNjaDEu dGJsMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0Ugc2NoMS5zZXExOwog U0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CiAgcHVibmFtZSB8IHNjaGVt YW5hbWUgfCB0YWJsZW5hbWUgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CiAgcHViICAgICB8IHNjaDEgICAgICAgfCB0YmwxCiAoMSByb3cpCiAKK1NFTEVDVCAqIEZS T00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwg c2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQor IHB1YiAgICAgfCBzY2gxICAgICAgIHwgc2VxMQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwg c2VxMgorKDIgcm93cykKKwogRFJPUCBQVUJMSUNBVElPTiBwdWI7CiAtLSBTY2hlbWEgcHVi bGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzY2hlbWEgdGhhdCBoYXMgdGhl IHBhcmVudCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEgc2NoMiBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKK0FM VEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0Ugc2NoMS5zZXExOwogU0VMRUNUICog RlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CiAgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0 YWJsZW5hbWUgIAogLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KICBwdWIg ICAgIHwgc2NoMiAgICAgICB8IHRibDFfcGFydDEKICgxIHJvdykKIAorU0VMRUNUICogRlJP TSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBz ZXF1ZW5jZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisg cHViICAgICB8IHNjaDEgICAgICAgfCBzZXExCisoMSByb3cpCisKK0RST1AgUFVCTElDQVRJ T04gcHViOworLS0gU2VxdWVuY2UgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiBw dWIgRk9SIFNFUVVFTkNFIHNjaDIuc2VxMjsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRp b25fdGFibGVzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVuYW1lIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJP TSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBz ZXF1ZW5jZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisg cHViICAgICB8IHNjaDIgICAgICAgfCBzZXEyCisoMSByb3cpCisKIERST1AgUFVCTElDQVRJ T04gcHViOwogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRo ZSBwYXJlbnQgdGFibGUKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIu dGJsMV9wYXJ0MSBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKQEAgLTEy MjMsMTQgKzE3NjQsMjYgQEAgU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7 CiAgcHViICAgICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQxCiAoMSByb3cpCiAKK1NFTEVD VCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFu YW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLQorKDAgcm93cykKKwogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBpbmNsdWRlcyBi b3RoIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZSBjaGlsZCB0YWJsZQogQUxURVIgUFVCTElD QVRJT04gcHViIEFERCBUQUJMRSBzY2gxLnRibDE7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIg QUREIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaDI7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1 YmxpY2F0aW9uX3RhYmxlczsKICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSAg CiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQogIHB1YiAgICAgfCBzY2gy ICAgICAgIHwgdGJsMV9wYXJ0MQogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIHBnX3B1Ymxp Y2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFt ZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwg c2NoMiAgICAgICB8IHNlcTIKKygxIHJvdykKKwogRFJPUCBQVUJMSUNBVElPTiBwdWI7CiBE Uk9QIFRBQkxFIHNjaDIudGJsMV9wYXJ0MTsKIERST1AgVEFCTEUgc2NoMS50YmwxOwpAQCAt MTI0Niw5ICsxNzk5LDgxIEBAIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVz OwogIHB1YiAgICAgfCBzY2gxICAgICAgIHwgdGJsMQogKDEgcm93KQogCitTRUxFQ1QgKiBG Uk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8 IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKK0RST1AgUFVCTElDQVRJT04gcHViOworLS0gU2NoZW1hIHB1YmxpY2F0 aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBTRVFVRU5DRSBzY2gyLnNlcTI7CitT RUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKKyBwdWJuYW1lIHwgc2NoZW1h bmFtZSB8IHRhYmxlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOwor IHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2VxMgor KDEgcm93KQorCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKKy0tIFNlcXVlbmNlIHB1YmxpY2F0 aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBBTEwgU0VRVUVOQ0VTIElOIFNDSEVN QSBzY2gyOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CisgcHVibmFt ZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3Nl cXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMiAgICAg ICB8IHNlcTIKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBTRVFVRU5D RSBzY2gxLnNlcTE7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKKyBw dWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRp b25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gx ICAgICAgIHwgc2VxMQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2VxMgorKDIgcm93cykK KworQUxURVIgUFVCTElDQVRJT04gcHViIERST1AgU0VRVUVOQ0Ugc2NoMS5zZXExOworU0VM RUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CisgcHVibmFtZSB8IHNjaGVtYW5h bWUgfCB0YWJsZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiso MCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKyBw dWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMiAgICAgICB8IHNlcTIKKygx IHJvdykKKworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBBTEwgU0VRVUVOQ0VTIElOIFND SEVNQSBzY2gxOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CisgcHVi bmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMSAg ICAgICB8IHNlcTEKKyBwdWIgICAgIHwgc2NoMiAgICAgICB8IHNlcTIKKygyIHJvd3MpCisK IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKIERS T1AgVEFCTEUgc2NoMS50YmwxOworRFJPUCBTRVFVRU5DRSBzY2gxLnNlcTEsIHNjaDIuc2Vx MjsKIERST1AgU0NIRU1BIHNjaDEgY2FzY2FkZTsKIERST1AgU0NIRU1BIHNjaDIgY2FzY2Fk ZTsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKaW5kZXggMTQyMDI4OGQ2N2IuLjhiOTVlMWZmYWFhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTQyOSw2ICsxNDI5LDE0IEBAIHBnX3By ZXBhcmVkX3hhY3RzfCBTRUxFQ1QgcC50cmFuc2FjdGlvbiwKICAgIEZST00gKChwZ19wcmVw YXJlZF94YWN0KCkgcCh0cmFuc2FjdGlvbiwgZ2lkLCBwcmVwYXJlZCwgb3duZXJpZCwgZGJp ZCkKICAgICAgTEVGVCBKT0lOIHBnX2F1dGhpZCB1IE9OICgocC5vd25lcmlkID0gdS5vaWQp KSkKICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04gKChwLmRiaWQgPSBkLm9pZCkp KTsKK3BnX3B1YmxpY2F0aW9uX3NlcXVlbmNlc3wgU0VMRUNUIHAucHVibmFtZSwKKyAgICBu Lm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAgICBjLnJlbG5hbWUgQVMgc2VxdWVuY2VuYW1l CisgICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAsCisgICAgTEFURVJBTCBwZ19nZXRfcHVibGlj YXRpb25fc2VxdWVuY2VzKChwLnB1Ym5hbWUpOjp0ZXh0KSBncHMocmVsaWQpLAorICAgIChw Z19jbGFzcyBjCisgICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gKChuLm9pZCA9IGMucmVs bmFtZXNwYWNlKSkpCisgIFdIRVJFIChjLm9pZCA9IGdwcy5yZWxpZCk7CiBwZ19wdWJsaWNh dGlvbl90YWJsZXN8IFNFTEVDVCBwLnB1Ym5hbWUsCiAgICAgbi5uc3BuYW1lIEFTIHNjaGVt YW5hbWUsCiAgICAgYy5yZWxuYW1lIEFTIHRhYmxlbmFtZQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvb2JqZWN0X2FkZHJlc3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvb2JqZWN0X2FkZHJlc3Muc3FsCmluZGV4IDJmNDAxNTZlYjQ4Li5mOTBhZmFkODA0NSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0X2FkZHJlc3Muc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9hZGRyZXNzLnNxbApAQCAtMTQzLDcg KzE0Myw2IEBAIFNFTEVDVCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoJ3B1YmxpY2F0aW9uJywg J3tvbmV9JywgJ3t9Jyk7CiBTRUxFQ1QgcGdfZ2V0X29iamVjdF9hZGRyZXNzKCdwdWJsaWNh dGlvbicsICd7b25lLHR3b30nLCAne30nKTsKIFNFTEVDVCBwZ19nZXRfb2JqZWN0X2FkZHJl c3MoJ3N1YnNjcmlwdGlvbicsICd7b25lfScsICd7fScpOwogU0VMRUNUIHBnX2dldF9vYmpl Y3RfYWRkcmVzcygnc3Vic2NyaXB0aW9uJywgJ3tvbmUsdHdvfScsICd7fScpOwotCiAtLSB0 ZXN0IHN1Y2Nlc3NmdWwgY2FzZXMKIFdJVEggb2JqZWN0cyAodHlwZSwgbmFtZSwgYXJncykg QVMgKFZBTFVFUwogCQkJCSgndGFibGUnLCAne2FkZHJfbnNwLCBnZW50YWJsZX0nOjp0ZXh0 W10sICd7fSc6OnRleHRbXSksCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK aW5kZXggM2YwNGQzNDI2NGEuLjU0NDliZWY4ZGY5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsCkBAIC0yNyw3ICsyNyw3IEBAIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX3h4eCBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVlJywg cHVibGlzCiAKIFxkUnAKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNF VCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBk ZWxldGUsIHNlcXVlbmNlJyk7CiAKIFxkUnAKIApAQCAtMTA0LDYgKzEwNCwxNzkgQEAgUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0 cHViX3RibDNhOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7CiAKKy0t LSBhZGRpbmcgc2VxdWVuY2VzCitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEwOworQ1JF QVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKKworU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxs c2VxdWVuY2VzIEZPUiBBTEwgU0VRVUVOQ0VTIFdJVEggKHB1Ymxpc2ggPSAnc2VxdWVuY2Un KTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHNlcXVlbmNlcyBTRVQgKHB1Ymxpc2ggPSAnaW5zZXJ0LCBzZXF1ZW5jZScp OworCitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworLS0gZmFpbCAtIGNhbid0IGFk ZCB0byBmb3IgYWxsIHNlcXVlbmNlcyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgQUREIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsKKy0t IGZhaWwgLSBjYW4ndCBkcm9wIGZyb20gYWxsIHNlcXVlbmNlcyBwdWJsaWNhdGlvbgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRFJPUCBTRVFVRU5DRSB0 ZXN0cHViX3NlcTI7CistLSBmYWlsIC0gY2FuJ3QgYWRkIHRvIGZvciBhbGwgc2VxdWVuY2Vz IHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNl cyBTRVQgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXExOworCistLSBmYWlsIC0gY2Fu J3QgYWRkIHNjaGVtYSB0byAnRk9SIEFMTCBTRVFVRU5DRVMnIHB1YmxpY2F0aW9uCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBBREQgQUxMIFNFUVVFTkNF UyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CistLSBmYWlsIC0gY2FuJ3QgZHJvcCBzY2hlbWEgZnJv bSAnRk9SIEFMTCBTRVFVRU5DRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBEUk9QIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0OworLS0gZmFpbCAtIGNhbid0IHNldCBzY2hlbWEgdG8gJ0ZPUiBBTEwgU0VRVUVO Q0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1 ZW5jZXMgU0VUIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworCitTRVQgY2xp ZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JzZXF1ZW5jZSBGT1IgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEwOworUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKKy0tIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBzY2hlbWEgdG8gJ0ZP UiBTRVFVRU5DRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y c2VxdWVuY2UgQUREIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsg dGVzdHB1Yl9mb3JzZXF1ZW5jZQorLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEg ZnJvbSAnRk9SIFNFUVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JzZXF1ZW5jZSBEUk9QIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 OworXGRScCsgdGVzdHB1Yl9mb3JzZXF1ZW5jZQorLS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0 IHNjaGVtYSB0byAnRk9SIFNFUVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBTRVQgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVi X3Rlc3Q7CitcZFJwKyB0ZXN0cHViX2ZvcnNlcXVlbmNlCisKK1NFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVt YSBGT1IgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOworLS0gZmFpbCAtIGNhbid0IGNyZWF0ZSBwdWJsaWNhdGlvbiB3aXRo IHNjaGVtYSBhbmQgdGFibGUgb2YgdGhlIHNhbWUgc2NoZW1hCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3Jfc2VxX3NjaGVtYSBGT1IgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEg cHViX3Rlc3QsIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKKy0tIGZhaWwgLSBj YW4ndCBhZGQgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSBzY2hlbWEgdG8gdGhlIHNjaGVtYSBw dWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIFNF UVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKKy0tIGZhaWwgLSBjYW4ndCBkcm9wIGEg c2VxdWVuY2UgZnJvbSB0aGUgc2NoZW1hIHB1YmxpY2F0aW9uIHdoaWNoIGlzbid0IGluIHRo ZQorLS0gcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1h IERST1AgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXExOworLS0gc2hvdWxkIGJlIGFi bGUgdG8gc2V0IHNlcXVlbmNlIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJf c2VxMTsKK1xkUnArIHRlc3RwdWJfZm9yc2NoZW1hCisKK1NFTEVDVCBwdWJuYW1lLCBwdWJh bGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1 Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMnOworXGQrIHB1Yl90ZXN0LnRlc3Rw dWJfc2VxMQorXGRScCsgdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMKK0RST1AgU0VRVUVOQ0Ug dGVzdHB1Yl9zZXEwLCBwdWJfdGVzdC50ZXN0cHViX3NlcTEsIHRlc3RwdWJfc2VxMjsKK0RS T1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMsIHRlc3RwdWJfZm9yc2Vx dWVuY2UsIHRlc3RwdWJfZm9yc2NoZW1hOworCistLSBQdWJsaWNhdGlvbiBtaXhpbmcgdGFi bGVzIGFuZCBzZXF1ZW5jZXMKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX21peDsKK1JFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CisKK0NSRUFURSBTRVFVRU5DRSB0ZXN0cHViX3NlcTE7CitDUkVBVEUgU0VRVUVO Q0UgcHViX3Rlc3QudGVzdHB1Yl9zZXEyOworCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X21peCBBREQgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExLCBUQUJMRSB0ZXN0cHViX3RibDE7Citc ZFJwKyB0ZXN0cHViX21peAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX21peCBBREQg QUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIEFMTCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9taXgKKworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9taXggRFJPUCBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnAr IHRlc3RwdWJfbWl4CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4IERST1AgQUxM IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21peAorCitEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4OworRFJPUCBTRVFVRU5DRSB0ZXN0cHViX3NlcTE7 CitEUk9QIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMjsKKworCistLSBtYWtlIHN1 cmUgd2UgcmVwbGljYXRlIG9ubHkgdGhlIGNvcnJlY3QgcmVsYXRpb24gdHlwZQorQ1JFQVRF IFNDSEVNQSBwdWJfdGVzdDE7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2Vx MTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdDEudGVzdF90YmwxIChhIGludCBwcmltYXJ5IGtl eSwgYiBpbnQpOworCitDUkVBVEUgU0NIRU1BIHB1Yl90ZXN0MjsKK0NSRUFURSBTRVFVRU5D RSBwdWJfdGVzdDIudGVzdF9zZXEyOworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0Mi50ZXN0X3Ri bDIgKGEgaW50IHByaW1hcnkga2V5LCBiIGludCk7CisKK1NFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXM7CitS RVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCistLSBhZGQgdGFibGVzIGZyb20gb25lIHNj aGVtYSwgc2VxdWVuY2VzIGZyb20gdGhlIG90aGVyCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3NjaGVtYXMgQUREIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgQUxMIFNFUVVFTkNFUyBJTiBTQ0hF TUEgcHViX3Rlc3QxOworCitcZFJwKyB0ZXN0cHViX3NjaGVtYXMKKworXGRuKyBwdWJfdGVz dDEKK1xkbisgcHViX3Rlc3QyCisKK1xkKyBwdWJfdGVzdDEudGVzdF9zZXExOworXGQrIHB1 Yl90ZXN0MS50ZXN0X3RibDE7CisKK1xkKyBwdWJfdGVzdDIudGVzdF9zZXEyOworXGQrIHB1 Yl90ZXN0Mi50ZXN0X3RibDI7CisKKy0tIGFkZCB0aGUgb3RoZXIgb2JqZWN0IHR5cGUgZnJv bSBlYWNoIHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBB TEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3NjaGVtYXMgQUREIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKKwor XGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkbisgcHViX3Rlc3QxCitcZG4rIHB1Yl90ZXN0 MgorCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkKyBwdWJfdGVzdDEudGVzdF90Ymwx OworCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK1xkKyBwdWJfdGVzdDIudGVzdF90Ymwy OworCistLSBub3cgZHJvcCB0aGUgb2JqZWN0IHR5cGUgYWRkZWQgZmlyc3QKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBEUk9QIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0MjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBEUk9QIEFMTCBT RVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFz CisKK1xkbisgcHViX3Rlc3QxCitcZG4rIHB1Yl90ZXN0MgorCitcZCsgcHViX3Rlc3QxLnRl c3Rfc2VxMTsKK1xkKyBwdWJfdGVzdDEudGVzdF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRl c3Rfc2VxMjsKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworCistLSBzaG91bGQgZmFpbCAo cHVibGljYXRpb24gY29udGFpbnMgdGhlIHdob2xlIHNjaGVtYSkKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgVEFCTEUgcHViX3Rlc3QxLnRlc3RfdGJsMTsKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgU0VRVUVOQ0UgcHViX3Rlc3Qy LnRlc3Rfc2VxMjsKKworLS0gc2hvdWxkIHdvcmsgKGRpZmZlcmVudCBzY2hlbWEpCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFIHB1Yl90ZXN0Mi50ZXN0 X3RibDI7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFNFUVVFTkNF IHB1Yl90ZXN0MS50ZXN0X3NlcTE7CisKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworCitcZCsg cHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkKyBwdWJfdGVzdDEudGVzdF90YmwxOworCitcZCsg cHViX3Rlc3QyLnRlc3Rfc2VxMjsKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworCistLSBu b3cgZHJvcCB0aGUgZXhwbGljaXRseSBhZGRlZCBvYmplY3RzIGFnYWluCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgRFJPUCBUQUJMRSBwdWJfdGVzdDIudGVzdF90Ymwy OworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIERST1AgU0VRVUVOQ0UgcHVi X3Rlc3QxLnRlc3Rfc2VxMTsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkKyBwdWJf dGVzdDEudGVzdF9zZXExOworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisKK1xkKyBwdWJf dGVzdDIudGVzdF9zZXEyOworXGQrIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CisKK0RST1AgUFVC TElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzOworRFJPUCBUQUJMRSBwdWJfdGVzdDEudGVzdF90 YmwxLCBwdWJfdGVzdDIudGVzdF90YmwyOworRFJPUCBTRVFVRU5DRSBwdWJfdGVzdDEudGVz dF9zZXExLCBwdWJfdGVzdDIudGVzdF9zZXEyOworRFJPUCBTQ0hFTUEgcHViX3Rlc3QxLCBw dWJfdGVzdDI7CisKIC0tIFRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKIFNFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnBhcnRlZDsKQEAgLTcxNCwzMiArODg3LDUxIEBAIENSRUFURSBTQ0hFTUEgc2NoMTsK IENSRUFURSBTQ0hFTUEgc2NoMjsKIENSRUFURSBUQUJMRSBzY2gxLnRibDEgKGEgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UoYSk7CiBDUkVBVEUgVEFCTEUgc2NoMi50YmwxX3BhcnQxIFBB UlRJVElPTiBPRiBzY2gxLnRibDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTApOworQ1JF QVRFIFNFUVVFTkNFIHNjaDEuc2VxMTsKK0NSRUFURSBTRVFVRU5DRSBzY2gyLnNlcTI7CiAt LSBTY2hlbWEgcHVibGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzY2hlbWEg dGhhdCBoYXMgdGhlIHBhcmVudCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1Ig QUxMIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMiBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05f Uk9PVD0xKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgQUxMIFNFUVVFTkNFUyBJTiBT Q0hFTUEgc2NoMjsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VM RUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJ T04gcHViOwogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRo ZSBwYXJlbnQgdGFibGUKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIu dGJsMV9wYXJ0MSBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKK0FMVEVS IFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0Ugc2NoMi5zZXEyOwogU0VMRUNUICogRlJP TSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3NlcXVlbmNlczsKIAogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBpbmNsdWRlcyBib3Ro IHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZSBjaGlsZCB0YWJsZQogQUxURVIgUFVCTElDQVRJ T04gcHViIEFERCBUQUJMRSBzY2gxLnRibDE7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQURE IFNFUVVFTkNFIHNjaDEuc2VxMTsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFi bGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIERST1Ag UFVCTElDQVRJT04gcHViOwogLS0gU2NoZW1hIHB1YmxpY2F0aW9uIHRoYXQgZG9lcyBub3Qg aW5jbHVkZSB0aGUgc2NoZW1hIHRoYXQgaGFzIHRoZSBwYXJlbnQgdGFibGUKIENSRUFURSBQ VUJMSUNBVElPTiBwdWIgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHNjaDIgV0lUSCAoUFVC TElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MCk7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQURE IFNFUVVFTkNFIHNjaDEuc2VxMTsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFi bGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisKK0RST1Ag UFVCTElDQVRJT04gcHViOworLS0gU2VxdWVuY2UgcHVibGljYXRpb24KK0NSRUFURSBQVUJM SUNBVElPTiBwdWIgRk9SIFNFUVVFTkNFIHNjaDIuc2VxMjsKIFNFTEVDVCAqIEZST00gcGdf cHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1 ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJT04gcHViOwogLS0gVGFibGUgcHVibGljYXRpb24g dGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBwYXJlbnQgdGFibGUKIENSRUFURSBQVUJMSUNB VElPTiBwdWIgRk9SIFRBQkxFIHNjaDIudGJsMV9wYXJ0MSBXSVRIIChQVUJMSVNIX1ZJQV9Q QVJUSVRJT05fUk9PVD0wKTsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVz OworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIC0tIFRhYmxl IHB1YmxpY2F0aW9uIHRoYXQgaW5jbHVkZXMgYm90aCB0aGUgcGFyZW50IHRhYmxlIGFuZCB0 aGUgY2hpbGQgdGFibGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgVEFCTEUgc2NoMS50 YmwxOworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBBTEwgU0VRVUVOQ0VTIElOIFNDSEVN QSBzY2gyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1Qg KiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKIAogRFJPUCBQVUJMSUNBVElPTiBw dWI7CiBEUk9QIFRBQkxFIHNjaDIudGJsMV9wYXJ0MTsKQEAgLTc1MiwxMCArOTQ0LDM2IEBA IENSRUFURSBUQUJMRSBzY2gxLnRibDFfcGFydDMgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UoYSk7CiBBTFRFUiBUQUJMRSBzY2gxLnRibDEgQVRUQUNIIFBBUlRJVElPTiBzY2gxLnRi bDFfcGFydDMgRk9SIFZBTFVFUyBGUk9NICgyMCkgdG8gKDMwKTsKIENSRUFURSBQVUJMSUNB VElPTiBwdWIgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgV0lUSCAoUFVCTElTSF9W SUFfUEFSVElUSU9OX1JPT1Q9MSk7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3Rh YmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworCitEUk9Q IFBVQkxJQ0FUSU9OIHB1YjsKKy0tIFNjaGVtYSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YiBGT1IgU0VRVUVOQ0Ugc2NoMi5zZXEyOworU0VMRUNUICogRlJPTSBwZ19w dWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVl bmNlczsKKworRFJPUCBQVUJMSUNBVElPTiBwdWI7CistLSBTZXF1ZW5jZSBwdWJsaWNhdGlv bgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEg c2NoMjsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICog RlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1 YiBBREQgU0VRVUVOQ0Ugc2NoMS5zZXExOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKwor QUxURVIgUFVCTElDQVRJT04gcHViIERST1AgU0VRVUVOQ0Ugc2NoMS5zZXExOworU0VMRUNU ICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1Ymxp Y2F0aW9uX3NlcXVlbmNlczsKKworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBBTEwgU0VR VUVOQ0VTIElOIFNDSEVNQSBzY2gxOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90 YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKIAogUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgUFVCTElDQVRJT04gcHViOwogRFJPUCBU QUJMRSBzY2gxLnRibDE7CitEUk9QIFNFUVVFTkNFIHNjaDEuc2VxMSwgc2NoMi5zZXEyOwog RFJPUCBTQ0hFTUEgc2NoMSBjYXNjYWRlOwogRFJPUCBTQ0hFTUEgc2NoMiBjYXNjYWRlOwog CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjhfc2VxdWVuY2VzLnBs IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI4X3NlcXVlbmNlcy5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzg0MzQ0MDk0NjMKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjhfc2VxdWVuY2VzLnBsCkBAIC0w LDAgKzEsMjAzIEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRoaXMgdGVzdHMgdGhhdCBzZXF1ZW5jZXMgYXJl IHJlcGxpY2F0ZWQgY29ycmVjdGx5IGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24KK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDY7 CisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9w dWJsaXNoZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2Rl X3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmli ZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9n aWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHNvbWUgcHJl ZXhpc3RpbmcgY29udGVudCBvbiBwdWJsaXNoZXIKK215ICRkZGwgPSBxcSgKKwlDUkVBVEUg VEFCTEUgc2VxX3Rlc3QgKHYgQklHSU5UKTsKKwlDUkVBVEUgU0VRVUVOQ0UgczsKKyk7CisK KyMgU2V0dXAgc3RydWN0dXJlIG9uIHRoZSBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRkZGwpOworCisjIENyZWF0ZSBzb21lIHRoZSBzYW1l IHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyLCBhbmQgYW4gZXh0cmEgc2VxdWVuY2UgdGhhdAor IyB3ZSdsbCBjcmVhdGUgb24gdGhlIHB1Ymxpc2hlciBsYXRlcgorJGRkbCA9IHFxKAorCUNS RUFURSBUQUJMRSBzZXFfdGVzdCAodiBCSUdJTlQpOworCUNSRUFURSBTRVFVRU5DRSBzOwor CUNSRUFURSBTRVFVRU5DRSBzMjsKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAkZGRsKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitt eSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRi bmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgUFVCTElDQVRJT04gc2VxX3B1YiIpOworCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiBzZXFfcHViIEFE RCBTRVFVRU5DRSBzIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHNlcV9zdWIgQ09OTkVDVElPTiAnJHB1Ymxp c2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBzZXFfcHViIFdJVEggKHNsb3RfbmFtZSA9IHNl cV9zdWJfc2xvdCkiCispOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J3NlcV9zdWInKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHN5bmMgdG8gZmluaXNoIGFzIHdl bGwKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBn X3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdzJywgJ3InKTsi OworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3lu Y2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJz Y3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIEluc2VydCBpbml0aWFsIHRlc3Qg ZGF0YQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ LS0gZ2VuZXJhdGUgYSBudW1iZXIgb2YgdmFsdWVzIHVzaW5nIHRoZSBzZXF1ZW5jZQorCUlO U0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMDApOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKK215ICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMTMyfDB8dCcsCisJ J2NoZWNrIHJlcGxpY2F0ZWQgc2VxdWVuY2UgdmFsdWVzIG9uIHN1YnNjcmliZXInKTsKKwor CisjIGFkdmFuY2UgdGhlIHNlcXVlbmNlIGluIGEgcm9sbGVkLWJhY2sgdHJhbnNhY3Rpb24g LSB0aGUgcm9sbGJhY2sKKyMgZG9lcyBub3Qgd2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uLCBz byB3ZSBjb3VsZCBzZWUgYW55IGludGVybWVkaWF0ZSBzdGF0ZQorIyBzbyBkbyBzb21ldGhp bmcgZWxzZSBhZnRlciB0aGUgdGVzdCwgdG8gZW5zdXJlIHdlIHdhaXQgZm9yIGV2ZXJ5dGhp bmcKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUJF R0lOOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzJykgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJPTExCQUNLOworCUlOU0VSVCBJTlRPIHNlcV90 ZXN0IFZBTFVFUyAoLTEpOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMjMxfDB8dCcsCisJ J2NoZWNrIHJlcGxpY2F0ZWQgc2VxdWVuY2UgdmFsdWVzIG9uIHN1YnNjcmliZXInKTsKKwor CisjIGNyZWF0ZSBhIG5ldyBzZXF1ZW5jZSBhbmQgcm9sbCBpdCBiYWNrIC0gc2hvdWxkIG5v dCBiZSByZXBsaWNhdGVkLCBkdWUgdG8KKyMgdGhlIHRyYW5zYWN0aW9uYWwgYmVoYXZpb3IK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUJFR0lO OworCUNSRUFURSBTRVFVRU5DRSBzMjsKKwlBTFRFUiBQVUJMSUNBVElPTiBzZXFfcHViIEFE RCBTRVFVRU5DRSBzMjsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgn czInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJUk9MTEJBQ0s7CispKTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hl Y2sgdGhlIGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHMyOworKSk7 CisKK2lzKCAkcmVzdWx0LCAnMXwwfGYnLAorCSdjaGVjayByZXBsaWNhdGVkIHNlcXVlbmNl IHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CisKKworIyBjcmVhdGUgYSBuZXcgc2VxdWVuY2Us IGFkdmFuY2UgaXQgaW4gYSByb2xsZWQtYmFjayB0cmFuc2FjdGlvbiwgYnV0IGNvbW1pdAor IyB0aGUgY3JlYXRlIC0gdGhlIGFkdmFuY2Ugc2hvdWxkIGJlIHJlcGxpY2F0ZWQgbmV2ZXJ0 aGVsZXNzCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgK KwlCRUdJTjsKKwlDUkVBVEUgU0VRVUVOQ0UgczI7CisJQUxURVIgUFVCTElDQVRJT04gc2Vx X3B1YiBBREQgU0VRVUVOQ0UgczI7CisJU0FWRVBPSU5UIHNwMTsKKwlJTlNFUlQgSU5UTyBz ZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgnczInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw MCk7CisJUk9MTEJBQ0sgVE8gc3AxOworCUNPTU1JVDsKKykpOworCiskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBXYWl0IGZvciBzeW5jIG9m IHRoZSBzZWNvbmQgc2VxdWVuY2Ugd2UganVzdCBhZGRlZCB0byBmaW5pc2gKKyRzeW5jZWRf cXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9y ZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdzJywgJ3InKTsiOworJG5vZGVfc3Vic2Ny aWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBv ciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNo cm9uaXplIGRhdGEiOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ U0VMRUNUICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzEzMnwwfHQnLAorCSdj aGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CisKKwor IyBhZHZhbmNlIHRoZSBuZXcgc2VxdWVuY2UgaW4gYSB0cmFuc2FjdGlvbiwgYW5kIHJvbGwg aXQgYmFjayAtIHRoZSByb2xsYmFjaworIyBkb2VzIG5vdCB3YWl0IGZvciB0aGUgcmVwbGlj YXRpb24sIHNvIHdlIGNvdWxkIHNlZSBhbnkgaW50ZXJtZWRpYXRlIHN0YXRlCisjIHNvIGRv IHNvbWV0aGluZyBlbHNlIGFmdGVyIHRoZSB0ZXN0LCB0byBlbnN1cmUgd2Ugd2FpdCBmb3Ig ZXZlcnl0aGluZworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJQkVHSU47CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3My JykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJPTExCQUNLOworCUlOU0VSVCBJ TlRPIHNlcV90ZXN0IFZBTFVFUyAoLTEpOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNj cmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzIz MXwwfHQnLAorCSdjaGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3Jp YmVyJyk7CisKKworIyBhZHZhbmNlIHRoZSBzZXF1ZW5jZSBpbiBhIHN1YnRyYW5zYWN0aW9u IC0gdGhlIHN1YnRyYW5zYWN0aW9uIGdldHMgcm9sbGVkCisjIGJhY2ssIGJ1dCBjb21taXQg dGhlIG1haW4gb25lIC0gdGhlIGNoYW5nZXMgc2hvdWxkIHN0aWxsIGJlIHJlcGxpY2F0ZWQK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUJFR0lO OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZh bCgnczInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJUk9MTEJBQ0sgVE8gczE7 CisJQ09NTUlUOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn c2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VM RUNUICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzMzMHwwfHQnLAorCSdjaGVj ayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CisKKworJG5v ZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdm YXN0Jyk7Ci0tIAoyLjM0LjEKCg== --------------TtGkch0BTqDJuvrBUkFjDmWq--