Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uqogq-00DZtq-VR for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Aug 2025 08:06:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uqogq-0038Ry-Dy for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Aug 2025 08:06:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uqogo-0038RJ-PK for pgsql-hackers@lists.postgresql.org; Tue, 26 Aug 2025 08:06:00 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uqogf-001nxy-38 for pgsql-hackers@lists.postgresql.org; Tue, 26 Aug 2025 08:05:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1756195547; bh=5h00RsAmPip3SZW9GeMpdLjrzFA/aL9jR8aEZta90kM=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=oGHmRELaFY85dAj5H5fZbPGHlnrBYW+k1+K+g0usJ1FD2UFOQl//l32HfASt5vKzL Sr/KA3jHYrsMN2xV/6qiBDI7l8obq8YanOSENOYI0sjslRgKZFRTE8D9b6rc/5IPlg p0SS9OEnHyizbrpDmWjNdBF+piyI6opiLfbZiL+N7N6wSseFB0ytVAo1QIdH/LmlWO Mk0M4aapOfgDyfnXcRhW/e4oBbRzSxjd8G0Z5x5Xsv25jyXarvuBHdFgOm9rpfiz2T /oxI5Xg6eGlNiICCkMeIiF4zJj9aX/geyVpdSQafVeVenu+xQO3YJ2f7+4vzC/sIkB xf08OJVTu58bg== Received: from [172.30.48.122] (debian11-template.l.postgrespro.ru [192.168.2.254]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 0FFB860851; Tue, 26 Aug 2025 11:05:47 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------vY6xP84H0ZqrzNzrZVQC16EN" Message-ID: Date: Tue, 26 Aug 2025 11:05:47 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: jian he Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/08/26 07:43:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/08/26 04:23:00 #27694973 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------vY6xP84H0ZqrzNzrZVQC16EN Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! Thanks for the notes and patches! 1. >/* list of partitions, for MERGE PARTITION command */ > ... >The field "partlist" comments are not very helpful, IMO. >I think the following is more descriptive. >/* list of partitions to be merged, used only in ALTER TABLE MERGE >PARTITION */ Corrected. 2. >+ partOid = RangeVarGetRelidExtended(name, >+ AccessExclusiveLock, >+ false, >+ RangeVarCallbackOwnsRelation, >+ NULL); >here "false" should be "0"? Corrected. 3. >the comment should be >+ /* Ranges of partitions should be adjacent */ Corrected. 4. >+static void StoreConstraints(Relation rel, List *cooked_constraints, >+ bool is_internal); >-static void StoreConstraints(Relation rel, List *cooked_constraints, >- bool is_internal); > >Is this change necessary? Corrected. 5. >i raised this question in [1], you replied at [2]. >I still think it's not intuitive. >parent->relpersistence is fixed. and newRel->relpersistence is the >same as the same as newPartName->relpersistence, see >heap_create_with_catalog. These relpersistence error checks can >happen before heap_create_with_catalog. >I added a regress test for src/test/modules/test_ddl_deparse. >I refactored regress to make >src/test/regress/expected/partition_merge.out less verbose. I'm sorry, I misunderstood the point. Applied. 6. >/* > * PartitionCmd - info for ALTER TABLE/INDEX ATTACH/DETACH PARTITION > commands > */ >typedef struct PartitionCmd >the above comments also need to be updated? Updated. (Previously the comment was updated for SPLIT PARTITION command only.) 7. >``+SELECT * FROM sales_all WHERE sales_state = 'Warsaw';`` >may ultimately fall back to using seqscan? >so we need to use >``explain(costs off)`` to see if it use indexscan or not. Corrected. 8. >... >+ RelationGetRelationName(parent_rel))); >this error is unlikely to happen, we can simply use elog(ERROR, ....), >rather than ereport. Applied. 9. >evaluateGeneratedExpressionsAndCheckConstraints seem not necessary? The "evaluateGeneratedExpressionsAndCheckConstraints" function is used for both commands (SPLIT and MERGE), so I prefer to keep it (probably, code duplication is worse). 10. >we should make the MergePartitionsMoveRows code pattern aligned with >ATRewriteTable. >by comparing these two function, i found that before call >table_scan_getnextslot we need to switch memory context to >EState->ecxt_per_tuple_memor Thanks, that is correct. Applied. 11. >we may need to change checkPartition. > ... >IMV, the error message pattern should be something like: >ERROR: can not merge relation \"%s\" with other partitions >DETAIL: "sales_apr2022" is not a table >HINT: ALTER TABLE ... MERGE PARTITIONS can only merge partitions >don't have sub-partition This error is generated if the condition "if (partRel->rd_rel->relkind!= RELKIND_RELATION)" is true. But error message pattern "can not merge relation ... with other partitions" is correct for RELKIND_PARTITIONED_TABLE only. Separate messages for each of the relation types (RELKIND_VIEW, RELKIND_FOREIGN_TABLE, ...) looks a bit complicated (see example [1]). Might be we can replace error message "... is not a table" to "... is not a simple partition"? 12. >+checkPartition(Relation rel, Oid partRelOid) >"Partition with OID partRelOid must be locked before function call." >we can remove this sentence. >otherwise, "function call" seems confusing? Removed. 13. >+ cmd->name->relpersistence = rel->rd_rel->relpersistence; >seems wrong? >comments "stmt->relation" not sure what it refers to? Applied and corrected the same for SPLIT PARTITION. 14. > ... >I propose change it to: >ereport(ERROR, > errcode(ERRCODE_INVALID_OBJECT_DEFINITION), > errmsg("can not merge partition \"%s\" together with partition >\"%s\"", > second_name->relname, first_name->relname), > errdetail("lower bound of partition \"%s\" is not equal to the >upper bound of partition \"%s\"", > second_name->relname, first_name->relname), > errhint("ALTER TABLE ... MERGE PARTITIONS requires the >partition bounds to be adjacent."), > parser_errposition(pstate, datum->location)); Changed. 15. >buildExpressionExecutionStates seems not needed, same reason as >mentioned before, >code pattern aligned with ATRewriteTable. "buildExpressionExecutionStates" function is used for both commands (SPLIT and MERGE). Probably, is better to keep this function? 16. >while at it, also did some minor changes. Applied. Links ----- [1] https://github.com/postgres/postgres/blob/989b2e4d5c95f6b183e76f3eb06d2d360651ccf2/src/backend/commands/copyto.c#L649 -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------vY6xP84H0ZqrzNzrZVQC16EN Content-Type: text/plain; charset=UTF-8; name="v53-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v53-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0MmZiOGE4OTQ5MWU1NGMxYmRiOWMyOWU5NDRlZDA1YTJhZGIwZDQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTMgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3Vt bWFyeSBpbmZvcm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVy IFdhbmcsIFJpY2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczog RnVqaWkgTWFzYW8sIEppYW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwg Um9iZXJ0IEhhYXMsIEp1c3RpbiBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6 IE1hc2FoaWtvIFNhd2FkYQpSZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGlu IFByeXpieSwgS3lvdGFybyBIb3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEyMCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTEyICsrKysrKysrKysrKyst CiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDIy ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAg MTQ2ICsrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAg IHwgIDE5NiArKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAg ICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg ICAgICAgICAgfCAgICA4ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAg ICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmggICAgICAgICB8ICAgIDYgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRp b24tbWVyZ2Uub3V0ICAgIHwgIDE5OSArKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgfCAgICA1ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNl L3NxbC9hbHRlcl90YWJsZS5zcWwgICAgICB8ICAgIDMgKwogLi4uL3Rlc3RfZGRsX2RlcGFy c2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAxMTAyICsrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAy ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCAg Nzk3ICsrKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMzYzNSBpbnNlcnRpb25zKCsp LCAyNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9t ZXJnZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvZGRsLnNnbWwKaW5kZXggNjViYzA3MGQyZS4uZGRiMTM3NmE2ZSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApA QCAtNDQ1MCw2ICs0NDUwLDI1IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50X3kyMDA2bTAy IEFERCBVTklRVUUgKGNpdHlfaWQsIGxvZ2RhdGUpOwogQUxURVIgSU5ERVggbWVhc3VyZW1l bnRfY2l0eV9pZF9sb2dkYXRlX2tleQogICAgIEFUVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1l bnRfeTIwMDZtMDJfY2l0eV9pZF9sb2dkYXRlX2tleTsKIC4uLgorPC9wcm9ncmFtbGlzdGlu Zz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlcmUgaXMgYWxzbyBhbiBv cHRpb24gZm9yIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUgcGFydGl0aW9ucyBpbnRvCisgICAg IGEgc2luZ2xlIHBhcnRpdGlvbiB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWFsdGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+PGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlM8L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJl IHNpbXBsaWZpZXMgdGhlIG1hbmFnZW1lbnQgb2YgcGFydGl0aW9uZWQgdGFibGVzIGJ5IGFs bG93aW5nCisgICAgIHVzZXJzIHRvIGNvbWJpbmUgcGFydGl0aW9ucyB0aGF0IGFyZSBubyBs b25nZXIgbmVlZGVkIGFzCisgICAgIHNlcGFyYXRlIGVudGl0aWVzLiAgSXQncyBpbXBvcnRh bnQgdG8gbm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIG5vdAorICAgICBzdXBwb3J0ZWQg Zm9yIGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcyBhbgorICAgICA8bGl0 ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBjb3VsZCBpbXBh Y3QgaGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3MgcmVzdHJpY3Rp dmUgbmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbgorICAgICBtZXJnZSB0aHJlZSBtb250 aGx5IHBhcnRpdGlvbnMgaW50byBvbmUgcXVhcnRlciBwYXJ0aXRpb246Cis8cHJvZ3JhbWxp c3Rpbmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAorICAgIE1FUkdFIFBBUlRJVElPTlMg KG1lYXN1cmVtZW50X3kyMDA2bTAxLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVt ZW50X3kyMDA2bTAyLAorICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2 bTAzKSBJTlRPIG1lYXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAg IDwvcGFyYT4KICAgIDwvc2VjdDM+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5k ZXggODg2N2RhNmM2OS4uMjlhMGZmNWNkYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbApAQCAtMzcsNiArMzcsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRB Q0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fQogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBb IENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAg IE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4K IAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWN0aW9u PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0xMTU5LDE0ICsxMTYx LDEwOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFi bGUtbWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0UgUEFSVElU SU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rl cm0+CisKKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1l cmdlcyBzZXZlcmFsIHBhcnRpdGlvbnMgb2YgdGhlIHRhcmdldCB0YWJsZSBpbnRvIGEgbmV3 IHBhcnRpdGlvbi4KKyAgICAgIEhhc2gtcGFydGl0aW9uZWQgdGFyZ2V0IHRhYmxlIGlzIG5v dCBzdXBwb3J0ZWQuCisgICAgICBJZiA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBwYXJ0 aXRpb24gaXMgbm90IGluIHRoZQorICAgICAgbGlzdCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwK KyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIHJhbmdlLXBhcnRpdGlv bmVkIHRhYmxlcywgdGhlIHJhbmdlcyBvZiB0aGUgcGFydGl0aW9ucworICAgICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+LAorICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMjwvcmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgbXVzdCBiZSBhZGphY2Vu dCBpbiBvcmRlciB0byBiZSBtZXJnZWQuIE90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZQor ICAgICAgICAgcmFpc2VkLiBUaGUgcmVzdWx0aW5nIGNvbWJpbmVkIHJhbmdlIHdpbGwgYmUg dGhlIG5ldyBwYXJ0aXRpb24gYm91bmQKKyAgICAgICAgIGZvciB0aGUgcGFydGl0aW9uIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIGxpc3QtcGFydGl0aW9uZWQg dGFibGVzLCB0aGUgcGFydGl0aW9uIGJvdW5kcyBvZgorICAgICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAg ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwv cmVwbGFjZWFibGU+LCBbLi4uXQorICAgICAgICAgYXJlIGNvbWJpbmVkIHRvIGZvcm0gdGhl IG5ldyBwYXJ0aXRpb24gYm91bmQgZm9yCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgPC9w YXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAg IElmIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0aGUgbGlz dCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAg PGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgVGhlIHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgd2lsbCBiZSB0aGUgbmV3IDxs aXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxl LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiBib3VuZCBzcGVj aWZpY2F0aW9ucyBmb3IgYWxsIHBhcnRpdGlvbnMtCisgICAgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9y ZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBjYW4gYmUgYXJiaXRyYXJ5LgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGNhbiBoYXZlIHRoZSBzYW1l IG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4gT25seSBzaW1wbGUsCisg ICAgICBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBjYW4gYmUgbWVyZ2VkLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBk aWZmZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICAgIFRo ZSBvd25lciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZSB0aGUgb3duZXIgb2Yg dGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmls aXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gdGhlCisgICAgICBuZXcg cGFydGl0aW9uLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGluZGV4 ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRh dGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBFeHRlbmRlZCBzdGF0 aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBmb3IgY29uc2lz dGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJVElPTiBPRjwv Y29tbWFuZD4uCisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVyaXQgdGhlIHNh bWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UKKyAgICAgIHR5cGUsIGFuZCB0 YWJsZXNwYWNlIGFzIHRoZSBwYXJlbnQgdGFibGUuCisgICAgIDwvcGFyYT4KKyAgICAgPHBh cmE+CisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdlZCwgYW55IGluZGl2aWR1YWwg b2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhvc2UKKyAgICAgIHBhcnRpdGlvbnMsIHN1Y2ggYXMg Y29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxsIGJlIGRyb3BwZWQuIFRoaXMgb2NjdXJz CisgICAgICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlM8 L2NvbW1hbmQ+IHVzZXMgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGl0c2VsZiBhcyB0aGUKKyAg ICAgIHRlbXBsYXRlIHRvIGRlZmluZSB0aGVzZSBvYmplY3RzLgorICAgICA8L3BhcmE+Cisg ICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBzb21lIG9iamVj dHMgZGVwZW5kZW50IG9uIHRoZW0sIHRoZSBjb21tYW5kIGNhbgorICAgICAgbm90IGJlIGRv bmUgKDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlzIG5vdCB1c2VkLCBhbiBlcnJvciB3 aWxsIGJlIHJldHVybmVkKS4KKyAgICAgPC9wYXJhPgorICAgICA8bm90ZT4KKyAgICAgIDxw YXJhPgorICAgICAgIE1lcmdpbmcgcGFydGl0aW9ucyBhY3F1aXJlcyBhIDxsaXRlcmFsPkFD Q0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgb24KKyAgICAgICB0aGUgcGFyZW50IHRh YmxlLCBpbiBhZGRpdGlvbiB0byB0aGUgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0 ZXJhbD4KKyAgICAgICBsb2NrcyBvbiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBhbmQgb24g dGhlIGRlZmF1bHQgcGFydGl0aW9uIChpZiBhbnkpLgorICAgICAgPC9wYXJhPgorICAgICA8 L25vdGU+CisgICAgIDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxU RVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUzwvY29tbWFuZD4gY3JlYXRlcyBhIG5ldyBwYXJ0 aXRpb24gYW5kCisgICAgICAgbW92ZXMgZGF0YSBmcm9tIGFsbCBtZXJnaW5nIHBhcnRpdGlv bnMgaW50byBpdCwgd2hpY2ggY2FuIHRha2UgYSBsb25nIHRpbWUuCisgICAgICAgU28gaXQg aXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBjb21tYW5kIHRvIG1lcmdlIHZlcnkgYmlnIHBh cnRpdGlvbnMgd2l0aCBzbWFsbCBvbmVzLgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgIDwvdmFyaWFibGVs aXN0PgogICA8L3BhcmE+CiAKICAgPHBhcmE+CiAgICBBbGwgdGhlIGZvcm1zIG9mIDxjb21t YW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiB0aGF0IGFjdCBvbiBhIHNpbmdsZSB0YWJsZSwK ICAgIGV4Y2VwdCA8bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5TRVQgU0NI RU1BPC9saXRlcmFsPiwKLSAgIDxsaXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+ LCBhbmQKLSAgIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+IGNhbiBiZSBj b21iaW5lZCBpbnRvCisgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwg PGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCisgICBhbmQgPGxpdGVyYWw+ TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJpbmVkIGludG8KICAgIGEg bGlzdCBvZiBtdWx0aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvZ2V0aGVyLiAg Rm9yIGV4YW1wbGUsIGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2ZXJhbCBjb2x1bW5z IGFuZC9vciBhbHRlciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBjb2x1bW5zIGluIGEgc2lu Z2xlIGNvbW1hbmQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2l0aCBsYXJnZQpA QCAtMTQwOSw3ICsxNTA1LDE4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4K LSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0 aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZS4KKyAgICAgICAgVGhlIG5hbWUg b2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNo IGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJn ZWQgcGFydGl0aW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRh YmxlLXBhcm1zLXBhcnRpdGlvbi1uYW1lMSI+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFibGVzIGJlaW5nIG1lcmdlZCBp bnRvIHRoZSBuZXcgcGFydGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTg0Miw2ICsxOTQ5LDEzIEBAIEFMVEVS IFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95 MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8g bWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBvZiB0aGUgdGFy Z2V0IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBN RVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFs KQorICAgIElOVE8gc2FsZXNfYWxsOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKICA8 L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpp bmRleCA3ZGRlZDYzNGViLi5mMDY5YTQ2YTgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVu Y3kuYwpAQCAtMzE5LDYgKzMxOSw1NiBAQCBwZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0 QWRkcmVzcyAqb2JqZWN0LAogCXRhYmxlX2Nsb3NlKGRlcFJlbCwgUm93RXhjbHVzaXZlTG9j ayk7CiB9CiAKKy8qCisgKiBwZXJmb3JtRGVsZXRpb25DaGVjazogQ2hlY2sgd2hldGhlciBh IHNwZWNpZmljIG9iamVjdCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQuCisgKiBUaGlzIGZ1bmN0 aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlbGV0aW9uOyBpbnN0ZWFkLCBpdCByYWlzZXMg YW4gZXJyb3IKKyAqIGlmIHRoZSBvYmplY3QgY2Fubm90IGJlIGRlbGV0ZWQgZHVlIHRvIGV4 aXN0aW5nIGRlcGVuZGVuY2llcy4KKyAqCisgKiBJdCBjYW4gYmUgdXNlZnVsIHdoZW4geW91 IG5lZWQgZGVsZXRlIHNvbWUgb2JqZWN0cyBsYXRlci4gIFNlZSBjb21tZW50cyBpbgorICog cGVyZm9ybURlbGV0aW9uIHRvby4KKyAqIFRoZSBiZWhhdmlvciBtdXN0IHNwZWNpZmllZCBh cyBEUk9QX1JFU1RSSUNULgorICovCit2b2lkCitwZXJmb3JtRGVsZXRpb25DaGVjayhjb25z dCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3Is IGludCBmbGFncykKK3sKKwlSZWxhdGlvbglkZXBSZWw7CisJT2JqZWN0QWRkcmVzc2VzICp0 YXJnZXRPYmplY3RzOworCisJQXNzZXJ0KGJlaGF2aW9yID09IERST1BfUkVTVFJJQ1QpOwor CisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVM b2NrKTsKKworCUFjcXVpcmVEZWxldGlvbkxvY2sob2JqZWN0LCAwKTsKKworCS8qCisJICog Q29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3RzIHdlIHdhbnQgZGVsZXRlIGxhdGVyIChpZSwg dGhlIGdpdmVuIG9iamVjdAorCSAqIHBsdXMgZXZlcnl0aGluZyBkaXJlY3RseSBvciBpbmRp cmVjdGx5IGRlcGVuZGVudCBvbiBpdCkuCisJICovCisJdGFyZ2V0T2JqZWN0cyA9IG5ld19v YmplY3RfYWRkcmVzc2VzKCk7CisKKwlmaW5kRGVwZW5kZW50T2JqZWN0cyhvYmplY3QsCisJ CQkJCQkgREVQRkxBR19PUklHSU5BTCwKKwkJCQkJCSBmbGFncywKKwkJCQkJCSBOVUxMLAkv KiBlbXB0eSBzdGFjayAqLworCQkJCQkJIHRhcmdldE9iamVjdHMsCisJCQkJCQkgTlVMTCwJ Lyogbm8gcGVuZGluZ09iamVjdHMgKi8KKwkJCQkJCSAmZGVwUmVsKTsKKworCS8qCisJICog Q2hlY2sgaWYgZGVsZXRpb24gaXMgYWxsb3dlZC4KKwkgKi8KKwlyZXBvcnREZXBlbmRlbnRP YmplY3RzKHRhcmdldE9iamVjdHMsCisJCQkJCQkgICBiZWhhdmlvciwKKwkJCQkJCSAgIGZs YWdzLAorCQkJCQkJICAgb2JqZWN0KTsKKworCS8qIEFuZCBjbGVhbiB1cCAqLworCWZyZWVf b2JqZWN0X2FkZHJlc3Nlcyh0YXJnZXRPYmplY3RzKTsKKworCXRhYmxlX2Nsb3NlKGRlcFJl bCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBwZXJmb3JtTXVsdGlwbGVEZWxl dGlvbnM6IFNpbWlsYXIgdG8gcGVyZm9ybURlbGV0aW9uLCBidXQgYWN0IG9uIG11bHRpcGxl CiAgKiBvYmplY3RzIGF0IG9uY2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5j CmluZGV4IDYwMDJmZDAwMDIuLmVmODg4MmNiY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jCkBAIC04NzUsNyArODc1LDcgQEAgUmVsYXRpb25HZXROb3ROdWxsQ29u c3RyYWludHMoT2lkIHJlbGlkLCBib29sIGNvb2tlZCwgYm9vbCBpbmNsdWRlX25vaW5oKQog CQkJCQkJCQkJCQkJCQkJIGZhbHNlKSkpOwogCQkJY29uc3RyLT5pc19lbmZvcmNlZCA9IHRy dWU7CiAJCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiA9ICFjb25Gb3JtLT5jb252YWxpZGF0 ZWQ7Ci0JCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IHRydWU7CisJCQljb25zdHItPmlu aXRpYWxseV92YWxpZCA9IGNvbkZvcm0tPmNvbnZhbGlkYXRlZDsKIAkJCWNvbnN0ci0+aXNf bm9faW5oZXJpdCA9IGNvbkZvcm0tPmNvbm5vaW5oZXJpdDsKIAkJCW5vdG51bGxzID0gbGFw cGVuZChub3RudWxscywgY29uc3RyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCAwODJhMzU3NWQ2Li41YTNjNTNkM2U1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtNzQwLDYgKzc0MCw4IEBAIHN0YXRpYyB2b2lkIEFURGV0YWNoQ2hlY2tO b0ZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgY2hhciBHZXRB dHRyaWJ1dGVDb21wcmVzc2lvbihPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNvbXByZXNz aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBj b25zdCBjaGFyICpzdG9yYWdlbW9kZSk7CiAKK3N0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFy dGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlD b250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCURlZmluZVJlbGF0aW9u CkBAIC00ODMzLDYgKzQ4MzUsMTAgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpj bWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jazsKIAkJ CQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJY21kX2xvY2tt b2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoJ CQkvKiBvb3BzICovCiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJs ZSB0eXBlOiAlZCIsCiAJCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTI2OCw2ICs1 Mjc0LDExIEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVy VGFibGVDbWQgKmNtZCwKIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQg Ki8KIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9NZXJn ZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVs LCBBVFRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBw cmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFs dGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTU2 NjQsNiArNTY3NSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJYWRk cmVzcyA9IEFURXhlY0RldGFjaFBhcnRpdGlvbkZpbmFsaXplKHJlbCwgKChQYXJ0aXRpb25D bWQgKikgY21kLT5kZWYpLT5uYW1lKTsKIAkJCWJyZWFrOworCQljYXNlIEFUX01lcmdlUGFy dGl0aW9uczoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJl bCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0 KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNNZXJnZVBh cnRpdGlvbnMod3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwK KwkJCQkJCQkJICBjb250ZXh0KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3Bz ICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVk IiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTY3MDQsNiArNjcyMyw4IEBAIGFs dGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQly ZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZp bmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CisJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05T IjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4u LiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjAxOTMsNiAr MjAyMTQsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoq d3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAorLyoKKyAqIGF0dGFjaFBhcnRp dGlvblRhYmxlOiBhdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRBQkxFIHdvcmsgcXVldWU7IGNhbiBi ZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAorICogICBvZiBhbiBBTFRFUiBUQUJM RSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQgcmVsYXRpb247CisgKiBhdHRhY2hy ZWw6IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlvbjsKKyAqIGJvdW5kOiBib3VuZHMg b2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCithdHRhY2hQYXJ0aXRp b25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGF0dGFjaHJl bCwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sKKwkvKiBPSyB0byBjcmVhdGUgaW5o ZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICovCisJQ3Jl YXRlSW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUpOworCisJLyogVXBkYXRlIHRo ZSBwZ19jbGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwg cmVsLCBib3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBzZXQg b2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLworCUF0dGFjaFBhcnRpdGlvbkVuc3Vy ZUluZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisKKwkvKiBhbmQgdHJpZ2dlcnMg Ki8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwpOworCisJ LyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4gIENhbGxlZSBpcyByZXNw b25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFzZSAzIGNvbnN0cmFpbnQgdmVy aWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1ZSwg cmVsLCBhdHRhY2hyZWwpOworfQorCiAvKgogICogQUxURVIgVEFCTEUgPG5hbWU+IEFUVEFD SCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1IgVkFMVUVTCiAgKgpAQCAtMjAzOTQs MjMgKzIwNDQ2LDggQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY2hlY2tfbmV3X3BhcnRpdGlvbl9i b3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hyZWwpLCByZWwsCiAJCQkJCQkJ ICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sgdG8gY3JlYXRlIGluaGVyaXRhbmNl LiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVyZSAqLwotCUNyZWF0ZUluaGVy aXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKLQotCS8qIFVwZGF0ZSB0aGUgcGdfY2xh c3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3VuZChhdHRhY2hyZWwsIHJlbCwgY21k LT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBzZXQgb2Yg aW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0dGFjaFBhcnRpdGlvbkVuc3VyZUlu ZGV4ZXMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKiBhbmQgdHJpZ2dlcnMgKi8K LQlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBhdHRhY2hyZWwpOwotCi0JLyoK LQkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4gIENhbGxlZSBpcyByZXNwb25z aWJsZSBmb3Igc2V0dGluZyB1cAotCSAqIGZvciBwaGFzZSAzIGNvbnN0cmFpbnQgdmVyaWZp Y2F0aW9uLgotCSAqLwotCUNsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKHdxdWV1ZSwgcmVs LCBhdHRhY2hyZWwpOworCS8qIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRp dGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlvblRhYmxlKHdxdWV1ZSwgcmVsLCBh dHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkgKiBHZW5lcmF0ZSBwYXJ0aXRpb24g Y29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQgc3BlY2lmaWNhdGlvbi4KQEAg LTIyMDU4LDMgKzIyMDk1LDg0NCBAQCBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBp ZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAlyZXR1cm4gY3N0b3JhZ2U7CiB9CisK KworLyoKKyAqIGJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlczogYnVpbGQgdGhlIG5l ZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlvbiBzdGF0ZXMKKyAqIGZvciBuZXcgcGFydGl0aW9u IChuZXdQYXJ0UmVsKSBjaGVja3MgYW5kIGluaXRpYWxpemUgZXhwcmVzc2lvbnMgZm9yCisg KiBnZW5lcmF0ZWQgY29sdW1ucy4gQWxsIGV4cHJlc3Npb25zIHNob3VsZCBiZSBjcmVhdGVk IGluICJ0YWIiCisgKiAoQWx0ZXJlZFRhYmxlSW5mbyBzdHJ1Y3R1cmUpLgorICovCitzdGF0 aWMgdm9pZAorYnVpbGRFeHByZXNzaW9uRXhlY3V0aW9uU3RhdGVzKEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgUmVsYXRpb24gbmV3UGFydFJlbCwgRVN0YXRlICplc3RhdGUpCit7CisJLyoK KwkgKiBCdWlsZCB0aGUgbmVlZGVkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcy4gSGVy ZSwgd2UgZXhwZWN0IG9ubHkgTk9UCisJICogTlVMTCBhbmQgQ0hFQ0sgY29uc3RyYWludC4K KwkgKi8KKwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29uc3RyYWlu dHMpCisJeworCQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJf Q0hFQ0s6CisKKwkJCQkvKgorCQkJCSAqIFdlIGFscmVhZHkgZXhwYW5kZWQgdmlydHVhbCBl eHByZXNzaW9uIGluCisJCQkJICogY3JlYXRlVGFibGVDb25zdHJhaW50cy4KKwkJCQkgKi8K KwkJCQljb24tPnF1YWxzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBleHBhbmRf Z2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcihjb24tPnF1YWwsIG5ld1BhcnRSZWwsIDEpLCBl c3RhdGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCQkvKiBO b3RoaW5nIHRvIGRvIGhlcmUuICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlZCIsCisJCQkJCSAo aW50KSBjb24tPmNvbnR5cGUpOworCQl9CisJfQorCisJLyogRXhwcmVzc2lvbiBhbHJlYWR5 IHBsYW5uZWQgaW4gY3JlYXRlVGFibGVDb25zdHJhaW50cyAqLworCWZvcmVhY2hfcHRyKE5l d0NvbHVtblZhbHVlLCBleCwgdGFiLT5uZXd2YWxzKQorCQlleC0+ZXhwcnN0YXRlID0gRXhl Y0luaXRFeHByKChFeHByICopIGV4LT5leHByLCBOVUxMKTsKK30KKworLyoKKyAqIGV2YWx1 YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzOiBldmFsdWF0ZSBh bnkgZ2VuZXJhdGVkCisgKiBleHByZXNzaW9ucyBmb3IgInRhYiIgKEFsdGVyZWRUYWJsZUlu Zm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1dHMgY29tZSBmcm9tCisgKiB0aGUgbmV3IHR1cGxl IChpbnNlcnRzbG90KSBvZiBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKS4KKyAqLworc3Rh dGljIHZvaWQKK2V2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFp bnRzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIG5ld1Bh cnRSZWwsCisJCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdCwKKwkJCQkJ CQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwllY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGUgPSBpbnNlcnRzbG90OworCisJZm9yZWFjaF9wdHIoTmV3Q29sdW1uVmFsdWUsIGV4 LCB0YWItPm5ld3ZhbHMpCisJeworCQlpZiAoIWV4LT5pc19nZW5lcmF0ZWQpCisJCQljb250 aW51ZTsKKworCQlpbnNlcnRzbG90LT50dHNfdmFsdWVzW2V4LT5hdHRudW0gLSAxXQorCQkJ PSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJzdGF0ZSwKKwkJCQkJCSAgIGVjb250ZXh0LAorCQkJ CQkJICAgJmluc2VydHNsb3QtPnR0c19pc251bGxbZXgtPmF0dG51bSAtIDFdKTsKKwl9CisK Kwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJ eworCQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6 CisJCQkJaWYgKCFFeGVjQ2hlY2soY29uLT5xdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9O KSwKKwkJCQkJCQllcnJtc2coImNoZWNrIGNvbnN0cmFpbnQgXCIlc1wiIG9mIHJlbGF0aW9u IFwiJXNcIiBpcyB2aW9sYXRlZCBieSBzb21lIHJvdyIsCisJCQkJCQkJCSAgIGNvbi0+bmFt ZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUobmV3UGFydFJlbCkpLAorCQkJCQkJCWVycnRh YmxlY29uc3RyYWludChuZXdQYXJ0UmVsLCBjb24tPm5hbWUpKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgQ09OU1RSX05PVE5VTEw6CisJCQljYXNlIENPTlNUUl9GT1JFSUdOOgorCQkJCS8q IE5vdGhpbmcgdG8gZG8gaGVyZSAqLworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNvbnN0cmFpbnQgdHlwZTogJWQiLAorCQkJCQkg KGludCkgY29uLT5jb250eXBlKTsKKwkJfQorCX0KK30KKworLyoKKyAqIGdldEF0dHJpYnV0 ZXNMaXN0OiBidWlsZCBhIGxpc3Qgb2YgY29sdW1ucyAoQ29sdW1uRGVmKSBiYXNlZCBvbiBw YXJlbnRfcmVsCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldEF0dHJpYnV0ZXNMaXN0KFJlbGF0 aW9uIHBhcmVudF9yZWwpCit7CisJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87CisJVHVwbGVE ZXNjCW1vZGVsRGVzYzsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCisJbW9kZWxEZXNj ID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRfcmVsKTsKKworCWZvciAocGFyZW50X2F0dG5v ID0gMTsgcGFyZW50X2F0dG5vIDw9IG1vZGVsRGVzYy0+bmF0dHM7CisJCSBwYXJlbnRfYXR0 bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0 dHIobW9kZWxEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlDb2x1 bW5EZWYgICpkZWY7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFy ZW50LiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsK KworCQlkZWYgPSBtYWtlQ29sdW1uRGVmKE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwg YXR0cmlidXRlLT5hdHR0eXBpZCwKKwkJCQkJCQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0 cmlidXRlLT5hdHRjb2xsYXRpb24pOworCisJCWRlZi0+aXNfbm90X251bGwgPSBhdHRyaWJ1 dGUtPmF0dG5vdG51bGw7CisKKwkJLyogQ29weSBpZGVudGl0eSBmb3IgbmV3IHBhcnRpdGlv bi4gKi8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0aWRlbnRpdHk7CisKKwkJ LyogQWRkIHRvIGNvbHVtbiBsaXN0ICovCisJCWNvbExpc3QgPSBsYXBwZW5kKGNvbExpc3Qs IGRlZik7CisKKwkJLyoKKwkJICogQWx0aG91Z2ggd2UgZG9uJ3QgdHJhbnNmZXIgdGhlIGNv bHVtbidzIGRlZmF1bHQvZ2VuZXJhdGlvbgorCQkgKiBleHByZXNzaW9uIG5vdywgd2UgbmVl ZCB0byBtYXJrIGl0IEdFTkVSQVRFRCBpZiBhcHByb3ByaWF0ZS4KKwkJICovCisJCWlmIChh dHRyaWJ1dGUtPmF0dGhhc2RlZiAmJiBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCkKKwkJCWRl Zi0+Z2VuZXJhdGVkID0gYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisKKwkJZGVmLT5zdG9y YWdlID0gYXR0cmlidXRlLT5hdHRzdG9yYWdlOworCisJCS8qIExpa2V3aXNlLCBjb3B5IGNv bXByZXNzaW9uIGlmIHJlcXVlc3RlZCAqLworCQlpZiAoQ29tcHJlc3Npb25NZXRob2RJc1Zh bGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQorCQkJZGVmLT5jb21wcmVzc2lvbiA9 CisJCQkJcHN0cmR1cChHZXRDb21wcmVzc2lvbk1ldGhvZE5hbWUoYXR0cmlidXRlLT5hdHRj b21wcmVzc2lvbikpOworCQllbHNlCisJCQlkZWYtPmNvbXByZXNzaW9uID0gTlVMTDsKKwl9 CisKKwlyZXR1cm4gY29sTGlzdDsKK30KKworCisvKgorICogY3JlYXRlVGFibGVDb25zdHJh aW50czoKKyAqIGNyZWF0ZSBjaGVjayBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMgYW5k IGdlbmVyYXRlZCB2YWx1ZXMgZm9yIG5ld1JlbAorICogYmFzZWQgb24gcGFyZW50X3JlbC4g IHRhYiBpcyBwZW5kaW5nLXdvcmsgcXVldWUgZm9yIG5ld1JlbCwgd2UgbWF5IG5lZWQgaXQg aW4KKyAqIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLgorICovCitzdGF0aWMgdm9pZAorY3Jl YXRlVGFibGVDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsCisJCQkJCSAgIFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9uIG5ld1JlbCkKK3sK KwlUdXBsZURlc2MJdHVwbGVEZXNjOworCVR1cGxlQ29uc3RyICpjb25zdHI7CisJQXR0ck1h cCAgICAqYXR0bWFwOworCUF0dHJOdW1iZXIJcGFyZW50X2F0dG5vOworCWludAkJCWNjbnVt OworCUxpc3QJICAgKkNvbnN0cmFpbnRzID0gTklMOworCUxpc3QJICAgKmNvb2tlZENvbnN0 cmFpbnRzID0gTklMOworCisJdHVwbGVEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRf cmVsKTsKKwljb25zdHIgPSB0dXBsZURlc2MtPmNvbnN0cjsKKworCWlmICghY29uc3RyKQor CQlyZXR1cm47CisKKwkvKgorCSAqIENvbnN0cnVjdCBhIG1hcCBmcm9tIHRoZSBwYXJlbnQg cmVsYXRpb24ncyBhdHRub3MgdG8gdGhlIGNoaWxkIHJlbCdzLgorCSAqIFRoaXMgcmUtY2hl Y2tzIHR5cGUgbWF0Y2ggZXRjLCBhbHRob3VnaCBpdCBzaG91bGRuJ3QgYmUgcG9zc2libGUg dG8KKwkgKiBoYXZlIGEgZmFpbHVyZSBzaW5jZSBib3RoIHRhYmxlcyBhcmUgbG9ja2VkLgor CSAqLworCWF0dG1hcCA9IGJ1aWxkX2F0dHJtYXBfYnlfbmFtZShSZWxhdGlvbkdldERlc2Ny KG5ld1JlbCksCisJCQkJCQkJCSAgIHR1cGxlRGVzYywKKwkJCQkJCQkJICAgZmFsc2UpOwor CisJLyogQ3ljbGUgZm9yIGRlZmF1bHQgdmFsdWVzLiAqLworCWZvciAocGFyZW50X2F0dG5v ID0gMTsgcGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7IHBhcmVudF9hdHRubysr KQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0 dXBsZURlc2MsCisJCQkJCQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisKKwkJLyogSWdu b3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRl LT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQkvKiBDb3B5IGRlZmF1bHQsIGlm IHByZXNlbnQgYW5kIGl0IHNob3VsZCBiZSBjb3BpZWQuICovCisJCWlmIChhdHRyaWJ1dGUt PmF0dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqdGhpc19kZWZhdWx0ID0gTlVMTDsKKwkJ CWJvb2wJCWZvdW5kX3dob2xlX3JvdzsKKwkJCUF0dHJOdW1iZXIJbnVtOworCQkJTm9kZQkg ICAqZGVmOworCQkJTmV3Q29sdW1uVmFsdWUgKm5ld3ZhbDsKKworCQkJaWYgKGF0dHJpYnV0 ZS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQl0 aGlzX2RlZmF1bHQgPSBidWlsZF9nZW5lcmF0aW9uX2V4cHJlc3Npb24ocGFyZW50X3JlbCwg YXR0cmlidXRlLT5hdHRudW0pOworCQkJZWxzZQorCQkJeworCQkJCXRoaXNfZGVmYXVsdCA9 IFR1cGxlRGVzY0dldERlZmF1bHQodHVwbGVEZXNjLCBhdHRyaWJ1dGUtPmF0dG51bSk7CisJ CQkJaWYgKHRoaXNfZGVmYXVsdCA9PSBOVUxMKQorCQkJCQllbG9nKEVSUk9SLCAiZGVmYXVs dCBleHByZXNzaW9uIG5vdCBmb3VuZCBmb3IgYXR0cmlidXRlICVkIG9mIHJlbGF0aW9uIFwi JXNcIiIsCisJCQkJCQkgYXR0cmlidXRlLT5hdHRudW0sIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBhcmVudF9yZWwpKTsKKwkJCX0KKworCQkJbnVtID0gYXR0bWFwLT5hdHRudW1zW3Bh cmVudF9hdHRubyAtIDFdOworCQkJZGVmID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyh0aGlzX2Rl ZmF1bHQsIDEsIDAsIGF0dG1hcCwgSW52YWxpZE9pZCwgJmZvdW5kX3dob2xlX3Jvdyk7CisK KwkJCS8qCisJCQkgKiBQcmV2ZW50IHRoaXMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBmb3Ig Y29uc3RyYWludHMgYmVsb3cuIE5vdGUKKwkJCSAqIHRoYXQgZGVmYXVsdHMgY2Fubm90IGNv bnRhaW4gYW55IHZhcnMsIHNvIGl0J3MgT0sgdGhhdCB0aGUKKwkJCSAqIGVycm9yIG1lc3Nh Z2UgcmVmZXJzIHRvIGdlbmVyYXRlZCBjb2x1bW5zLgorCQkJICovCisJCQlpZiAoZm91bmRf d2hvbGVfcm93ICYmIGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkJZXJybXNnKCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVm ZXJlbmNlIiksCisJCQkJCQllcnJkZXRhaWwoIkdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3Ig Y29sdW1uIFwiJXNcIiBjb250YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUg XCIlc1wiLiIsCisJCQkJCQkJCSAgTmFtZVN0cihhdHRyaWJ1dGUtPmF0dG5hbWUpLAorCQkJ CQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CisKKwkJCS8q IEFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCBleHByZXNzaW9uLiAqLworCQkJU3RvcmVBdHRy RGVmYXVsdChuZXdSZWwsIG51bSwgZGVmLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIFN0b3Jl ZCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zIGluIHBhcmVudF9yZWwgbWlnaHQKKwkJ CSAqIHJlZmVyZW5jZSB0YWJsZW9pZC4gIG5ld1JlbCwgcGFyZW50X3JlbCB0YWJsZW9pZCBj bGVhciBpcyBub3QKKwkJCSAqIHRoZSBzYW1lLiBJZiBzbywgdGhlc2Ugc3RvcmVkIGdlbmVy YXRlZCBjb2x1bW5zIHJlcXVpcmUKKwkJCSAqIHJlY29tcHV0YXRpb24gZm9yIG5ld1JlbCB3 aXRoaW4gTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MuCisJCQkgKi8KKwkJCWlmIChhdHRyaWJ1 dGUtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCXsK KwkJCQluZXd2YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFsbG9jMChzaXplb2YoTmV3Q29s dW1uVmFsdWUpKTsKKwkJCQluZXd2YWwtPmF0dG51bSA9IG51bTsKKwkJCQluZXd2YWwtPmV4 cHIgPSBleHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgZGVmKTsKKwkJCQluZXd2YWwtPmlz X2dlbmVyYXRlZCA9IChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCAhPSAnXDAnKTsKKwkJCQl0 YWItPm5ld3ZhbHMgPSBsYXBwZW5kKHRhYi0+bmV3dmFscywgbmV3dmFsKTsKKwkJCX0KKwkJ fQorCX0KKworCS8qIEN5Y2xlIGZvciBDSEVDSyBjb25zdHJhaW50cy4gKi8KKwlmb3IgKGNj bnVtID0gMDsgY2NudW0gPCBjb25zdHItPm51bV9jaGVjazsgY2NudW0rKykKKwl7CisJCWNo YXIJICAgKmNjbmFtZSA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjbmFtZTsKKwkJY2hhcgkg ICAqY2NiaW4gPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2JpbjsKKwkJYm9vbAkJY2NlbmZv cmNlZCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjZW5mb3JjZWQ7CisJCWJvb2wJCWNjbm9p bmhlcml0ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2Nub2luaGVyaXQ7CisJCWJvb2wJCWNj dmFsaWQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3ZhbGlkOworCQlOb2RlCSAgICpjY2Jp bl9ub2RlOworCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJCUNvbnN0cmFpbnQgKmNvbnN0 cjsKKworCQkvKgorCQkgKiBQYXJ0aXRpb25lZCB0YWJsZSBjYW4gbm90IGhhdmUgTk8gSU5I RVJJVCBjaGVjayBjb25zdHJhaW50IChzZWUKKwkJICogU3RvcmVSZWxDaGVjayBmdW5jdGlv bikuCisJCSAqLworCQlBc3NlcnQoIWNjbm9pbmhlcml0KTsKKworCQljY2Jpbl9ub2RlID0g bWFwX3ZhcmlhYmxlX2F0dG5vcyhzdHJpbmdUb05vZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAx LCAwLAorCQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJCQkJCQkJIEludmFsaWRPaWQsICZmb3Vu ZF93aG9sZV9yb3cpOworCisJCS8qCisJCSAqIFdlIHJlamVjdCB3aG9sZS1yb3cgdmFyaWFi bGVzIGJlY2F1c2UgdGhlIHdob2xlIHBvaW50IG9mIExJS0UgaXMKKwkJICogdGhhdCB0aGUg bmV3IHRhYmxlJ3Mgcm93dHlwZSBtaWdodCBsYXRlciBkaXZlcmdlIGZyb20gdGhlIHBhcmVu dCdzLgorCQkgKiBTbywgd2hpbGUgdHJhbnNsYXRpb24gbWlnaHQgYmUgcG9zc2libGUgcmln aHQgbm93LCBpdCB3b3VsZG4ndCBiZQorCQkgKiBwb3NzaWJsZSB0byBndWFyYW50ZWUgaXQg d291bGQgd29yayBpbiBmdXR1cmUuCisJCSAqLworCQlpZiAoZm91bmRfd2hvbGVfcm93KQor CQkJZWxvZyhFUlJPUiwgIkNvbnN0cmFpbnQgXCIlc1wiIGNvbnRhaW5zIGEgd2hvbGUtcm93 IHJlZmVyZW5jZSB0byB0YWJsZSBcIiVzXCIuIiwKKwkJCQkgY2NuYW1lLAorCQkJCSBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSk7CisKKwkJY29uc3RyID0gbWFrZU5v ZGUoQ29uc3RyYWludCk7CisJCWNvbnN0ci0+Y29udHlwZSA9IENPTlNUUl9DSEVDSzsKKwkJ Y29uc3RyLT5jb25uYW1lID0gcHN0cmR1cChjY25hbWUpOworCQljb25zdHItPmRlZmVycmFi bGUgPSBmYWxzZTsKKwkJY29uc3RyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJY29uc3Ry LT5pc19lbmZvcmNlZCA9IGNjZW5mb3JjZWQ7CisJCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9u ID0gIWNjdmFsaWQ7CisJCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0gY2N2YWxpZDsKKwkJ Y29uc3RyLT5pc19ub19pbmhlcml0ID0gY2Nub2luaGVyaXQ7CisJCWNvbnN0ci0+cmF3X2V4 cHIgPSBOVUxMOworCQljb25zdHItPmNvb2tlZF9leHByID0gbm9kZVRvU3RyaW5nKGNjYmlu X25vZGUpOworCQljb25zdHItPmxvY2F0aW9uID0gLTE7CisJCUNvbnN0cmFpbnRzID0gbGFw cGVuZChDb25zdHJhaW50cywgY29uc3RyKTsKKwl9CisKKwkvKiBpbnN0YWxsIGFsbCBDSEVD SyBjb25zdHJhaW50cy4gKi8KKwljb29rZWRDb25zdHJhaW50cyA9IEFkZFJlbGF0aW9uTmV3 Q29uc3RyYWludHMobmV3UmVsLCBOSUwsIENvbnN0cmFpbnRzLAorCQkJCQkJCQkJCQkJICBm YWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisKKwkvKiBNYWtlIHRoZSBhZGRpdGlvbmFsIGNh dGFsb2cgY2hhbmdlcyB2aXNpYmxlICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsK KworCS8qCisJICogcGFyZW50X3JlbCBjaGVjayBjb25zdHJhaW50IGV4cHJlc3NzaW9uIG1h eSByZWZlcmVuY2UgdGFibGVvaWQsIHNvCisJICogbGF0ZXIgaW4gTWVyZ2VQYXJ0aXRpb25z TW92ZVJvd3MsIHdlIG5lZWQgZXZ1bGF0ZSB0aGUgY2hlY2sgY29uc3RyYWludAorCSAqIGFn YWluIGZvciB0aGUgbmV3UmVsLiBXZSBjYW4gY2hlY2sgd2VhdGhlciBjaGVjayBjb25zdHJh aW50IGNvbnRhaW4KKwkgKiB0YWJsZW9pZCByZWZlcmVuY2Ugb3Igbm90IHZpYSBwdWxsX3Zh cmF0dG5vcy4KKwkgKi8KKwlmb3JlYWNoX3B0cihDb29rZWRDb25zdHJhaW50LCBjY29uLCBj b29rZWRDb25zdHJhaW50cykKKwl7CisJCWlmICghY2Nvbi0+c2tpcF92YWxpZGF0aW9uKQor CQl7CisJCQlOb2RlCSAgICpxdWFsOworCQkJQml0bWFwc2V0ICAqYXR0bnVtcyA9IE5VTEw7 CisKKwkJCUFzc2VydChjY29uLT5jb250eXBlID09IENPTlNUUl9DSEVDSyk7CisJCQlxdWFs ID0gZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4cHIoY2Nvbi0+ZXhwciwgbmV3UmVs LCAxKTsKKwkJCXB1bGxfdmFyYXR0bm9zKHF1YWwsIDEsICZhdHRudW1zKTsKKworCQkJLyoK KwkJCSAqIEFkZCBjaGVjayBvbmx5IGlmIGl0IGNvbnRhaW5zIHRhYmxlb2lkCisJCQkgKiAo VGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpLgorCQkJICovCisJCQlpZiAoYm1zX2lzX21lbWJl cihUYWJsZU9pZEF0dHJpYnV0ZU51bWJlciAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1 dGVOdW1iZXIsCisJCQkJCQkJICBhdHRudW1zKSkKKwkJCXsKKwkJCQlOZXdDb25zdHJhaW50 ICpuZXdjb247CisKKwkJCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2MwKHNp emVvZihOZXdDb25zdHJhaW50KSk7CisJCQkJbmV3Y29uLT5uYW1lID0gY2Nvbi0+bmFtZTsK KwkJCQluZXdjb24tPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJCQkJbmV3Y29uLT5xdWFs ID0gcXVhbDsKKworCQkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29uc3Ry YWludHMsIG5ld2Nvbik7CisJCQl9CisJCX0KKwl9CisKKwkvKiBEb24ndCBuZWVkIHRoZSBj b29rZWRDb25zdHJhaW50cyBhbnkgbW9yZS4gKi8KKwlsaXN0X2ZyZWVfZGVlcChjb29rZWRD b25zdHJhaW50cyk7CisKKwkvKiBSZXByb2R1Y2Ugbm90LW51bGwgY29uc3RyYWludHMuICov CisJaWYgKGNvbnN0ci0+aGFzX25vdF9udWxsKQorCXsKKwkJTGlzdAkgICAqbm5jb25zdHJh aW50czsKKworCQkvKgorCQkgKiBUaGUgImluY2x1ZGVfbm9pbmgiIGFyZ3VtZW50IGlzIGZh bHNlIGJlY2F1c2UgYSBwYXJ0aXRpb25lZCB0YWJsZQorCQkgKiBjYW5ub3QgaGF2ZSBOTyBJ TkhFUklUIGNvbnN0cmFpbnQuCisJCSAqLworCQlubmNvbnN0cmFpbnRzID0gUmVsYXRpb25H ZXROb3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb25HZXRSZWxpZChwYXJlbnRfcmVsKSwKKwkJ CQkJCQkJCQkJCQkgIGZhbHNlLCBmYWxzZSk7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKG5u Y29uc3RyYWludHMpID4gMCk7CisKKwkJLyoKKwkJICogV2UgYWxyZWFkeSBzZXQgcGdfYXR0 cmlidXRlLmF0dG5vdG51bGwgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUuIE5vCisJCSAqIG5l ZWQgY2FsbCBzZXRfYXR0bm90bnVsbCBhZ2Fpbi4KKwkJICovCisJCUFkZFJlbGF0aW9uTmV3 Q29uc3RyYWludHMobmV3UmVsLCBOSUwsIG5uY29uc3RyYWludHMsIGZhbHNlLCB0cnVlLCB0 cnVlLCBOVUxMKTsKKwl9Cit9CisKKworLyoKKyAqIGNyZWF0ZVBhcnRpdGlvblRhYmxlOgor ICoKKyAqIENyZWF0ZSBhIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnROYW1lKSBmb3IgcGFydGl0 aW9uZWQgdGFibGUgKHBhcmVudF9yZWwpLgorICogb3duZXJJZCBpcyBkZXRlcm1pbmVkIGJ5 IHRoZSBwYXJ0aXRpb24gb24gd2hpY2ggdGhlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQsCisg KiBzbyBpdCBpcyBwYXNzZWQgc2VwYXJhdGVseS4gIFRoZSBuZXcgcGFydGl0aW9uIHdpbGwg aW5oZXJpdCB0aGUgYWNjZXNzIG1ldGhvZAorICogYW5kIHBlcnNpc3RlbmNlIHR5cGUgZnJv bSB0aGUgcGFyZW50IHRhYmxlLgorICoKKyAqIHJldHVybnMgdGhlIGNyZWF0ZWQgcmVsYXRp b24gKGxvY2tlZCBpbiBBY2Nlc3NFeGNsdXNpdmVMb2NrIG1vZGUpLgorICovCitzdGF0aWMg UmVsYXRpb24KK2NyZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFy ICpuZXdQYXJ0TmFtZSwKKwkJCQkJIFJlbGF0aW9uIHBhcmVudF9yZWwsIE9pZCBvd25lcklk KQoreworCVJlbGF0aW9uCW5ld1JlbDsKKwlPaWQJCQluZXdSZWxJZDsKKwlPaWQJCQlleGlz dGluZ1JlbGlkOworCVR1cGxlRGVzYwlkZXNjcmlwdG9yOworCUxpc3QJICAgKmNvbExpc3Qg PSBOSUw7CisJT2lkCQkJcmVsYW1JZDsKKwlPaWQJCQluYW1lc3BhY2VJZDsKKwlBbHRlcmVk VGFibGVJbmZvICpuZXdfcGFydHJlbF90YWI7CisKKwkvKiBJZiBleGlzdGluZyByZWwgaXMg dGVtcCwgaXQgbXVzdCBiZWxvbmcgdG8gdGhpcyBzZXNzaW9uICovCisJaWYgKFJFTEFUSU9O X0lTX09USEVSX1RFTVAocGFyZW50X3JlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJy Y29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBj cmVhdGUgYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBvZiBhbm90aGVyIHNl c3Npb24iKSk7CisKKwkvKiBMb29rIHVwIGluaGVyaXRhbmNlIGFuY2VzdG9ycyBhbmQgZ2Vu ZXJhdGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWNvbExpc3QgPSBnZXRBdHRyaWJ1dGVzTGlz dChwYXJlbnRfcmVsKTsKKworCS8qIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0b3IgZnJvbSB0 aGUgcmVsYXRpb24gc2NoZW1hLiAqLworCWRlc2NyaXB0b3IgPSBCdWlsZERlc2NGb3JSZWxh dGlvbihjb2xMaXN0KTsKKworCS8qIExvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QgZm9yIG5l dyByZWxhdGlvbi4gKi8KKwlyZWxhbUlkID0gKHBhcmVudF9yZWwtPnJkX3JlbC0+cmVsYW0g IT0gSW52YWxpZE9pZCkgPyBwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbGFtIDogSEVBUF9UQUJM RV9BTV9PSUQ7CisKKwkvKiBMb29rIHVwIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggd2UgYXJl IHN1cHBvc2VkIHRvIGNyZWF0ZSB0aGUgcmVsYXRpb24uICovCisJbmFtZXNwYWNlSWQgPQor CQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UobmV3UGFydE5hbWUsIE5v TG9jaywgJmV4aXN0aW5nUmVsaWQpOworCWlmIChPaWRJc1ZhbGlkKGV4aXN0aW5nUmVsaWQp KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFC TEUpLAorCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgbmV3 UGFydE5hbWUtPnJlbG5hbWUpKTsKKworCS8qCisJICogV2UgaW50ZW5kZWQgdG8gY3JlYXRl IHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBwZXJzaXN0ZW5jZSBhcyB0aGUKKwkgKiBw YXJlbnQgdGFibGUsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSB0aGF0 IG1pZ2h0IGJlCisJICogYWZmZWN0ZWQgYnkgdGhlIHNlYXJjaF9wYXRoLiAgSWYgdGhlIHBh cmVudCBpcyBwZXJtYW5lbnQsIHNvIG11c3QgYmUKKwkgKiBhbGwgb2YgaXRzIHBhcnRpdGlv bnMuCisJICovCisJaWYgKHBhcmVudF9yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgIT0g UkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQluZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2Ug PT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygiY2Fubm90IGNyZWF0 ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0 aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9y ZWwpKSk7CisKKwkvKiBQZXJtYW5lbnQgcmVscyBjYW5ub3QgYmUgcGFydGl0aW9ucyBiZWxv bmdpbmcgdG8gdGVtcG9yYXJ5IHBhcmVudCAqLworCWlmIChuZXdQYXJ0TmFtZS0+cmVscGVy c2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQlwYXJlbnRfcmVsLT5yZF9y ZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQll cnJtc2coImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9u IG9mIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShwYXJlbnRfcmVsKSkpOworCisJLyogQ3JlYXRlIHRoZSByZWxhdGlvbi4g Ki8KKwluZXdSZWxJZCA9IGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhuZXdQYXJ0TmFtZS0+ cmVsbmFtZSwKKwkJCQkJCQkJCQluYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQlwYXJlbnRfcmVs LT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJ CQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJb3du ZXJJZCwKKwkJCQkJCQkJCQlyZWxhbUlkLAorCQkJCQkJCQkJCWRlc2NyaXB0b3IsCisJCQkJ CQkJCQkJTklMLAorCQkJCQkJCQkJCVJFTEtJTkRfUkVMQVRJT04sCisJCQkJCQkJCQkJbmV3 UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJ CWZhbHNlLAorCQkJCQkJCQkJCU9OQ09NTUlUX05PT1AsCisJCQkJCQkJCQkJKERhdHVtKSAw LAorCQkJCQkJCQkJCXRydWUsCisJCQkJCQkJCQkJYWxsb3dTeXN0ZW1UYWJsZU1vZHMsCisJ CQkJCQkJCQkJdHJ1ZSwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCU5VTEwp OworCisJLyoKKwkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtl IHRoZSBuZXdseS1jcmVhdGVkIHJlbGF0aW9uCisJICogdHVwbGUgdmlzaWJsZSBmb3Igb3Bl bmluZy4KKwkgKi8KKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJLyoKKwkgKiBP cGVuIHRoZSBuZXcgcGFydGl0aW9uIHdpdGggbm8gbG9jaywgYmVjYXVzZSB3ZSBhbHJlYWR5 IGhhdmUKKwkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIHBsYWNlZCB0aGVyZSBhZnRlciBjcmVh dGlvbi4KKwkgKi8KKwluZXdSZWwgPSB0YWJsZV9vcGVuKG5ld1JlbElkLCBOb0xvY2spOwor CisJLyogRmluZCBvciBjcmVhdGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgbmV3bHkgY3JlYXRl ZCB0YWJsZS4gKi8KKwluZXdfcGFydHJlbF90YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVl LCBuZXdSZWwpOworCisJLyogQ3JlYXRlIGNvbnN0cmFpbnRzLCBkZWZhdWx0IHZhbHVlcyBh bmQgZ2VuZXJhdGVkIHZhbHVlcyAqLworCWNyZWF0ZVRhYmxlQ29uc3RyYWludHMod3F1ZXVl LCBuZXdfcGFydHJlbF90YWIsIHBhcmVudF9yZWwsIG5ld1JlbCk7CisKKwkvKgorCSAqIE5l ZWQgdG8gY2FsbCBDb21tYW5kQ291bnRlckluY3JlbWVudCwgc28gZnJlc2ggcmVsY2FjaGUg ZW50cnkgaGF2ZQorCSAqIG5ld2x5IGluc3RhbGxlZCBjb25zdHJhaW50IGluZm8uCisJICov CisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCXJldHVybiBuZXdSZWw7Cit9CisK Ky8qCisgKiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93czogc2NhbiBwYXJ0aXRpb25zIHRvIGJl IG1lcmdlZCAobWVyZ2luZ1BhcnRpdGlvbnMpCisgKiBvZiB0aGUgcGFydGl0aW9uZWQgdGFi bGUgYW5kIG1vdmUgcm93cyBpbnRvIHRoZSBuZXcgcGFydGl0aW9uCisgKiAobmV3UGFydFJl bCkuIFdlIGFsc28gdmVydGlmeSBjaGVjayBjb25zdHJhaW50cyBhZ2FpbnN0IHRoZXNlIHJv d3MuCisgKi8KK3N0YXRpYyB2b2lkCitNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cyhMaXN0ICoq d3F1ZXVlLCBMaXN0ICptZXJnaW5nUGFydGl0aW9ucywgUmVsYXRpb24gbmV3UGFydFJlbCkK K3sKKwlDb21tYW5kSWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7CisJQWx0ZXJlZFRh YmxlSW5mbyAqdGFiOworCUxpc3RDZWxsICAgKmx0YWI7CisKKwkvKiBUaGUgRlNNIGlzIGVt cHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJdGlfb3B0aW9ucyA9 IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyog c3RhdGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xv dCAqZHN0c2xvdDsKKworCS8qIEZpbmQgdGhlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ldyBw YXJ0aXRpb24gdGFibGU6IG5ld1BhcnRSZWwuICovCisJdGFiID0gQVRHZXRRdWV1ZUVudHJ5 KHdxdWV1ZSwgbmV3UGFydFJlbCk7CisKKwkvKiBHZW5lcmF0ZSB0aGUgY29uc3RyYWludCBh bmQgZGVmYXVsdCBleGVjdXRpb24gc3RhdGVzLiAqLworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1 dG9yU3RhdGUoKTsKKworCWJ1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0YXRlcyh0YWIsIG5l d1BhcnRSZWwsIGVzdGF0ZSk7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1 ZSk7CisKKwkvKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0YXRlIGZvciB0YWJsZV90dXBsZV9p bnNlcnQuICovCisJYmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3Jl YXRlIG5lY2Vzc2FyeSB0dXBsZSBzbG90LiAqLworCWRzdHNsb3QgPSB0YWJsZV9zbG90X2Ny ZWF0ZShuZXdQYXJ0UmVsLCBOVUxMKTsKKworCWZvcmVhY2hfb2lkKG1lcmdpbmdfb2lkLCBt ZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwkJVHVw bGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFw OworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisJCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCQlT bmFwc2hvdAlzbmFwc2hvdDsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbjsKKworCQll Y29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCQkvKgorCQkg KiBQYXJ0aXRpb24gaXMgYWxyZWFkeSBsb2NrZWQgaW4gdGhlIHRyYW5zZm9ybVBhcnRpdGlv bkNtZEZvck1lcmdlCisJCSAqIGZ1bmN0aW9uLgorCQkgKi8KKwkJbWVyZ2luZ1BhcnRpdGlv biA9IHRhYmxlX29wZW4obWVyZ2luZ19vaWQsIE5vTG9jayk7CisKKwkJLyogQ3JlYXRlIHR1 cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJCXNyY3Nsb3QgPSB0YWJsZV9zbG90 X2NyZWF0ZShtZXJnaW5nUGFydGl0aW9uLCBOVUxMKTsKKworCQkvKgorCQkgKiBNYXAgY29t cHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5l dworCQkgKiBwYXJ0aXRpb24uCisJCSAqLworCQl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxl c19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IobWVyZ2luZ1BhcnRpdGlvbiksCisJCQkJCQkJ CQkJICAgUmVsYXRpb25HZXREZXNjcihuZXdQYXJ0UmVsKSk7CisKKwkJLyogU2NhbiB0aHJv dWdoIHRoZSByb3dzLiAqLworCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0 ZXN0U25hcHNob3QoKSk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4obWVyZ2luZ1BhcnRp dGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCisJCS8qCisJCSAqIFN3aXRjaCB0byBwZXIt dHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCisJCSAq IHByb2R1Y2VkLCBzbyB3ZSBkb24ndCBsZWFrIG1lbW9yeS4KKwkJICovCisJCW9sZEN4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRl KSk7CisKKwkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNj YW5EaXJlY3Rpb24sIHNyY3Nsb3QpKQorCQl7CisJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0 c2xvdDsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJaWYgKHR1cGxlX21h cCkKKwkJCXsKKwkJCQkvKiBOZWVkIHRvIHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1dGVzLiAq LworCQkJCWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Nsb3QodHVwbGVfbWFwLT5h dHRyTWFwLCBzcmNzbG90LCBkc3RzbG90KTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlz bG90X2dldGFsbGF0dHJzKHNyY3Nsb3QpOworCisJCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRp cmVjdGx5LiAqLworCQkJCWluc2VydHNsb3QgPSBkc3RzbG90OworCisJCQkJRXhlY0NsZWFy VHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVl cywgc3Jjc2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Ns b3QtPnR0c19udmFsaWQpOworCQkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBz cmNzbG90LT50dHNfaXNudWxsLAorCQkJCQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50 dHNfbnZhbGlkKTsKKworCQkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsK KwkJCX0KKworCQkJLyoKKwkJCSAqIENvbnN0cmFpbnRzIGFuZCBHRU5FUkFURUQgZXhwcmVz c2lvbnMgbWlnaHQgcmVmZXJlbmNlIHRoZQorCQkJICogdGFibGVvaWQgY29sdW1uLCBzbyBm aWxsIHR0c190YWJsZU9pZCB3aXRoIHRoZSBkZXNpcmVkIHZhbHVlLgorCQkJICogKFdlIG11 c3QgZG8gdGhpcyBlYWNoIHRpbWUsIGJlY2F1c2UgaXQgZ2V0cyBvdmVyd3JpdHRlbiB3aXRo CisJCQkgKiBuZXdyZWwncyBPSUQgZHVyaW5nIHN0b3JpbmcuKQorCQkJICovCisJCQlpbnNl cnRzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKG5ld1BhcnRSZWwpOwor CisJCQkvKgorCQkJICogTm93LCBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkIGV4cHJlc3Npb25z IHdob3NlIGlucHV0cyBjb21lIGZyb20KKwkJCSAqIHRoZSBuZXcgdHVwbGUuICBXZSBhc3N1 bWUgdGhlc2UgY29sdW1ucyB3b24ndCByZWZlcmVuY2UgZWFjaAorCQkJICogb3RoZXIsIHNv IHRoYXQgdGhlcmUncyBubyBvcmRlcmluZyBkZXBlbmRlbmN5LgorCQkJICovCisJCQlldmFs dWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJhaW50cyh0YWIsIG5ld1Bh cnRSZWwsCisJCQkJCQkJCQkJCQkJCQlpbnNlcnRzbG90LCBlY29udGV4dCk7CisKKwkJCS8q IFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxhdGlvbi4gKi8KKwkJCXRhYmxl X3R1cGxlX2luc2VydChuZXdQYXJ0UmVsLCBpbnNlcnRzbG90LCBteWNpZCwKKwkJCQkJCQkg ICB0aV9vcHRpb25zLCBiaXN0YXRlKTsKKworCQkJUmVzZXRFeHByQ29udGV4dChlY29udGV4 dCk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3h0KTsKKwkJdGFibGVf ZW5kc2NhbihzY2FuKTsKKwkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCQlp ZiAodHVwbGVfbWFwKQorCQkJZnJlZV9jb252ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJ CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xvdCk7CisJCXRhYmxlX2Nsb3Nl KG1lcmdpbmdQYXJ0aXRpb24sIE5vTG9jayk7CisJfQorCisJRnJlZUV4ZWN1dG9yU3RhdGUo ZXN0YXRlKTsKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KGRzdHNsb3QpOworCUZy ZWVCdWxrSW5zZXJ0U3RhdGUoYmlzdGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNl cnQobmV3UGFydFJlbCwgdGlfb3B0aW9ucyk7CisKKwkvKgorCSAqIFdlIGRvbid0IG5lZWQg cHJvY2VzcyB0aGlzIG5ld1BhcnRSZWwgc2luY2Ugd2UgYWxyZWFkeSBwcm9jZXNzZWQgaW4K KwkgKiBoZXJlLCBzbyBkZWxldGUgdGhlIEFMVEVSIFRBQkxFIHF1ZXVlIG9mIGl0LgorCSAq LworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJCXRhYiA9IChBbHRlcmVkVGFibGVJ bmZvICopIGxmaXJzdChsdGFiKTsKKwkJaWYgKHRhYi0+cmVsaWQgPT0gUmVsYXRpb25HZXRS ZWxpZChuZXdQYXJ0UmVsKSkKKwkJCSp3cXVldWUgPSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVl dWUsIGx0YWIpOworCX0KK30KKworLyoKKyAqIGRldGFjaFBhcnRpdGlvblRhYmxlOiBkZXRh Y2ggcGFydGl0aW9uICJjaGlsZF9yZWwiIGZyb20gcGFydGl0aW9uZWQgdGFibGUKKyAqICJw YXJlbnRfcmVsIiB3aXRoIGRlZmF1bHQgcGFydGl0aW9uIGlkZW50aWZpZXIgImRlZmF1bHRQ YXJ0T2lkIgorICovCitzdGF0aWMgdm9pZAorZGV0YWNoUGFydGl0aW9uVGFibGUoUmVsYXRp b24gcGFyZW50X3JlbCwgUmVsYXRpb24gY2hpbGRfcmVsLCBPaWQgZGVmYXVsdFBhcnRPaWQp Cit7CisJLyogUmVtb3ZlIHRoZSBwZ19pbmhlcml0cyByb3cgZmlyc3QuICovCisJUmVtb3Zl SW5oZXJpdGFuY2UoY2hpbGRfcmVsLCBwYXJlbnRfcmVsLCBmYWxzZSk7CisKKwkvKgorCSAq IERldGFjaGluZyB0aGUgcGFydGl0aW9uIG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNj ZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkvKiBE byB0aGUgZmluYWwgcGFydCBvZiBkZXRhY2hpbmcuICovCisJRGV0YWNoUGFydGl0aW9uRmlu YWxpemUocGFyZW50X3JlbCwgY2hpbGRfcmVsLCBmYWxzZSwgZGVmYXVsdFBhcnRPaWQpOwor CisJUG9wQWN0aXZlU25hcHNob3QoKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1l PiBNRVJHRSBQQVJUSVRJT05TIDxwYXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0aW9uLW5h bWU+CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSAgUGFy dGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sK KwlSZWxhdGlvbgluZXdQYXJ0UmVsOworCUxpc3QJICAgKm1lcmdpbmdQYXJ0aXRpb25zID0g TklMOworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCU9pZAkJCWV4aXN0aW5nUmVsaWQ7CisJ T2lkCQkJb3duZXJJZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJc2F2ZV91c2VyaWQ7CisJaW50 CQkJc2F2ZV9zZWNfY29udGV4dDsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKworCS8qCisJ ICogQ2hlY2sgb3duZXJzaGlwIG9mIG1lcmdlZCBwYXJ0aXRpb25zIOKAlCBwYXJ0aXRpb25z IHdpdGggZGlmZmVyZW50CisJICogb3duZXJzIGNhbm5vdCBiZSBtZXJnZWQuIEFsc28sIGNv bGxlY3QgdGhlIE9JRHMgb2YgdGhlc2UgcGFydGl0aW9ucworCSAqIGR1cmluZyB0aGUgY2hl Y2suCisJICovCisJZm9yZWFjaF9ub2RlKFJhbmdlVmFyLCBuYW1lLCBjbWQtPnBhcnRsaXN0 KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBXZSBh cmUgZ29pbmcgdG8gZGV0YWNoIGFuZCByZW1vdmUgdGhpcyBwYXJ0aXRpb24uICBXZSBhbHJl YWR5IHRvb2sKKwkJICogQWNjZXNzRXhjbHVzaXZlTG9jayBsb2NrIG9uIHRyYW5zZm9ybVBh cnRpdGlvbkNtZEZvck1lcmdlLCBzbyBoZXJlLAorCQkgKiBOb0xvY2sgaXMgZmluZS4KKwkJ ICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9vcGVucnZfZXh0ZW5kZWQobmFtZSwg Tm9Mb2NrLCBmYWxzZSk7CisJCUFzc2VydChDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShtZXJn aW5nUGFydGl0aW9uLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCBmYWxzZSkpOworCisJCWlmIChP aWRJc1ZhbGlkKG93bmVySWQpKQorCQl7CisJCQkvKiBEbyB0aGUgcGFydGl0aW9ucyBiZWlu ZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzPyAqLworCQkJaWYgKG93bmVySWQgIT0g bWVyZ2luZ1BhcnRpdGlvbi0+cmRfcmVsLT5yZWxvd25lcikKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ CQllcnJtc2coInBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVy cyIpKTsKKwkJfQorCQllbHNlCisJCQlvd25lcklkID0gbWVyZ2luZ1BhcnRpdGlvbi0+cmRf cmVsLT5yZWxvd25lcjsKKworCQkvKiBTdG9yZSBhIG5leHQgbWVyZ2luZyBwYXJ0aXRpb24g aW50byB0aGUgbGlzdC4gKi8KKwkJbWVyZ2luZ1BhcnRpdGlvbnMgPSBsYXBwZW5kX29pZCht ZXJnaW5nUGFydGl0aW9ucywKKwkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlkKG1lcmdpbmdQ YXJ0aXRpb24pKTsKKworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2sp OworCX0KKworCS8qIExvb2sgdXAgZXhpc3RpbmcgcmVsYXRpb24gYnkgbmV3IHBhcnRpdGlv biBuYW1lLiAqLworCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShjbWQt Pm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJLyoKKwkgKiBDaGVjayBpZiB0 aGlzIG5hbWUgaXMgYWxyZWFkeSB0YWtlbi4gIFRoaXMgaGVscHMgdXMgdG8gZGV0ZWN0IHRo ZQorCSAqIHNpdHVhdGlvbiB3aGVuIG9uZSBvZiB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIGhh cyB0aGUgc2FtZSBuYW1lIGFzIHRoZQorCSAqIG5ldyBwYXJ0aXRpb24uICBPdGhlcndpc2Us IHRoaXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgYnV0IGNhdGNoaW5nCisJICogdGhp cyBoZXJlIGFsbG93cyB1cyB0byBlbWl0IGEgbmljZXIgZXJyb3IgbWVzc2FnZS4KKwkgKi8K KwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwl7CisJCU9pZAkJCW5ld1BhcnRp dGlvbk9pZCA9IEludmFsaWRPaWQ7CisKKwkJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlv bk9pZCwgbWVyZ2luZ1BhcnRpdGlvbnMpCisJCXsKKwkJCWlmIChtZXJnaW5nUGFydGl0aW9u T2lkID09IGV4aXN0aW5nUmVsaWQpCisJCQl7CisJCQkJbmV3UGFydGl0aW9uT2lkID0gbWVy Z2luZ1BhcnRpdGlvbk9pZDsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChPaWRJ c1ZhbGlkKG5ld1BhcnRpdGlvbk9pZCkpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgbmV3IHBh cnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBvbmUgb2YgbWVyZ2luZworCQkJICogcGFy dGl0aW9ucy4KKwkJCSAqLworCQkJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFUQUxFTl07CisK KwkJCS8qIEdlbmVyYXRlIHRlbXBvcmFyeSBuYW1lLiAqLworCQkJc3ByaW50Zih0bXBSZWxO YW1lLCAibWVyZ2UtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVByb2NQ aWQpOworCisJCQkvKgorCQkJICogUmVuYW1lIHRoZSBleGlzdGluZyBwYXJ0aXRpb24gd2l0 aCBhIHRlbXBvcmFyeSBuYW1lLCBsZWF2aW5nIGl0CisJCQkgKiBmcmVlIGZvciB0aGUgbmV3 IHBhcnRpdGlvbi4gIFdlIGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB0aGlzCisJCQkgKiBp biB0aGUgZnV0dXJlIGJlY2F1c2Ugd2UncmUgZ29pbmcgdG8gZXZlbnR1YWxseSBkcm9wIHRo ZQorCQkJICogZXhpc3RpbmcgcGFydGl0aW9uIGFueXdheS4KKwkJCSAqLworCQkJUmVuYW1l UmVsYXRpb25JbnRlcm5hbChuZXdQYXJ0aXRpb25PaWQsIHRtcFJlbE5hbWUsIHRydWUsIGZh bHNlKTsKKworCQkJLyoKKwkJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVy IHRvIG1ha2UgdGhlIG5ldyBwYXJ0aXRpb24KKwkJCSAqIHR1cGxlIHZpc2libGUgZm9yIHJl bmFtZS4KKwkJCSAqLworCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfVEFCTEUpLAorCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4 aXN0cyIsIGNtZC0+bmFtZS0+cmVsbmFtZSkpOworCQl9CisJfQorCisJZGVmYXVsdFBhcnRP aWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRp dGlvbkRlc2MocmVsLCB0cnVlKSk7CisKKwkvKiBEZXRhY2ggYWxsIG1lcmdlZCBwYXJ0aXRp b25zICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRp dGlvbnMpCisJeworCQlSZWxhdGlvbgljaGlsZF9yZWw7CisKKwkJY2hpbGRfcmVsID0gdGFi bGVfb3BlbihtZXJnaW5nUGFydGl0aW9uT2lkLCBOb0xvY2spOworCisJCWRldGFjaFBhcnRp dGlvblRhYmxlKHJlbCwgY2hpbGRfcmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkJdGFibGVf Y2xvc2UoY2hpbGRfcmVsLCBOb0xvY2spOworCX0KKworCS8qCisJICogUGVyZm9ybSBhIHBy ZWxpbWluYXJ5IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGl0J3Mgc2FmZSB0byBkcm9w IGFsbAorCSAqIG1lcmdpbmcgcGFydGl0aW9ucyBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28g bGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cworCSAqIGludG8gdGhlIG5ldyBwYXJ0aXRpb25z IHZpYSBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cywgYWxsIG9sZCBwYXJ0aXRpb25zCisJICog bmVlZCBiZSBkcm9wcGVkLiBIb3dldmVyLCBzaW5jZSB0aGUgZHJvcCBiZWhhdmlvciBpcyBE Uk9QX1JFU1RSSUNUIGFuZAorCSAqIHRoZSBtZXJnZSBwcm9jZXNzIChNZXJnZVBhcnRpdGlv bnNNb3ZlUm93cykgY2FuIGJlIHRpbWUtY29uc3VtaW5nLAorCSAqIHBlcmZvcm1pbmcgYW4g ZWFybHkgY2hlY2sgb24gdGhlIGRyb3AgZWxpZ2liaWxpdHkgb2Ygb2xkIHBhcnRpdGlvbnMg aXMKKwkgKiBwcmVmZXJhYmxlLgorCSAqLworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRp b25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7 CisKKwkJLyogR2V0IG9pZCBvZiB0aGUgbGF0ZXIgdG8gYmUgZHJvcHBlZCByZWxhdGlvbiAq LworCQlvYmplY3Qub2JqZWN0SWQgPSBtZXJnaW5nUGFydGl0aW9uT2lkOworCQlvYmplY3Qu Y2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0g MDsKKworCQlwZXJmb3JtRGVsZXRpb25DaGVjaygmb2JqZWN0LCBEUk9QX1JFU1RSSUNULCBQ RVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsKKwl9CisKKwkvKiBDcmVhdGUgdGFibGUgZm9y IG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2RlbC4gKi8KKwlB c3NlcnQoT2lkSXNWYWxpZChvd25lcklkKSk7CisJbmV3UGFydFJlbCA9IGNyZWF0ZVBhcnRp dGlvblRhYmxlKHdxdWV1ZSwgY21kLT5uYW1lLCByZWwsIG93bmVySWQpOworCisJLyoKKwkg KiBTd2l0Y2ggdG8gdGhlIHRhYmxlIG93bmVyJ3MgdXNlcmlkLCBzbyB0aGF0IGFueSBpbmRl eCBmdW5jdGlvbnMgYXJlIHJ1bgorCSAqIGFzIHRoYXQgdXNlci4gIEFsc28gbG9jayBkb3du IHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBhbmQKKwkgKiBhcnJhbmdlIHRvIG1h a2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8gdGhpcyBjb21tYW5kLgorCSAqCisJ ICogTmVlZCB0byBkbyBpdCBhZnRlciBkZXRlcm1pbmUgbmFtZXNwYWNlIGluIGNyZWF0ZVBh cnRpdGlvblRhYmxlIGNhbGwuCisJICovCisJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2 ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0 KG93bmVySWQsCisJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJ Q1RFRF9PUEVSQVRJT04pOworCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7 CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQg cGFydGl0aW9ucyB0byBuZXcgcGFydGl0aW9uLiAqLworCU1lcmdlUGFydGl0aW9uc01vdmVS b3dzKHdxdWV1ZSwgbWVyZ2luZ1BhcnRpdGlvbnMsIG5ld1BhcnRSZWwpOworCisJLyogRHJv cCB0aGUgY3VycmVudCBwYXJ0aXRpb25zIGJlZm9yZSBhdHRhY2hpbmcgdGhlIG5ldyBvbmUu ICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2luZ1BhcnRpdGlv bnMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQlvYmplY3Qub2JqZWN0SWQg PSBtZXJnaW5nUGFydGl0aW9uT2lkOworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVs YXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRp b24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisJfQorCisJbGlzdF9mcmVlKG1lcmdp bmdQYXJ0aXRpb25zKTsKKworCS8qCisJICogQXR0YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0 aGUgcGFydGl0aW9uZWQgdGFibGUuIHdxdWV1ZSA9IE5VTEw6CisJICogdmVyaWZpY2F0aW9u IGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdCBuZWVkZWQuCisJICovCisJYXR0 YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsK KworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKG5l d1BhcnRSZWwsIE5vTG9jayk7CisKKwkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4 ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVPWGFjdF9HVUMoZmFsc2UsIHNh dmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250 ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2Vj X2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZGI0MzAzNGI5ZC4uNmUzYjg5NWY3 MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJ T1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAotCVBBUkFM TEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09S RCBQQVRICisJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQ QVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAogCVBFUklPRCBQTEFDSU5HIFBMQU4g UExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQ UkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwg UFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgpAQCAtMjM2Nyw2ICsy MzY3LDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBh cnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSAkNDsK KwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFs c2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMjM4MSw2ICsyMzgyLDcg QEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlv bjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJ CQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSAkNDsKIAkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzk0LDYgKzIzOTYsMjEgQEAgcGFy dGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFs aXplOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJ CQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNl OworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsK KwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJ TlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVh bGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJCQkJ QWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQYXJ0 aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+c3Vi dHlwZSA9IEFUX01lcmdlUGFydGl0aW9uczsKKwkJCQkJY21kLT5uYW1lID0gJDc7CisJCQkJ CWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDQ7CiAJCQkJCWNt ZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJ CQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTI0MTAsNiArMjQyNyw3IEBAIGluZGV4X3BhcnRp dGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJ CWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5w YXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4t PmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMTc5MjksNiArMTc5NDcsNyBAQCB1bnJlc2Vy dmVkX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElP TgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwg UEFUSApAQCAtMTg1NTYsNiArMTg1NzUsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8 IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05T CiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKaW5kZXggYWZjZjU0MTY5Yy4uMzMzYzUxZDkzMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1 ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24u aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19j b2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKQEAgLTU4 LDYgKzU5LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgor I2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgorI2luY2x1ZGUgInBhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIK ICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpA QCAtMzUxMCw2ICszNTEzLDEzNSBAQCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3Rt dCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiB9CiAKIAorLyoKKyAqIGNoZWNrUGFydGl0 aW9uCisgKiBDaGVjayB3aGV0aGVyIHBhcnRSZWxPaWQgaXMgYSBsZWFmIHBhcnRpdGlvbiBv ZiB0aGUgcGFyZW50IHRhYmxlIChyZWwpLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tQYXJ0 aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKK3sKKwlSZWxhdGlvbglwYXJ0 UmVsOworCisJcGFydFJlbCA9IHRhYmxlX29wZW4ocGFydFJlbE9pZCwgTm9Mb2NrKTsKKwor CWlmIChwYXJ0UmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocGFydFJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWIt cGFydGl0aW9ucyIpKTsKKworCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv bikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNU X1RZUEUpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCisJCQkJZXJyaGlu dCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFy dGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCisJaWYgKGdldF9wYXJ0 aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlkKHJl bCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9U QUJMRSksCisJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQllcnJoaW50 KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0 aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisKKwl0YWJsZV9jbG9zZShw YXJ0UmVsLCBOb0xvY2spOworfQorCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9y TWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBtZXJnZWQgcGFydGl0 aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHRpbmcKKyAqIHBhcnRpdGlvbi4KKyAq Lworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlkZWZh dWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+ cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwg ICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0g ZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlrZXkgPSBSZWxhdGlvbkdl dFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJh dGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNI KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQg dGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKTsKKworCS8qIERvZXMgcGFydGl0aW9uZWQgdGFi bGUgKHBhcmVudCkgaGF2ZSBhIGRlZmF1bHQgcGFydGl0aW9uPyAqLworCWRlZmF1bHRQYXJ0 T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRp b25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Y21kLT5w YXJ0bGlzdCkKKwl7CisJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VWYXIgKikgbGZpcnN0 KGxpc3RwdHIpOworCisJCS8qIFBhcnRpdGlvbnMgaW4gdGhlIGxpc3Qgc2hvdWxkIGhhdmUg ZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3JfZWFjaF9jZWxsKGxpc3RwdHIyLCBwYXJ0Y21k LT5wYXJ0bGlzdCwgbG5leHQocGFydGNtZC0+cGFydGxpc3QsIGxpc3RwdHIpKQorCQl7CisJ CQlSYW5nZVZhciAgICpuYW1lMiA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cjIpOwor CisJCQlpZiAoZXF1YWwobmFtZSwgbmFtZTIpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFy dGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFt ZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUyLT5sb2Nh dGlvbikpOworCQl9CisKKwkJLyoKKwkJICogU2VhcmNoIERFRkFVTFQgcGFydGl0aW9uIGlu IHRoZSBsaXN0LiBPcGVuIGFuZCBsb2NrIHBhcnRpdGlvbnMKKwkJICogYmVmb3JlIGNhbGN1 bGF0aW5nIHRoZSBib3VuZGFyeSBmb3IgcmVzdWx0aW5nIHBhcnRpdGlvbiwgd2UgYWxzbwor CQkgKiBjaGVjayBmb3Igb3duZXJzaGlwIGFsb25nIHRoZSB3YXkuICBXZSBuZWVkIHRvIHVz ZQorCQkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhlc2UgbWVyZ2Vk IHBhcnRpdGlvbnMgd2lsbCBiZQorCQkgKiBkZXRhY2hlZCB0aGVuIGRyb3BwZWQgaW4gQVRF eGVjTWVyZ2VQYXJ0aXRpb25zLgorCQkgKi8KKwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVs aWRFeHRlbmRlZChuYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCAwLAorCQkJCQkJCQkJCSAg IFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJCQkJCQkJCQkJICAgTlVMTCk7CisJ CS8qIElzIGN1cnJlbnQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJCWlm IChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZhdWx0UGFydCA9IHRydWU7 CisKKwkJLyoKKwkJICogRXh0ZW5kZWQgY2hlY2sgYmVjYXVzZSB0aGUgc2FtZSBwYXJ0aXRp b24gY2FuIGhhdmUgZGlmZmVyZW50IG5hbWVzCisJCSAqIChmb3IgZXhhbXBsZSwgInBhcnRf bmFtZSIgYW5kICJwdWJsaWMucGFydF9uYW1lIikuCisJCSAqLworCQlmb3JlYWNoKGxpc3Rw dHIyLCBwYXJ0T2lkcykKKwkJeworCQkJT2lkCQkJY3VyT2lkID0gbGZpcnN0X29pZChsaXN0 cHRyMik7CisKKwkJCWlmIChjdXJPaWQgPT0gcGFydE9pZCkKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCQllcnJt c2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVhZHkgdXNlZCIsIG5hbWUt PnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1l LT5sb2NhdGlvbikpOworCQl9CisKKwkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lk KTsKKworCQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKKwl9 CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBvZiByZXN1bHRpbmcgcGFydGl0aW9uLiAqLworCUFz c2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlwYXJ0Y21kLT5ib3VuZCA9IG1ha2VO b2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisKKwkvKiBGaWxsIHBhcnRpdGlvbiBib3VuZC4g Ki8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKKwlwYXJ0Y21kLT5i b3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0Y21kLT5ib3VuZC0+aXNfZGVmYXVsdCA9IGlz RGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1bHRQYXJ0KQorCQljYWxjdWxhdGVfcGFydGl0 aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQsIHBhcnRjbWQtPnBhcnRsaXN0LAorCQkJCQkJ CQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91bmQsCisJCQkJCQkJCQkJCWN4dC0+cHN0YXRl KTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10IC0KICAqCQlwYXJzZSBh bmFseXNpcyBmb3IgQUxURVIgVEFCTEUKQEAgLTM3ODcsNiArMzkxOSwyMCBAQCB0cmFuc2Zv cm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJ CW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0 Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5n dGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJ CQkJZXJybXNnKCJsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIHNob3VsZCBpbmNs dWRlIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zIikpOworCisJCQkJCXRyYW5zZm9ybVBhcnRp dGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRzID0gbGFwcGVu ZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRlZmF1bHQ6CiAK IAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggODIy Y2Y0ZWM0NS4uNjBjMTAzNmNlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jCkBAIC00OTc4LDMgKzQ5NzgsMTk5IEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlv bihQR19GVU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVs dXMgPT0gcmVtYWluZGVyKTsKIH0KKworLyoKKyAqIGNoZWNrX3R3b19wYXJ0aXRpb25zX2Jv dW5kc19yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5n KQorICoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9wYXJ0 aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIHVw cGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCBsb3dlciBib3VuZCBvZgorICogc2Vjb25k X2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVxdWFsLgorICoKKyAqIHBhcmVudDoJ CQlwYXJ0aXRpb25lZCB0YWJsZQorICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFy dGl0aW9uCisgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgorICog c2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KKyAqIHNlY29uZF9ib3Vu ZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8g UGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0aW9uCisgKi8K K3N0YXRpYyB2b2lkCitjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRp b24gcGFyZW50LAorCQkJCQkJCQkgIFJhbmdlVmFyICpmaXJzdF9uYW1lLAorCQkJCQkJCQkg IFBhcnRpdGlvbkJvdW5kU3BlYyAqZmlyc3RfYm91bmQsCisJCQkJCQkJCSAgUmFuZ2VWYXIg KnNlY29uZF9uYW1lLAorCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc2Vjb25kX2Jv dW5kLAorCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkg a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25SYW5n ZUJvdW5kICpmaXJzdF91cHBlcjsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpzZWNvbmRfbG93 ZXI7CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElU SU9OX1NUUkFURUdZX1JBTkdFKTsKKworCWZpcnN0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0 aW9uX3Jib3VuZChrZXksIC0xLCBmaXJzdF9ib3VuZC0+dXBwZXJkYXR1bXMsIGZhbHNlKTsK KwlzZWNvbmRfbG93ZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNl Y29uZF9ib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJLyoKKwkgKiBsb3dlcjE9ZmFs c2UgKHRoZSBzZWNvbmQgdG8gbGFzdCBhcmd1bWVudCkgZm9yIGNvcnJlY3QgY29tcGFyaXNv biBvZgorCSAqIGxvd2VyIGFuZCB1cHBlciBib3VuZHMuCisJICovCisJY21wdmFsID0gcGFy dGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0 c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgc2Vj b25kX2xvd2VyLT5kYXR1bXMsIHNlY29uZF9sb3dlci0+a2luZCwKKwkJCQkJCQkJICBmYWxz ZSwgZmlyc3RfdXBwZXIpOworCWlmIChjbXB2YWwpCisJeworCQlQYXJ0aXRpb25SYW5nZURh dHVtICpkYXR1bSA9IGxpbml0aWFsKHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMpOworCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCWVycm1zZygiY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wi IHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHNlY29uZF9uYW1l LT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQllcnJkZXRhaWwoImxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCSAgc2Vjb25kX25hbWUtPnJlbG5h bWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCX0KK30KKworLyoKKyAqIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYwor ICoKKyAqIFJldHVybnMgdGhlIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgdGhlIHBhcnRpdGlv biB3aXRoIHRoZSBnaXZlbiBPSUQgcGFydE9pZC4KKyAqLworc3RhdGljIFBhcnRpdGlvbkJv dW5kU3BlYyAqCitnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoT2lkIHBhcnRPaWQpCit7CisJ SGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisJUGFy dGl0aW9uQm91bmRTcGVjICpib3VuZHNwZWMgPSBOVUxMOworCisJLyogVHJ5IGZldGNoaW5n IHRoZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNoZSwgZm9yIHNwZWVkLiAqLworCXR1cGxlID0g U2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFydE9pZCk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJl bGF0aW9uICV1IiwgcGFydE9pZCk7CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihSRUxP SUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfY2xhc3NfcmVscGFydGJvdW5kLAorCQkJCQkJ CSZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJwYXJ0aXRpb24gYm91 bmQgZm9yIHJlbGF0aW9uICV1IGlzIG51bGwiLAorCQkJIHBhcnRPaWQpOworCisJYm91bmRz cGVjID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKworCWlm ICghSXNBKGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRTcGVjKSkKKwkJZWxvZyhFUlJPUiwg ImV4cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgcmVsYXRpb24gJXUiLAorCQkJIHBh cnRPaWQpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwlyZXR1cm4gYm91bmRzcGVj OworfQorCisvKgorICogY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UKKyAq CisgKiBDYWxjdWxhdGVzIHRoZSBib3VuZCBvZiBtZXJnZWQgcGFydGl0aW9uICJzcGVjIiBi eSB1c2luZyB0aGUgYm91bmRzIG9mCisgKiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZC4KKyAq CisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHBhcnROYW1lczoJCW5hbWVz IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBwYXJ0T2lkczoJCU9pZHMgb2YgcGFy dGl0aW9ucyB0byBiZSBtZXJnZWQKKyAqIHNwZWMgKG91dCk6CQlib3VuZHMgc3BlY2lmaWNh dGlvbiBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbgorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8g UGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCit2 b2lkCitjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJl bnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lk cywKKwkJCQkJCQkJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCVBhcnNl U3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0 aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOworCisJQXNz ZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsKKworCXN3aXRjaCAoa2V5LT5zdHJhdGVneSkKKwl7 CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFOgorCQkJeworCQkJCWludAkJCWk7 CisJCQkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJCQlpbnQJCQlu cGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0T2lkcyk7CisJCQkJTGlzdAkgICAqYm91bmRzID0g TklMOworCisJCQkJbG93ZXJfYm91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJ CQkJCXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOwor CisJCQkJLyoKKwkJCQkgKiBDcmVhdGUgYXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBsaXN0 IG9mCisJCQkJICogUGFydGl0aW9uQm91bmRTcGVjLgorCQkJCSAqLworCQkJCWZvcmVhY2hf b2lkKHBhcnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0 aW9uX2JvdW5kX3NwZWMocGFydG9pZCk7CisJCQkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5k ZXgocGFydG9pZCk7CisKKwkJCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0 aW9uX3Jib3VuZChrZXksIGksIGJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCQkJCWJv dW5kcyA9IGxhcHBlbmQoYm91bmRzLCBib3VuZCk7CisJCQkJfQorCisJCQkJLyogU29ydCBh cnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywg bnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRf cGFydGl0aW9uX3Jib3VuZF9jbXAsIGtleSk7CisKKwkJCQkvKiBSYW5nZXMgb2YgcGFydGl0 aW9ucyBzaG91bGQgYmUgYWRqYWNlbnQuICovCisJCQkJZm9yIChpID0gMTsgaSA8IG5wYXJ0 czsgaSsrKQorCQkJCXsKKwkJCQkJaW50CQkJaW5kZXggPSBsb3dlcl9ib3VuZHNbaV0tPmlu ZGV4OworCQkJCQlpbnQJCQlwcmV2X2luZGV4ID0gbG93ZXJfYm91bmRzW2kgLSAxXS0+aW5k ZXg7CisKKwkJCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwK KwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIHByZXZf aW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250 aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxp c3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJv dW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIHBz dGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBMb3dlciBib3VuZCBvZiBmaXJzdCBw YXJ0aXRpb24gaXMgdGhlIGxvd2VyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlv bi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dlcmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9u Qm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzWzBdLT5pbmRleCkp LT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJCQkJICogVXBwZXIgYm91bmQgb2YgbGFzdCBw YXJ0aXRpb24gaXMgdGhlIHVwcGVyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlv bi4KKwkJCQkgKi8KKwkJCQlzcGVjLT51cHBlcmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9u Qm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzW25wYXJ0cyAtIDFd LT5pbmRleCkpLT51cHBlcmRhdHVtczsKKworCQkJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJ CQkJbGlzdF9mcmVlKGJvdW5kcyk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBQQVJU SVRJT05fU1RSQVRFR1lfTElTVDoKKwkJCXsKKwkJCQkvKiBDb25zb2xpZGF0ZSBib3VuZHMg Zm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAqLworCQkJCWZvcmVhY2hfb2lkKHBh cnRvaWQsIHBhcnRPaWRzKQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2Jv dW5kX3NwZWMocGFydG9pZCk7CisJCQkJCXNwZWMtPmxpc3RkYXR1bXMgPSBsaXN0X2NvbmNh dChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+bGlzdGRhdHVtcyk7CisJCQkJfQorCQkJCWJy ZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBw YXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJ fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDhiMTBmMjMxM2YuLjFjZjA5NDlm YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3NDksNiArMjc0OSw3IEBAIG1h dGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJCQkgICJPV05FUiBUTyIs ICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAgIlJFUExJQ0EgSURFTlRJ VFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJUSVRJT04iLCAi Rk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKKwkJCQkJICAiTUVSR0UgUEFSVElUSU9OUyAo IiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAq LwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQi KSkKQEAgLTMwMjIsNiArMzAyMywxNSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55 LCAiREVUQUNIIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgi Q09OQ1VSUkVOVExZIiwgIkZJTkFMSVpFIik7CiAKKwkvKiBBTFRFUiBUQUJMRSA8bmFtZT4g TUVSR0UgUEFSVElUSU9OUyAoICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQorCXsKKwkJc2V0 X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0X3dkKTsKKwkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CisJfQorCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJ T05TIiwgIigqKSIpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPIik7CisKIAkvKiBBTFRFUiBU QUJMRSA8bmFtZT4gT0YgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIs IE1hdGNoQW55LCAiT0YiKSkKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlf Zm9yX2xpc3Rfb2ZfY29tcG9zaXRlX2RhdGF0eXBlcyk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5k ZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQuLmY1NDIzMzQ5OWIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oCkBAIC0xMDcsNiArMTA3LDggQEAgZXh0ZXJuIHZvaWQgUmVsZWFzZURl bGV0aW9uTG9jayhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpOwogZXh0ZXJuIHZvaWQg cGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCQlE cm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiAKK2V4dGVybiB2b2lkIHBlcmZv cm1EZWxldGlvbkNoZWNrKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKKwkJCQkJCQkJ IERyb3BCZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsKIGV4dGVybiB2b2lkIHBlcmZv cm1NdWx0aXBsZURlbGV0aW9ucyhjb25zdCBPYmplY3RBZGRyZXNzZXMgKm9iamVjdHMsCiAJ CQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggODZhMjM2YmQ1OC4uYjFiMzMxNWZlNSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtOTY0LDEzICs5NjQsMTYgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGFydGl0aW9uUmFuZ2VEYXR1bQogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCiAvKgotICog UGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRUQUNIL0RFVEFD SCBQQVJUSVRJT04gY29tbWFuZHMKKyAqIFBhcnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVS IFRBQkxFL0lOREVYIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9OIGFuZCBmb3IKKyAqCSAgQUxU RVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVj dCBQYXJ0aXRpb25DbWQKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7 CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaCAqLworCVJhbmdlVmFy ICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJn ZSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0 dGFjaGluZyAqLworCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25z IHRvIGJlIG1lcmdlZCwgdXNlZCBpbgorCQkJCQkJCQkgKiBBTFRFUiBUQUJMRSBNRVJHRSBQ QVJUSVRJT05TICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBA IC0yNDczLDYgKzI0NzYsNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9B dHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBh cnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9u RmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9NZXJnZVBh cnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJ CQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50 aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1AgSURF TlRJVFkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBhNGFmM2Y3MTdhLi45MGU4Y2RkZjhi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcsNiArMzM3LDcgQEAgUEdfS0VZV09SRCgi cGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04s IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhcnRpdGlv bnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlv bmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5oCmluZGV4IDY1ZjE2MWY3MTguLjY5MGQyNTk2MTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0MywxMCBAQCBleHRlcm4gaW50CXBh cnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4 dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91 bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4 dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9u IHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCQkJCUxp c3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAor CQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBB UlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFy dGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li45ODQ0NmFhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAsMCArMSwxOTkgQEAKK1BhcnNlZCB0 ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIg czJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsK K3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEw XzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQ REFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0 ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUg ICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFicnIg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJp OiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYn IHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0 ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUg ICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQg TUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0 XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQg dCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFj OiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlU Oworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0r LS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAx bW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitz dGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUg czFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4 dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1l cmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0 cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAg czJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8 dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1 ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMyaSBz MmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lO IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElO VE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAg czFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8x MCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47Citz dGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0g MTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNv bXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0 cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAK KzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRl eHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBz MmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBz MW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEw LCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0 ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAx OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29t cGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRw YXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAor MTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4 dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJp IHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElU SU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFt b2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7Citz dGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6 IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0K KyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRl eHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJz CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVw IHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJ T05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVw IHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1v ZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0 ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczog U0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQor IDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4 dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycwor c3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBz Mmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0 cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjog QkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3 aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1 OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU ICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4 dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAg ICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZQppbmRleCA5ZjFlOTk3ZDgxLi4yMDQwZTFjNTdhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEwOCw2ICsxMDgsNyBAQCB0ZXN0 OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0y CiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVw ZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRl c3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9u CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdl LnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGMyYjlkMzQ0NQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVy Z2Uuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0aGF0IE1FUkdFIG9wZXJhdGlv biBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3NldHVw Cit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUgdHBh cnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUgVEFC TEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFy dCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBhcnRf MjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7 CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBERUZB VUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5T RVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0cGFy dDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJycgl7 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFtZXJnCXsg QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisK K3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJ U09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJ U09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMydQl7IFVQREFURSB0cGFy dCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJjCXsgQ09N TUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMyIGlu c2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBNRVJHRSBQQVJUSVRJT05TIHRoZW4K KyMgczIgaXMgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRlZCByb3cgYW5kIHdhaXRzIHVudGls IHMxIGZpbmlzaGVzCisjIE1FUkdFIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczJiIHMy aSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIg czJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24g czJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworCitwZXJtdXRh dGlvbiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVy bXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBz MmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUg czFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWJyciBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYnMgczFtZXJn IHMyYiBzMnUgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CmluZGV4IDUw ZDAzNTRhMzQuLmM0MDNjMmY1NjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dApAQCAt NTYsNiArNTYsMTEgQEAgQUxURVIgVEFCTEUgcGFydCBERVRBQ0ggUEFSVElUSU9OIHBhcnQy OwogTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJM RQogTk9USUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIERFVEFDSCBQQVJUSVRJT04gZGVzYyB0 YWJsZSBwYXJ0MgogRFJPUCBUQUJMRSBwYXJ0MjsKK0NSRUFURSBUQUJMRSBwYXJ0MiBQQVJU SVRJT04gT0YgcGFydCBGT1IgVkFMVUVTIEZST00gKDEwMCkgdG8gKDIwMCk7CitOT1RJQ0U6 ICBEREwgdGVzdDogdHlwZSBzaW1wbGUsIHRhZyBDUkVBVEUgVEFCTEUKK0FMVEVSIFRBQkxF IHBhcnQgTUVSR0UgUEFSVElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOworTk9U SUNFOiAgRERMIHRlc3Q6IHR5cGUgYWx0ZXIgdGFibGUsIHRhZyBBTFRFUiBUQUJMRQorTk9U SUNFOiAgICBzdWJjb21tYW5kOiB0eXBlIE1FUkdFIFBBUlRJVElPTlMgZGVzYyA8TlVMTD4K IEFMVEVSIFRBQkxFIHBhcnQgQUREIFBSSU1BUlkgS0VZIChhKTsKIE5PVElDRTogIERETCB0 ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKIE5PVElDRTogICAgc3Vi Y29tbWFuZDogdHlwZSBBREQgQ09OU1RSQUlOVCAoYW5kIHJlY3Vyc2UpIGRlc2MgY29uc3Ry YWludCBwYXJ0X2Ffbm90X251bGwgb24gdGFibGUgcGFydApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbAppbmRl eCA5YWQxY2Y5MDhkLi4zMWU2OTEwMGEzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbApAQCAtMzUsNiAr MzUsOSBAQCBBTFRFUiBUQUJMRSBwYXJ0IEFUVEFDSCBQQVJUSVRJT04gcGFydDIgRk9SIFZB TFVFUyBGUk9NICgxMDEpIHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFydCBERVRBQ0ggUEFS VElUSU9OIHBhcnQyOwogRFJPUCBUQUJMRSBwYXJ0MjsKIAorQ1JFQVRFIFRBQkxFIHBhcnQy IFBBUlRJVElPTiBPRiBwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKTsKK0FM VEVSIFRBQkxFIHBhcnQgTUVSR0UgUEFSVElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBh cnQxOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7CiAKIEFMVEVS IFRBQkxFIHBhcmVudCBBTFRFUiBDT0xVTU4gYSBTRVQgTk9UIE5VTEw7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5j IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2Uu YwppbmRleCAxOTM2NjlmMmJjLi43ZGU1ZGRiODc4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTI5 Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUg PSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJc3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05T IjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQkJc3RydHlwZSA9 ICJBREQgSURFTlRJVFkiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmY2MjYyMmY4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKQEAgLTAsMCArMSwxMTAyIEBA CistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAu Li4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdl X3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0 IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8xIFBBUlRJ VElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDQtMTUnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMiBQQVJUSVRJT04g T0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTE1JykgVE8gKCcy MDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2Fs ZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19m ZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK0VSUk9SOiAgcGFydGl0aW9u IHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDE6IC4u LmUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2Fs ZXNfZmViMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5v dCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVz X2ZlYl9tYXJfYXByMjAyMjsKK0VSUk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBhIHRh YmxlCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkg bWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCistLSBFUlJPUjog IGNhbiBub3QgbWVyZ2UgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0b2dldGhlciB3aXRo IHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIERFVEFJTDogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCistLSAoc3BhY2UgYmV0d2VlbiBz ZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFy MjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsKK0VSUk9SOiAgY2FuIG5vdCBtZXJnZSBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxl c19qYW4yMDIyIgorREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19t YXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfamFuMjAyMiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIEVS Uk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIHRvZ2V0aGVy IHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gREVUQUlMOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVw cGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIChzcGFjZSBiZXR3 ZWVuIHNlY3Rpb25zIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2phbjIwMjIpCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19kZWMyMDIxLCBzYWxl c19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2RlY19qYW5fZmViMjAyMjsK K0VSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIHRvZ2V0 aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorREVUQUlMOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVw cGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0hJTlQ6ICBBTFRFUiBU QUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5k cyB0byBiZSBhZGphY2VudC4KKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2Fs ZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYS5zYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMjsKK0VSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMg YWxyZWFkeSB1c2VkCitMSU5FIDE6IC4uLmUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmVi MjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9ucy4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tRVJST1Is IHNhbGVzX2Fwcl8yIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19q YW4yMDIyKSBJTlRPIHNhbGVzX2Fwcl8yOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfYXBy XzIiIGFscmVhZHkgZXhpc3RzCitDUkVBVEUgVklFVyBqYW4yMDIydiBhcyBTRUxFQ1QgKiBG Uk9NIHNhbGVzX2phbjIwMjI7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2RlY19q YW5fZmViMjAyMjsKK0VSUk9SOiAgY2Fubm90IGRyb3AgdGFibGUgc2FsZXNfamFuMjAyMiBi ZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICB2aWV3IGphbjIw MjJ2IGRlcGVuZHMgb24gdGFibGUgc2FsZXNfamFuMjAyMgorSElOVDogIFVzZSBEUk9QIC4u LiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK0RST1AgVklF VyBqYW4yMDIydjsKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBv cmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0aAorU0VUIHNl YXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBU QUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJ T05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAyMiwKKyAgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfbWFyMjAyMiwKKyAgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworUFJF UEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMKK1NFTEVDVCAgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVyc2lzdGVuY2UsCisgICAg ICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5nLAorICAgICAgICBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKK0ZST00gICAg cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKK1dIRVJF ICAgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICB8IHJlbHBlcnNpc3Rl bmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2phbl9m ZWJfbWFyMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykK KyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAg ICAgICAgICAgICAgfCBwICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2RlYzIwMjEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMTItMDEtMjAy MScpIFRPICgnMTItMzEtMjAyMScpCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBERUZBVUxUCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2Ug cGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBz YWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAn TWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUw MCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAg MTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5 LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywg ICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIy LTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAg KDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFy dGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSQU5HRSAoc2FsZXNfZGF0ZSkKKygxIHJvdykK KworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3Bh cnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBl cnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAg ICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXBy MjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxl c19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKQor IHNhbGVzX2phbjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAy MicpCisgc2FsZXNfbWFyMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0w MS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg1IHJvd3MpCisKKy0tIGNoZWNrIHNjaGVt YS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAy Miwgc2FsZXNfYXByMjAyMikgSU5UTyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNf ZmViX21hcl9hcHIyMDIyOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgb2lkICAgICAgICAgICAgICAgICAgICAgICB8IHJlbHBlcnNpc3Rl bmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykK KyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAg ICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQorIHNhbGVzX290aGVycyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworU0VMRUNU ICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWJfbWFyX2Fw cjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMic7Cisg ICAgICAgIHNjaGVtYW5hbWUgICAgICAgIHwgICAgICAgdGFibGVuYW1lICAgICAgIHwgICAg ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy IHwgc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgc2FsZXNfZmViX21hcl9hcHIyMDIyX3NhbGVz X2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWJfbWFyX2Fw cjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVz X2ZlYl9tYXJfYXByMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZ IHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVv aWQgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19qYW4yMDIy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCBN YXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2ph bjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAx MCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2Fs ZXNfamFuMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIK KyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIg fCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAw Mi0xMC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXBy MjAyMiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAw MCB8IDA0LTMwLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21h cl9hcHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19m ZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNh bGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBwYXJ0aXRp b25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3 aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBz YWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfZmViX21hcl9h cHIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0 ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAg ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAw My0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAg ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEz LTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCisoMTAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBp bnRvIERFRkFVTFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JF QVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0w My0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKy0tIE1lcmdlIHBhcnRpdGlv bnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhl IHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMKKyAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVycyBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8 ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTAg fCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAg ICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcg fCAwMS0wOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAg ICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcgcm93cykKKworLS0gc2hvdyBwYXJ0aXRpb25z IHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNf cmFuZ2V9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8 IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHAgICAgICAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0w MS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIyIHwgcCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAo JzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCBwICAg ICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDMg cm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0t ICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1u OworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIg SU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFS Q0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3llYXI6OnRl eHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykg fHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNh bGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcp CisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf ZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1Ig VkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJP TSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywg MSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2Fs ZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5h Z2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAo J01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywg MyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIs IDUsIDEpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGU7 CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2Fs ZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IHNhbGVzX2RlYzIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAg ICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19kZWMyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2Fs ZXNfamFuMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVz X2phbjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19m ZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmVi MjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVy ICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAg ICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAg IHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAg ICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8 IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAg IDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworQUxURVIg VEFCTEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxl c19mZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNf ZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2Vy MicsIDIwMjIsIDIsIDEwKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc19kYXRlOworICAgICB0YWJsZW9pZCAgICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxl c19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjIgICAgIHwgTWFuYWdlcjEgICAgICAg ICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcg fCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMiAgICAgfCBNYW5hZ2VyMiAgICAg ICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4w OCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAg ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAx LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIu MDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2Vy MSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAy Mi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFn ZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAy MDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFu YWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8 IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBN YW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEw IHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAgICB8 IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAg IDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgICAg IHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAg ICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAg ICAgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAg ICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCitE Uk9QIFRBQkxFIHNhbGVzX2RhdGU7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBv ZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Yg c2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJM RSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgx LCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAk Qk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0 aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19X SEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFU RSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgor ICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RB VEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy KCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUK KyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJl IGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAg dHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF8yMCBWQUxVRVMgKDE5LCAnSXZh bm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9 IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUy MF8zMCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworLS0gMiB0 cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmln Z2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVS LCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBh Y3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEg dHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBS T1cKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNwZW9wbGUxMF80MDsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEw IHwgTWF5CisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAyMCB8IFNt aXJub2ZmCisgICAgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzcGVvcGxlOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo KTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5z CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor LS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg ZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWly bm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMxLCBub3co KSwgJ1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1O IGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Bl b3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisg ICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxlMzBf NDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGU7 Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorICAgICAg ICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAg ICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgICAg IDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTAxXzEw OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJv dykKKworc2VsZWN0ICogZnJvbSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQor ICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92Cisg ICAgICAgICAgICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9O IHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZ IHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIy XzAxXzEwIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2Fs ZXNfYXByMjAyMl8xMF8yMCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxl c19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJsZW9pZCwgc2Fs ZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxlc19hcHJfYWxs IHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByX2FsbCB8 ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0g QlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3Jz IGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0 Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIw KSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBC WSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVy ZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsKK0NS RUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0NSRUFURSBU QUJMRSBzYWxlc19saXN0MiAoTElLRSBzYWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAo c2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBz YWxlc19saXN0MiBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdI ZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QyIERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ug c2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hB Uig1KSk7CistLSBFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMgbm90IGEgcGFydGl0aW9u IG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19l eHRlcm5hbCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogICJzYWxlc19leHRlcm5hbCIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0IgorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBh cnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICAic2FsZXNf ZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNh bGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7 CitFUlJPUjogICJzYWxlc19leHRlcm5hbDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3Vi LXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQyLCBzYWxl c19lYXN0KSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQy IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitISU5UOiAg QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0 aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVy bmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xp c3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFy dGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMg SURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNf bGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChz YWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRl X2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAo J1RydW1wJywgICAgJ0JlamluZycsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAg KCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAgICA1MDAsICcyMDIyLTAzLTAzJyksCisg ICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpLAor ICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1MCwgJzIwMjItMDMtMDQnKSwK KyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAsICcyMDIyLTAzLTA3Jyks CisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScp LAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMDYn KSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5 JyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0x MScpLAorICAoJ0hhbGRlcicsICAgJ09zbG8nLCAgICAgICAgICAgIDgwMCwgJzIwMjItMDMt MDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAz LTA1JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0w My0xMCcpLAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjIt MDMtMDgnKSwKKyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIy LTAzLTA1Jyk7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VU RSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOworICAgICAgb2lkICAgICAg fCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNfY2VudHJhbCB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2 JykKKyBzYWxlc19lYXN0ICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snKQorIHNhbGVzX25vcmQgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1 cmcnLCAnSGVsc2lua2knKQorIHNhbGVzX3dlc3QgICAgfCBwICAgICAgICAgICAgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdO ZXcgWW9yaycsICdNYWRyaWQnKQorIHNhbGVzX290aGVycyAgfCBwICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIHNob3cgcGFydGl0 aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3Nh bGVzX2xpc3R9Jyk7CisgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgICB8IHAg ICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snLCAnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykKKyBzYWxlc19u b3JkICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKQor IHNhbGVzX290aGVycyB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7 CisgIHRhYmxlb2lkICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8ICBz YWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX25vcmQgfCAgICAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAw MCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgIDcgfCBNYXkgICAg ICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIy Cisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICAgICB8IEhl bHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorIHNhbGVzX25vcmQg fCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8 ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAg IDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgICAgfCAgICAgICAgIDEwMDAg fCAwMy0wMS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYg ICAgICAgICB8IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgor IHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJz YXcgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyBzYWxlc19hbGwgIHwg ICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA2 IHwgUG9pcm90ICAgICAgICAgICB8IEJlcmxpbiAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDMtMDEtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgOCB8IExpICAgICAgICAg ICAgICAgfCBWbGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyBz YWxlc19hbGwgIHwgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlk ICAgICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgc2FsZXNfYWxsICB8ICAg ICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICAgICB8IEt5aXYgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDMtMTAtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAz LTA4LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAg ICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisoMTQg cm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIG1l cmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdXYXJzYXcnOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2FsbF9zYWxl c19zdGF0ZV9pZHggb24gc2FsZXNfYWxsCisgICBJbmRleCBDb25kOiAoKHNhbGVzX3N0YXRl KTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQt MjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAg IHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAn V2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4g dXNpbmcgc2FsZXNfYWxsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19hbGwgc2FsZXNfbGlz dAorICAgSW5kZXggQ29uZDogKChzYWxlc19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4 dCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19z dGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fy c2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMg fCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0w OC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g c2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFw cGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYWxsX3NhbGVzcGVyc29uX25h bWVfaWR4IG9uIHNhbGVzX2FsbCBzYWxlc19saXN0XzEKKyAgICAgICAgIEluZGV4IENvbmQ6 ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVzX25vcmQgc2FsZXNfbGlzdF8yCisgICAgICAgICBS ZWNoZWNrIENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4 dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19ub3JkX3NhbGVz cGVyc29uX25hbWVfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVy c29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAtPiAgQml0bWFwIEhlYXAg U2NhbiBvbiBzYWxlc19vdGhlcnMgc2FsZXNfbGlzdF8zCisgICAgICAgICBSZWNoZWNrIENv bmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19vdGhlcnNfc2FsZXNwZXJzb25f bmFtZV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFt ZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVz cGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAg fCAwMy0wNC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBU QUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFu b3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50 LCBjIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAx IFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NS RUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsK K0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJVElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdB JykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUgdDMgKGkgaW50LCB0IHRleHQpOworLS0gRVJS T1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0 MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBBUlRJVElPTlMgKHQxcDEsIHQycGEpIElOVE8g dDJwOworRVJST1I6ICByZWxhdGlvbiAidDFwMSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJl bGF0aW9uICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBj YW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0t IEVSUk9SOiAgInQzIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUg InQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8g dDJwOworRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0 YWJsZSAidDIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2Fu IG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9Q IFRBQkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CistLQorLS0gQ2hl Y2sgdGhlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRoZSBwYXJ0aXRpb24gbmFtZSBpcyB0 aGUgc2FtZSBhcyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4KKy0tCitDUkVB VEUgVEFCTEUgdCAoaSBpbnQsIFBSSU1BUlkgS0VZKGkpKSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUgSU5ERVggdGlkeCBPTiB0KGkpOwor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xXzIsIHRwXzBfMSkgSU5UTyB0 cF8xXzI7CistLSBJbmRleG5hbWUgdmFsdWVzIHNob3VsZCBiZSAndHBfMV8yX3BrZXknIGFu ZCAndHBfMV8yX2lfaWR4Jy4KKy0tIE5vdC1udWxsIGNvbnN0cmFpbnQgbmFtZSBzaG91bGQg YmUgJ3RwXzFfMl9pX25vdF9udWxsJy4KK1xkKyB0cF8xXzIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzFfMiIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFn ZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBv ZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6 ICgoaSBJUyBOT1QgTlVMTCkgQU5EIChpID49IDApIEFORCAoaSA8IDIpKQorSW5kZXhlczoK KyAgICAidHBfMV8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKKyAgICAidHBfMV8y X2lfaWR4IiBidHJlZSAoaSkKK05vdC1udWxsIGNvbnN0cmFpbnRzOgorICAgICJ0X2lfbm90 X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorCitEUk9QIFRBQkxFIHQ7CistLQor LS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0JF R0lOOworU0hPVyBzZWFyY2hfcGF0aDsKKyAgICAgICAgICAgc2VhcmNoX3BhdGggICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEsIHB1YmxpYworKDEgcm93KQorCitDUkVBVEUgVEVNUCBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBPTiBDT01NSVQgRFJPUDsKK0NSRUFURSBU RU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzJfMyBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKTsKK0NSRUFURSBURU1QIFRBQkxF IHRwXzNfNCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KTsKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdf dGVtcC50cF8wXzI7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMiwg dHBfMl8zKSBJTlRPIHBnX3RlbXAudHBfMF8zOworLS0gUGFydGl0aW9uIHNob3VsZCBiZSB0 ZW1wb3JhcnkuCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAg IHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0cF8wXzMgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMykKKyB0cF8zXzQgfCB0ICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgzKSBU TyAoNCkKKygyIHJvd3MpCisKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVu dCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0cF8w XzQ7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFy dGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIKK1JPTExCQUNLOworLS0KKy0tIFRy eSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgcGFydGl0aW9ucy4KKy0tCitCRUdJ TjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1w LCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdj bGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVS RSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0t LSstLS0tLS0tLS0tLS0tLS0tCisgdCAgIHwgcAorKDEgcm93KQorCitFWEVDVVRFIGdldF9w YXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAor LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBwICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSkKKyB0cF8xXzIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK1NBVkVQ T0lOVCBzOworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBp bnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVh dGUgYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxh dGlvbiAidCIKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBzOworU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHBlcnNp c3RlbnQgcGFydGl0aW9ucyBpbnRvIGEgdGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRw XzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBw YXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorUk9MTEJBQ0s7CitCRUdJTjsK K1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBw dWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz cywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBj Lm9pZCA9ICd0Jzo6cmVnY2xhc3M7Cisgb2lkIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLSst LS0tLS0tLS0tLS0tLS0tCisgdCAgIHwgdAorKDEgcm93KQorCitFWEVDVVRFIGdldF9wYXJ0 aXRpb25faW5mbygne3R9Jyk7CisgIG9pZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCB0ICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSkKKyB0cF8xXzIgfCB0ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKKygyIHJvd3MpCisKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7Cist LSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJl bGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitST0xMQkFD SzsKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9pbmZvOworLS0gQ2hlY2sgdGhlIG5ldyBw YXJ0aXRpb24gaW5oZXJpdHMgcGFyZW50J3MgdGFibGVzcGFjZQorU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChp IGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK1NFTEVDVCB0YWJsZW5hbWUsIHRh Ymxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0 cF8wXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAg T1JERVIgQlkgdGFibGVuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICAgIHRhYmxl c3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAg fCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDIg cm93cykKKworU0VMRUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00g cGdfaW5kZXhlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJs ZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1l ICB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190Ymxz cGFjZQorIHRwXzBfMiAgICB8IHRwXzBfMl9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorKDIg cm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb24gaW5o ZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBBQ0NFU1MgTUVUSE9E IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFt X2hhbmRsZXI7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSkgVVNJTkcgcGFydGl0aW9uc19tZXJnZV9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJM RSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRw XzBfMjsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9J TiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVn Y2xhc3MsICd0cF8wXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZTsKKyByZWxu YW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorIHRwXzBfMiAg fCBwYXJ0aXRpb25zX21lcmdlX2hlYXAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RS T1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CistLSBUZXN0IHBlcm1p c3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUg YW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0aW9ucyB0byBkbyB0aGUgbWVyZ2UuCitD UkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBST0xF IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7 CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitF UlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8x XzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBf MQorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMF8xIE9X TkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjog IG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMV8yCitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9ib2I7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0RS T1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitSRVZPS0UgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBUZXN0OiB3ZSBj YW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGlmZmVyZW50IG93bmVycworQ1JFQVRFIFJP TEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworR1JB TlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3Bh cnRpdGlvbnNfbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50KTsK K1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0NSRUFURSBUQUJMRSB0cF8xXzIo aSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQUxURVIgVEFCTEUgdCBBVFRBQ0gg UEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0FMVEVSIFRB QkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo Mik7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlJzoKK1xk dCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVz CisgICAgICAgICBTY2hlbWEgICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAg ICAgIE93bmVyICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlv bnNfbWVyZ2VfYWxpY2UKKygxIHJvdykKKworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0 aW9uc19tZXJnZV9ib2InOgorXGR0IHRwXzFfMgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAgIHwgIE5hbWUg IHwgVHlwZSAgfCAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUgfCBy ZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iCisoMSByb3cpCisKKy0tIEVSUk9SOiAgcGFy dGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VS Uk9SOiAgcGFydGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzCitE Uk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uc19tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRp b25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxp Y2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKKy0tIFRlc3Qg Zm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUg dHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5E RVIgMSk7CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxl IGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAx LCB0cDIpIElOVE8gdHAzOworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25l ZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkCistLSBFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9u cyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKK0VSUk9S OiAgbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCBzaG91bGQgaW5jbHVkZSBhdCBs ZWFzdCB0d28gcGFydGl0aW9ucworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBmb3IgbWVyZ2Vk IHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBTVEFUSVNUSUNTIGlzIGVtcHR5CistLSAq IENPTU1FTlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMgYXJlIHRoZSBzYW1lIGFzIERFRkFV TFRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBTVE9SQUdFIGlzIHRoZSBzYW1lIGFz IFNUT1JBR0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdFTkVSQVRFRCBhbmQgQ09O U1RSQUlOVFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgZm9y IHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBhcyBUUklH R0VSUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0CisoaSBpbnQgTk9U IE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBERUZB VUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlT IGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMoaSkp OworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKK0NSRUFURSBUQUJMRSB0cF8w XzEKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2Rl ZmF1bHRfdHBfMF8xJywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBh cyAoJzIwMjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NPTU1FTlQgT04gQ09M VU1OIHRwXzBfMS5pIElTICd0cF8wXzEuaSc7CitDUkVBVEUgVEFCTEUgdHBfMV8yCisoaSBp bnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3Rw XzFfMicsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIy LTAzLTAzJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF8x XzIuaSBJUyAndHBfMV8yLmknOworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRF TkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMF8xX3N0YXQg KERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NSRUFURSBTVEFUSVNUSUNT IHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF8xXzI7CitBTFRF UiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxU RVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9U IEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENI RUNLIChiID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0 X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CitJTlNFUlQgSU5UTyB0cF8wXzEoaSwgdCwg YikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8yKGksIHQsIGIp IFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRy aWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFT CiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFj dGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdf V0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUg VFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0 IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0 Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF8wXzFfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBC RUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURV UkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJyk7CitDUkVBVEUgVFJJR0dFUiB0cF8xXzJf YmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzFfMiBGT1Ig RUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMV8y Jyk7CitcZCsgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAg ICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCB0 cF8wXzEuaQorIHQgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdk ZWZhdWx0X3RwXzBfMSc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbWFpbiAg ICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMi0wMi0yMDIy Jzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9u IG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCitQYXJ0aXRpb24gY29uc3RyYWlu dDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkp IDwgMSkpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+ IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAg InRfYl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitTdGF0aXN0aWNzIG9iamVj dHM6CisgICAgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMV9zdGF0IiAoZGVwZW5k ZW5jaWVzKSBPTiBpLCBiIEZST00gdHBfMF8xCitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAg ICAidHBfMF8xX2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQorICAgICJ0 X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdnZXJzOgor ICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBf MSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyks IE9OIFRBQkxFIHQKKyAgICB0cF8wXzFfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZP UkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmln Z2VyX2Z1bmN0aW9uKCd0cF8wXzEnKQorCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMTsKK1xkKyB0cF8wXzEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9u c19tZXJnZV9zY2hlbWEudHBfMF8xIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAg ICAgICAgIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHQgICAgICB8IHRleHQgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3QnOjp0ZXh0ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAg fCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAg IHwgCisgZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJh dGVkIGFsd2F5cyBhcyAoJzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgICB8 ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFO RCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50czoK KyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENIRUNL IChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4gMCkg Tk9UIFZBTElECitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAidF9pX25vdF9udWxsIiBO T1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAiYiIgKGlu aGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNlcnRfcm93 X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUg RlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndCcpLCBPTiBUQUJMRSB0CisKK0lOU0VSVCBJ TlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworTk9USUNFOiAgdHJpZ2dl cih0KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEJFRk9SRSwgbGV2ZWwgPSBS T1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7Cisg dGFibGVvaWQgfCBpIHwgICAgICAgdCAgICAgICAgfCBiIHwgICAgIGQgICAgICAKKy0tLS0t LS0tLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLQorIHRwXzBfMSAg IHwgMCB8IGRlZmF1bHRfdHBfMF8xIHwgMSB8IDAxLTAxLTIwMjIKKyB0cF8wXzEgICB8IDEg fCBkZWZhdWx0X3RwXzFfMiB8IDIgfCAwMS0wMS0yMDIyCisgdHBfMF8xICAgfCAxIHwgZGVm YXVsdF90ICAgICAgfCAzIHwgMDEtMDEtMjAyMgorKDMgcm93cykKKworRFJPUCBUQUJMRSB0 OworRFJPUCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CistLSBUZXN0IE1FUkdFIFBB UlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludAorQ1JFQVRF IFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwor Q1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKK0NS RUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZBTFVFUyAoMSks ICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9S RUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKy0tIFNob3Vs ZCBiZSBOT1QgVkFMSUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorICAgICAgVGFibGUgInBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMikKK0luZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRy ZWUgKGkpCitSZWZlcmVuY2VkIGJ5OgorICAgIFRBQkxFICJ0X2ZrIiBDT05TVFJBSU5UICJ0 X2ZrX2lfZmtleSIgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdChpKSBOT1QgVkFMSUQK KworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRf ZmsgVkFMSURBVEUgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleTsKK0VSUk9SOiAgaW5zZXJ0IG9y IHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCAidF9ma19pX2ZrZXkiCitERVRBSUw6ICBLZXkgKGkpPSgyKSBpcyBub3QgcHJlc2VudCBp biB0YWJsZSAidCIuCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0 IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgZW5mb3JjZWQgZm9yZWlnbiBrZXkgY29uc3Ry YWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2Zr IFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9m a19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgRU5GT1JDRUQ7CitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRw XzBfMjsKKy0tIFNob3VsZCBiZSBOT1QgRU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBf MgorICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMiIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitQYXJ0aXRpb24gb2Y6IHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK0luZGV4ZXM6CisgICAgInRwXzBfMl9wa2V5 IiBQUklNQVJZIEtFWSwgYnRyZWUgKGkpCitSZWZlcmVuY2VkIGJ5OgorICAgIFRBQkxFICJ0 X2ZrIiBDT05TVFJBSU5UICJ0X2ZrX2lfZmtleSIgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5D RVMgdChpKSBOT1QgRU5GT1JDRUQKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9u IHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lf ZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBF TkZPUkNFRDsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitERVRBSUw6ICBL ZXkgKGkpPSgyKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidCIuCitEUk9QIFRBQkxFIHRf Zms7CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3Jl ZCBnZW5lcmF0ZWQgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGlu dCBnZW5lcmF0ZWQgYWx3YXlzIGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05T VFJBSU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0 IFZBTFVFUyAoMCksICgxKTsKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlk ZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0 aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9N IHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hF UkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKKy0tICJ0 YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lk IiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRB QkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor LS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdp dGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93 IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFi X2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCist LS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBmb3Ig Z2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRlciBvZiBjb2x1bW5zIGluIHBhcnRp dGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitDUkVBVEUgVEFCTEUgdCAoaSBp bnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSkgUEFS VElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChnIGludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NSRUFURSBUQUJM RSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCks IGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxV RVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04g dHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgdCBBREQg Q0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChpID4gMCk7CitJTlNF UlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJ VElPTlMgKHRwXzEsIHRwXzIpIElOVE8gdHBfMTI7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MTYpOworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVz IGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgw KTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVj ayBjb25zdHJhaW50ICJ0X2lfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlu cyAoMCwgdmlydHVhbCkuCistLSBTaG91bGQgYmUgMyByb3dzOiAoNSksICgxNSksICgxNik6 CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKyBpICAKKy0tLS0KKyAgNQorIDE1Cisg MTYKKygzIHJvd3MpCisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRh Ymxlb2lkICgxNSArIHRhYmxlb2lkKSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBG Uk9NIHQgV0hFUkUgaSA9IDUpOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cp CisKK0RST1AgVEFCTEUgdDsKK1JFU0VUIHNlYXJjaF9wYXRoOworLS0KK0RST1AgU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggZmJmZmM2 N2FlNi4uMmQzZjUwYTQzYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBA IC0xMjMsNyArMTIzLDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIg dGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0 YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBh Y2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBh cnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRl eGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBs YWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0 ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9u X3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdh dGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJl c3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKIAogIyBldmVudF90cmln Z2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3 aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fbWVyZ2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmNmYjYwODNlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCkBAIC0wLDAgKzEsNzk3IEBACistLQorLS0gUEFSVElU SU9OU19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElU SU9OUyAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMjsKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0t CistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJv ciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQg SU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy MjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9G IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNf ZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIy MDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgInNhbGVzX2Fw cjIwMjIiIGlzIG5vdCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIy KSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJn ZSBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJz YWxlc19qYW4yMDIyIgorLS0gREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVz X2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyKSBJTlRPIHNh bGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAi c2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEi CistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi IGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19k ZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQg c2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8g c2FsZXNfZGVjX2phbl9mZWIyMDIyOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1l ICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21h cl9hcHIyMDIyOworLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNh bGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CisKK0NSRUFU RSBWSUVXIGphbjIwMjJ2IGFzIFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNh bGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRFJPUCBWSUVXIGph bjIwMjJ2OworCistLSBOTyBFUlJPUjogdGVzdCBmb3IgY3VzdG9tIHBhcnRpdGlvbnMgb3Jk ZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBpbiB0aGUgc2VhcmNoX3BhdGgKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMiwgcHVibGljOworQUxURVIgVEFC TEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9O UyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIsCisgIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYl9tYXIyMDIyOworU0VU IHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworUFJF UEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMKK1NFTEVDVCAgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVyc2lzdGVuY2UsCisgICAg ICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5nLAorICAgICAgICBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKK0ZST00gICAg cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKK1dIRVJF ICAgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywKKyAgICAgICAgIGMub2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsK KworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9u ZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyks CisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwg ICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcn KSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1 LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VM RUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xh c3MpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBn ZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworLS0gY2hlY2sgc2NoZW1h LXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIy LCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19m ZWJfbWFyX2FwcjIwMjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCitTRUxF Q1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJf YXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsK KworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVS IEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3Ig dGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK0VYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2Fs ZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitT RUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2Fw cjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBNZXJnZSBz b21lIHBhcnRpdGlvbnMgaW50byBERUZBVUxUIHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBP TiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAx LTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMs ICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjIt MDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29u JywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisg ICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8n LCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcy MDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsK KworLS0gTWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVkZSBERUZBVUxUIHBhcnRpdGlvbikgaW50 byBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFtZQorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgTUVSR0UgUEFSVElUSU9OUworICAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAy MiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfb3RoZXJzKSBJTlRPIHNhbGVzX290 aGVyczsKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgT1JERVIgQlkgc2FsZXNwZXJz b25faWQ7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRF IGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRp dGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0 aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5U LCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBB TFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8 fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVz X2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNI QVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZS T00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIs IDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8g KDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBz YWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBN QVhWQUxVRSwgTUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVy c29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUwor ICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIs IDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIy LCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIzJywg MjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5hZ2Vy MicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlOworCitBTFRFUiBUQUJM RSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2Zl YjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjIn LCAyMDIyLCAyLCAxMCk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc19kYXRlOworRFJPUCBUQUJMRSBzYWxlc19kYXRlOworCistLQorLS0gVGVzdDogbWVy Z2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIw XzMwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgUEFSVElUSU9OIE9GIHNhbGVz cGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExB TkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0 cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRH X0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsK K0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5z ZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNw ZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBh ZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFURSBUUklH R0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElO U0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VU RSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScpOwor CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdn ZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBf MjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBN RVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBz YWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7CisKKy0tIDIgdHJpZ2dl cnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3Vs ZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVF UyAoMzAsICdGb3JkJyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsKK1NF TEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3Bs ZTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0tCist LSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElP TiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBDcmVh dGUgcGFydGl0aW9ucyB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29uX2lkIElOVCBQ UklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUyMF8zMChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQy IElOVCwgIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMzBfNDAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBEQVRF LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKKworSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUxMF8yMCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsKK0lO U0VSVCBJTlRPIHNhbGVzcGVvcGxlMjBfMzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYn KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMSwgbm93KCksICdQ b3BvdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1OIGQx OworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CisKK0FMVEVSIFRBQkxF IHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNI IFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVv cGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAor ICAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVvcGxl MzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKworc2VsZWN0ICogZnJvbSBzYWxlc3Bl b3BsZTsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKK3NlbGVjdCAqIGZyb20g c2FsZXNwZW9wbGUxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsKKworLS0KKy0t IFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsK KworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpOworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVz X3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwK KyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3Jk JywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAg JzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp LAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xp JywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTEx JyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0 YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIg TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8x MF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworCitTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBCWSB0 YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisK Ky0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNp ZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElE RU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUg VkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQ QVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25v cmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3Qu IFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7 CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVzX2xpc3QpIFBBUlRJ VElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZDIg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQ ZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2Fs ZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0 ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFs IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3Qi CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3Qs IHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9S OiAgInNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVk IHRhYmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJU SVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8g c2FsZXNfYWxsOworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBh IHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVz X2Vhc3QpIElOVE8gc2FsZXNfYWxsOworCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsMjsK K0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3QyOwor RFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRp b25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVO VElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZB UkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFS VElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xp c3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2Fs ZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9p ZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisg ICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAor ICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwK KyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyks CisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcp LAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcn KSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0w NicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMt MDknKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAz LTExJyksCisgICgnSGFsZGVyJywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAyMi0w My0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjIt MDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIy LTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAy Mi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIw MjItMDMtMDUnKTsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VY RUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKworQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0 LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKworLS0gc2hvdyBwYXJ0aXRpb25z IHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNf bGlzdH0nKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xp c3QgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworCistLSBVc2UgaW5kZXhz Y2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgbWVyZ2luZyBwYXJ0aXRpb25zCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICog RlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAq IEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitFWFBMQUlO IChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0 ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0 YXRlID0gJ1dhcnNhdyc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2Fs ZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworCitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQor LS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVB VEUgVEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZPUiBW QUxVRVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwg dCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEgUEFS VElUSU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFURSBU QUJMRSB0MyAoaSBpbnQsIHQgdGV4dCk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcDEi IGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBN RVJHRSBQQVJUSVRJT05TICh0MXAxLCB0MnBhKSBJTlRPIHQycDsKKy0tIEVSUk9SOiAgInQz IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInQyIgorQUxURVIg VEFCTEUgdDIgTUVSR0UgUEFSVElUSU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworCitEUk9Q IFRBQkxFIHQzOworRFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKworLS0KKy0t IENoZWNrIHRoZSBwYXJ0aXRpb24gaW5kZXggbmFtZSBpZiB0aGUgcGFydGl0aW9uIG5hbWUg aXMgdGhlIHNhbWUgYXMgb25lCistLSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuCistLQor Q1JFQVRFIFRBQkxFIHQgKGkgaW50LCBQUklNQVJZIEtFWShpKSkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKKworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK0NSRUFURSBJTkRFWCB0aWR4IE9O IHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzFfMiwgdHBfMF8x KSBJTlRPIHRwXzFfMjsKKworLS0gSW5kZXhuYW1lIHZhbHVlcyBzaG91bGQgYmUgJ3RwXzFf Ml9wa2V5JyBhbmQgJ3RwXzFfMl9pX2lkeCcuCistLSBOb3QtbnVsbCBjb25zdHJhaW50IG5h bWUgc2hvdWxkIGJlICd0cF8xXzJfaV9ub3RfbnVsbCcuCitcZCsgdHBfMV8yCisKK0RST1Ag VEFCTEUgdDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIHRlbXBvcmFy eSB0YWJsZS4KKy0tCitCRUdJTjsKK1NIT1cgc2VhcmNoX3BhdGg7CitDUkVBVEUgVEVNUCBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBPTiBDT01NSVQgRFJPUDsK K0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzJf MyBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKTsKK0NSRUFURSBU RU1QIFRBQkxFIHRwXzNfNCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDMpIFRP ICg0KTsKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFf MikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8yLCB0cF8yXzMpIElOVE8gcGdfdGVtcC50cF8wXzM7CisKKy0tIFBhcnRpdGlv biBzaG91bGQgYmUgdGVtcG9yYXJ5LgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0 fScpOworLS0gRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFz IHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMywgdHBfM180KSBJTlRPIHRwXzBfNDsKK1JPTExCQUNL OworCistLQorLS0gVHJ5IG1peGluZyBwZXJtYW5lbnQgYW5kIHRlbXBvcmFyeSBwYXJ0aXRp b25zLgorLS0KK0JFR0lOOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOworRVhFQ1VURSBnZXRf cGFydGl0aW9uX2luZm8oJ3t0fScpOworU0FWRVBPSU5UIHM7CisKK1NFVCBzZWFyY2hfcGF0 aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLSBDYW4n dCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRlbXBvcmFyeSBwYXJ0aXRp b24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gdHBfMF8yOworCitST0xMQkFDSyBUTyBTQVZFUE9JTlQgczsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSBw ZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBhIHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVt cC50cF8wXzI7CitST0xMQkFDSzsKKworQkVHSU47CitTRVQgc2VhcmNoX3BhdGggPSBwZ190 ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJM RSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisK K1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBG Uk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7 CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CisKKy0tIENh bid0IG1lcmdlIHRlbXBvcmFyeSBwYXJ0aXRpb25zIGludG8gYSBwZXJzaXN0ZW50IHBhcnRp dGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikg SU5UTyB0cF8wXzI7CitST0xMQkFDSzsKKworREVBTExPQ0FURSBnZXRfcGFydGl0aW9uX2lu Zm87CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRh Ymxlc3BhY2UKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBw dWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVgg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkp IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdI RVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFj ZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2lu ZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1l LCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRo ZSBuZXcgcGFydGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitD UkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25zX21lcmdlX2hlYXAgVFlQRSBUQUJMRSBI QU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKK0NS RUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQor RlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJF IGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAndHBfMF8yJzo6cmVnY2xhc3MpCitPUkRFUiBC WSBjLnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0 aW9uc19tZXJnZV9oZWFwOworCistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVz ZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdp bmcgcGFydGl0aW9ucyB0byBkbyB0aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEg VE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChp KTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRp b25fbWVyZ2VfYm9iOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisK K0FMVEVSIFRBQkxFIHRwXzBfMSBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdl X2JvYjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBU QUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRw XzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworRFJPUCBUQUJMRSB0Owor UkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdy ZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOwor RFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworCistLSBUZXN0OiB3ZSBjYW4ndCBtZXJn ZSBwYXJ0aXRpb25zIHdpdGggZGlmZmVyZW50IG93bmVycworQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRp b25zX21lcmdlX2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbnNf bWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bnNfbWVyZ2VfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xKGkgaW50KTsKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0NSRUFURSBUQUJMRSB0cF8xXzIoaSBpbnQpOwor UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJ VElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0 IEFUVEFDSCBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOwor CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2FsaWNlJzoKK1xkdCB0 cF8wXzEKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYm9iJzoKK1xk dCB0cF8xXzIKKworLS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRp ZmZlcmVudCBvd25lcnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9u c19tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25zX21lcmdlX2JvYjsKK0RST1AgUk9MRSBy ZWdyZXNzX3BhcnRpdGlvbnNfbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25zX21lcmdlX2JvYjsKKworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRh YmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JF QVRFIFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMg MiwgUkVNQUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBh cnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworCist LSBFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1 ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHAxKSBJTlRPIHRwMzsKKworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9y IG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0 eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBh cyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUg c2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQg YW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJ TlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUg YXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCisKK0NSRUFURSBUQUJMRSB0Ciso aSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJFU1NJT04g cGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFU RUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdF IChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKKworQ1JFQVRF IFRBQkxFIHRwXzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4g REVGQVVMVCAnZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFU RUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFU VEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ09N TUVOVCBPTiBDT0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5pJzsKKworQ1JFQVRFIFRBQkxF IHRwXzFfMgorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVM VCAnZGVmYXVsdF90cF8xXzInLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxX QVlTIGFzICgnMjAyMi0wMy0wMycpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQ QVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ09NTUVOVCBP TiBDT0xVTU4gdHBfMV8yLmkgSVMgJ3RwXzFfMi5pJzsKKworQ1JFQVRFIFNUQVRJU1RJQ1Mg dF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJ Q1MgdHBfMF8xX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzBfMTsKK0NS RUFURSBTVEFUSVNUSUNTIHRwXzFfMl9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJv bSB0cF8xXzI7CisKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENI RUNLIChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEg Q0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJB SU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKKworSU5TRVJU IElOVE8gdHBfMF8xKGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJ TlRPIHRwXzFfMihpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVBVEUgT1Ig UkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExB TkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3Ry aWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdf QVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3OworRU5E OworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdn ZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVS RSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF8wXzFfYmVmb3Jl X2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfMF8xJyk7CitD UkVBVEUgVFJJR0dFUiB0cF8xXzJfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUg SU5TRVJUIE9OIHRwXzFfMiBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJp Z2dlcl9mdW5jdGlvbigndHBfMV8yJyk7CisKK1xkKyB0cF8wXzEKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8xOworXGQrIHRw XzBfMQorCitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7CitEUk9Q IFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKworCistLSBU ZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWlnbiBrZXkgY29uc3Ry YWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2Zr IFZBTFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9m a19pX2ZrZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRF UiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBf MjsKKworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCist LSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBW QUxJREFURSBDT05TVFJBSU5UIHRfZmtfaV9ma2V5OworCitEUk9QIFRBQkxFIHRfZms7CitE Uk9QIFRBQkxFIHQ7CisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBlbmZv cmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJ TUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK K0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkg SU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworCitBTFRFUiBUQUJM RSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZIChpKSBSRUZF UkVOQ0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1QgRU5G T1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBk YXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 X2ZrX2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lf ZmtleSBFTkZPUkNFRDsKKworRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCisK Ky0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5z LgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMg YXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFi bGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOwor CistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cg d2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZv ciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFO RCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0g InRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVv aWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7 CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJv dyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5E IHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9Q IFRBQkxFIHQ7CisKKworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVu dCBvcmRlciBvZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0 aW9ucykuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGkgKyB0YWJsZW9pZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFU RSBUQUJMRSB0cF8xIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6 OmludCksIGkgaW50KTsKK0NSRUFURSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRU QUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxVRVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRF UiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMiBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGcgPiAwKTsKK0FMVEVSIFRBQkxF IHQgQUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoNSksICgxNSk7 CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0 cF8xMjsKKworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVSUk9SOiAgbmV3IHJv dyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0X2lf Y2hlY2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CistLSBTaG91bGQgYmUgMyByb3dz OiAoNSksICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKy0tIFNo b3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lk KSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJF IGkgPSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOwor CitEUk9QIFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hMjsKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------vY6xP84H0ZqrzNzrZVQC16EN Content-Type: text/plain; charset=UTF-8; name="v53-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v53-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3ZTVjOWQ1MzRjYzhlYjI3M2M3Y2QwNDMyNTQ4MTRmNTYyNzQ1NDNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTMgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcywgSmlhbiBIZQoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBB bGV4YW5kZXIgS29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJ bG1hcmkgTWFubnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4 YW5kZXIgS29yb3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jp c292ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRl ciBMYWtoaW4sIEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5 OiBEYW5pZWwgR3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3Jj L3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAxMDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MzggKysr KysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAg MzggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8 ICAgODggKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAg ICB8ICA3MTkgKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAg ICAgICAgICAgICB8ICAgMTggKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAg ICAgICAgICAgICAgIHwgICAxMCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o ICAgICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5oICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1 dGlscy5oICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL2lzb2xhdGlvbi9leHBlY3Rl ZC9wYXJ0aXRpb24tc3BsaXQub3V0ICAgIHwgIDE5MCArKwogc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9k ZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCB8ICAgIDUgKwogLi4uL3Rlc3RfZGRs X2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbCAgICAgIHwgICAgNCArCiAuLi4vdGVzdF9k ZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCB8IDE2NDIgKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAg ICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwg ICAgICB8IDExNDkgKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCAgICAgICAgICAgICAgfCAgICAyICsKIDIyIGZpbGVzIGNoYW5nZWQsIDQ0ODAgaW5z ZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9zcGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fc3BsaXQuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21s IGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGRkYjEzNzZhNmUuLmMyMjBhMWNiYzAg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKQEAgLTQ0NzEsNiArNDQ3MSwyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVu dAogICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50X3kyMDA2bTAzKSBJTlRPIG1l YXN1cmVtZW50X3kyMDA2cTE7CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KKwor ICAgIDxwYXJhPgorICAgICBTaW1pbGFybHkgdG8gbWVyZ2luZyBtdWx0aXBsZSB0YWJsZSBw YXJ0aXRpb25zLCB0aGVyZSBpcyBhbiBvcHRpb24gZm9yCisgICAgIHNwbGl0dGluZyBhIHNp bmdsZSBwYXJ0aXRpb24gaW50byBtdWx0aXBsZSB1c2luZyB0aGUKKyAgICAgPGxpbmsgbGlu a2VuZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj48Y29tbWFuZD5BTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMg ZmVhdHVyZSBjb3VsZCBjb21lIGluIGhhbmR5IHdoZW4gb25lIHBhcnRpdGlvbiBncm93cyB0 b28gYmlnCisgICAgIGFuZCBuZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlLiAgSXQn cyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIGhhc2gtcGFydGl0aW9uZWQgdGFibGVzIGFuZCBhY3F1aXJlcworICAg ICBhbiA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrLCB3aGljaCBj b3VsZCBpbXBhY3QgaGlnaC1sb2FkCisgICAgIHN5c3RlbXMgZHVlIHRvIHRoZSBsb2NrJ3Mg cmVzdHJpY3RpdmUgbmF0dXJlLiAgRm9yIGV4YW1wbGUsIHdlIGNhbiBzcGxpdAorICAgICB0 aGUgcXVhcnRlciBwYXJ0aXRpb24gYmFjayB0byBtb250aGx5IHBhcnRpdGlvbnM6Cis8cHJv Z3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBtZWFzdXJlbWVudCBTUExJVCBQQVJUSVRJT04g bWVhc3VyZW1lbnRfeTIwMDZxMSBJTlRPCisgICAoUEFSVElUSU9OIG1lYXN1cmVtZW50X3ky MDA2bTAxIEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDEtMDEnKSBUTyAoJzIwMDYtMDItMDEn KSwKKyAgICBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDIgRk9SIFZBTFVFUyBGUk9N ICgnMjAwNi0wMi0wMScpIFRPICgnMjAwNi0wMy0wMScpLAorICAgIFBBUlRJVElPTiBtZWFz dXJlbWVudF95MjAwNm0wMyBGT1IgVkFMVUVTIEZST00gKCcyMDA2LTAzLTAxJykgVE8gKCcy MDA2LTA0LTAxJykpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKICAgIDwv c2VjdDM+CiAKICAgIDxzZWN0MyBpZD0iZGRsLXBhcnRpdGlvbmluZy1kZWNsYXJhdGl2ZS1s aW1pdGF0aW9ucyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxl LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggMjlhMGZm NWNkYi4uMGRjZGFhMDVjMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90 YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAt MzksNiArMzksMTAgQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3Jl cGxhY2VhYmxlPiBbIENPTkNVUlJFTlRMWSB8IEZJTkFMSVpFIF0KIEFMVEVSIFRBQkxFIFsg SUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgogICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0p IElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9y ZXBsYWNlYWJsZT4KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAgIFNQTElUIFBBUlRJVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPiBJTlRPCisgICAgICAgIChQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3Jl cGxhY2VhYmxlPiB8IERFRkFVTFQgfSwKKyAgICAgICAgIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4geyBG T1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91 bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0pCiAKIDxwaHJhc2U+ d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFi bGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTE2MSw2ICsxMTY1LDc4IEBAIFdJVEgg KCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVy YWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0 aXRpb24iPgorICAgIDx0ZXJtPjxsaXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRP IChQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fSwgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxU IH0gWywgLi4uXSk8L2xpdGVyYWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBzcGxpdHMgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRo ZSB0YXJnZXQgdGFibGUgaW50byBhIG5ldworICAgICAgcGFydGl0aW9ucy4gSGFzaC1wYXJ0 aXRpb25lZCB0YXJnZXQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4gQm91bmRzIG9mIG5ldwor ICAgICAgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0 aW5nIHBhcnRpdGlvbnMKKyAgICAgIChleGNlcHQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgSWYgdGhlIHNw bGl0IHBhcnRpdGlvbiBpcyBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlv biwgb25lIG9mCisgICAgICB0aGUgbmV3IHBhcnRpdGlvbnMgbXVzdCBiZSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPi4KKyAgICAgIEluIGNhc2Ugb25lIG9mIHRoZSBuZXcgcGFydGl0 aW9ucyBpcyA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiwKKyAgICAgIG5ldyBwYXJ0aXRp b25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3Jl cGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbgorICAgICAgaGF2ZSBzcGFjZXMg YmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcy4gIElmIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBk b2VzIG5vdAorICAgICAgaGF2ZSBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRp dGlvbiwgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24g Y2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucy4KKyAgICAgPC9w YXJhPgorICAgICA8cGFyYT4KKyAgICAgIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgZG8gbm90 IGNvbnRhaW4gYSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9u LCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9ucworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gc2hvdWxkCisgICAgICBi ZSBlcXVhbCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICBPbmUg b2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbiBo YXZlCisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAg ICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgYSA8bGl0ZXJhbD5E RUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uOiB3ZSBzcGxpdCBpdCwgYnV0IGFm dGVyIHNwbGl0dGluZyB3ZSBoYXZlIGEgcGFydGl0aW9uIHdpdGggdGhlCisgICAgICBzYW1l IG5hbWUpLiAgT25seSBzaW1wbGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24gY2FuIGJl IHNwbGl0LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRpdGlv bnMgd2lsbCBoYXZlIHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgor ICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255 bT5BQ0w8L2Fjcm9ueW0+IG9uIG5ldworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJh PgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3Jl YXRlZCBsYXRlciwgYWZ0ZXIgbW92aW5nIHRoZSBkYXRhCisgICAgICBpbnRvIHRoZSBuZXcg cGFydGl0aW9ucy4KKyAgICAgIEV4dGVuZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBm cm9tIHRoZSBwYXJlbnQgdGFibGUsIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29t bWFuZD5DUkVBVEUgVEFCTEUgUEFSVElUSU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIE5ldyBw YXJ0aXRpb25zIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBw ZXJzaXN0ZW5jZQorICAgICAgdHlwZSwgYW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0 YWJsZS4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFdoZW4gcGFydGl0aW9u IGlzIHNwbGl0LCBhbnkgaW5kaXZpZHVhbCBvYmplY3RzIGJlbG9uZ2luZyB0byB0aGlzCisg ICAgICBwYXJ0aXRpb24sIHN1Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcyB3aWxs IGJlIGRyb3BwZWQuIFRoaXMgY2N1cnMKKyAgICAgIGJlY2F1c2UgPGNvbW1hbmQ+QUxURVIg VEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSBpdHNlbGYKKyAgICAgIGFzIHRoZSB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2Jq ZWN0cy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIHNwbGl0IHBhcnRp dGlvbiBoYXMgc29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiBpdCwgdGhlIGNvbW1hbmQgY2Fu CisgICAgICBub3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaXMgbm90 IHVzZWQsIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQpLgorICAgICA8L3BhcmE+CisgICAg IDxub3RlPgorICAgICAgPHBhcmE+CisgICAgICAgU3BsaXQgcGFydGl0aW9uIGFjcXVpcmVz IGEgPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgorICAgICAg IHRoZSBwYXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0ZXJhbD5BQ0NFU1Mg RVhDTFVTSVZFPC9saXRlcmFsPgorICAgICAgIGxvY2sgb24gdGhlIHRhYmxlIGJlaW5nIHNw bGl0LgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgIDxub3RlPgorICAgICAg PHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9j b21tYW5kPiBjcmVhdGVzIG5ldyBwYXJ0aXRpb25zIGFuZAorICAgICAgIG1vdmVzIGRhdGEg ZnJvbSBzcGxpdCBwYXJ0aXRpb24gaW50byB0aGVtLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcg dGltZS4KKyAgICAgICBTbyBpdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIGNvbW1hbmQg Zm9yIHNwbGl0dGluZyBhIHNtYWxsIGZyYWN0aW9uIG9mCisgICAgICAgcm93cyBvdXQgb2Yg YSB2ZXJ5IGJpZyBwYXJ0aXRpb24uCisgICAgICA8L3BhcmE+CisgICAgIDwvbm90ZT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkg aWQ9InNxbC1hbHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPgogICAgIDx0ZXJtPjxsaXRl cmFsPk1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJs ZT48L2xpdGVyYWw+PC90ZXJtPgogCkBAIC0xMjYyLDcgKzEzMzgsOCBAQCBXSVRIICggTU9E VUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgQWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBU QUJMRTwvY29tbWFuZD4gdGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQg PGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJh bD4sCiAgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+ REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCi0gICBhbmQgPGxpdGVyYWw+TUVSR0UgUEFS VElUSU9OUzwvbGl0ZXJhbD4gY2FuIGJlIGNvbWJpbmVkIGludG8KKyAgIDxsaXRlcmFsPlNQ TElUIFBBUlRJVElPTjwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05T PC9saXRlcmFsPgorICAgY2FuIGJlIGNvbWJpbmVkIGludG8KICAgIGEgbGlzdCBvZiBtdWx0 aXBsZSBhbHRlcmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUs IGl0CiAgICBpcyBwb3NzaWJsZSB0byBhZGQgc2V2ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRl ciB0aGUgdHlwZSBvZiBzZXZlcmFsCiAgICBjb2x1bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQu ICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2l0aCBsYXJnZQpAQCAtMTUwNiw3ICsx NTgzLDcgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIDxsaXN0aXRlbT4K ICAgICAgICA8cGFyYT4KICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFj aCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKLSAg ICAgICAgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAg ICBvciB0aGUgbmFtZSBvZiBzcGxpdCBwYXJ0aXRpb24sIG9yIHRoZSBuYW1lIG9mIHRoZSBu ZXcgbWVyZ2VkIHBhcnRpdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVt PgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE1MTYsNyArMTU5Myw4IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8 bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFi bGVzIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAgICBUaGUg bmFtZXMgb2YgdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0aGUgbmV3IHBhcnRpdGlv biBvciBzcGxpdCBpbnRvCisgICAgICAgIG5ldyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFy YT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTk0OSw2 ICsyMDI3LDI0IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBBUlRJ VElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgog CisgIDxwYXJhPgorICAgVG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSByYW5n ZS1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjMgSU5UTwor ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDIt MDEnKSBUTyAoJzIwMjMtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMyBG T1IgVkFMVUVTIEZST00gKCcyMDIzLTAzLTAxJykgVE8gKCcyMDIzLTA0LTAxJyksCisgICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wNC0wMScp IFRPICgnMjAyMy0wNS0wMScpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxw YXJhPgorICAgVG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSBsaXN0LXBhcnRp dGlvbmVkIHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAor ICAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVs aGknLCAnVmxhZGl2b3N0b2snKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CisKICAgPHBhcmE+CiAgICBUbyBtZXJnZSBzZXZlcmFsIHBhcnRpdGlv bnMgaW50byBvbmUgcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQgdGFibGU6CiA8cHJvZ3JhbWxp c3Rpbmc+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDVhM2M1M2QzZTUuLmFk Y2I3ZjZjNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03NDIsNiArNzQy LDkgQEAgc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNv bnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKIAogc3RhdGljIHZvaWQgQVRFeGVjTWVyZ2VQYXJ0 aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCQkJCQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNv bnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkgUmVsYXRpb24g cmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKKwkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29u dGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxhdGlvbgpA QCAtNDgzOSw2ICs0ODQyLDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21k cykKIAkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFr OwogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFj Y2Vzc0V4Y2x1c2l2ZUxvY2s7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CQkJLyogb29w cyAqLwogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTog JWQiLAogCQkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTUyNzksNiArNTI4NiwxMSBA QCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21k ICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlw YXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRp b246CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFS VElUSU9ORURfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRl ZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJ CQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxl IHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTU2ODMsNiArNTY5 NSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFi LAogCQkJQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRp b25DbWQgKikgY21kLT5kZWYsCiAJCQkJCQkJCSAgY29udGV4dCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQo d3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1 cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQo cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJ CQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21k ICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7CisJCQlicmVhazsKIAkJZGVmYXVs dDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0 YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC02NzI1LDYg KzY3NDUsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBj bWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05T IjsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCXJldHVybiAiU1BMSVQgUEFSVElU SU9OIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1O IC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjI5MzYs MyArMjI5NTgsNDE5IEBAIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkvKiBSZXN0b3JlIHVzZXJp ZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNh dmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKIH0KKworCisvKgorICogU3RydWN0IHdp dGggY29udGV4dCBvZiBuZXcgcGFydGl0aW9uIGZvciBpbnNlcnRpbmcgcm93cyBmcm9tIHNw bGl0IHBhcnRpdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRl eHQKK3sKKwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBj aGVja2luZyBzbG90IGZvciBwYXJ0aXRpb24KKwkJCQkJCQkJICogKE5VTEwgZm9yIERFRkFV TFQgcGFydGl0aW9uKSAqLworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBv ZiBidWxrIGluc2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3Rz bG90OwkvKiBzbG90IGZvciBpbnNlcnRpbmcgcm93IGludG8gcGFydGl0aW9uICovCisJQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiOwkJLyogc3RydWN0b3JlIHdpdGggZ2VuZXJhdGVkIGNvbHVt biBleHByZXNzaW9ucworCQkJCQkJCQkgKiBhbmQgY2hlY2sgY29uc3RyYWludCBleHByZXNz c2lvbnMuICovCisJUmVsYXRpb24JcGFydFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRp b24gKi8KK30gU3BsaXRQYXJ0aXRpb25Db250ZXh0OworCisvKgorICogY3JlYXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29udGV4dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxs IGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRpdGlvbkNvbnRleHQgKgorY3JlYXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBhcnRSZWwpCit7CisJU3BsaXRQYXJ0aXRpb25D b250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBwYWxsb2Mw KHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRleHQpKTsKKwlwYy0+cGFydFJlbCA9IHBhcnRS ZWw7CisKKwkvKgorCSAqIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1 cGxlX2luc2VydC4gVGhlIEZTTSBpcyBlbXB0eSwgc28KKwkgKiBkb24ndCBib3RoZXIgdXNp bmcgaXQuCisJICovCisJcGMtPmJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKwor CS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBuZXcgcGFydGl0aW9uLiAqLworCXBjLT5kc3Rz bG90ID0gdGFibGVfc2xvdF9jcmVhdGUocGMtPnBhcnRSZWwsIE5VTEwpOworCisJcmV0dXJu IHBjOworfQorCisvKgorICogZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBkZWxldGUg Y29udGV4dCBmb3IgcGFydGl0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitkZWxldGVTcGxpdFBh cnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYywgTGlzdCAqKndxdWV1 ZSwgaW50IHRpX29wdGlvbnMpCit7CisJTGlzdENlbGwgICAqbHRhYjsKKworCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3QocGMtPmRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3Rh dGUocGMtPmJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0 UmVsLCB0aV9vcHRpb25zKTsKKworCS8qCisJICogV2UgZG9uJ3QgbmVlZCBwcm9jZXNzIHRo aXMgcGMtPnBhcnRSZWwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZQorCSAqIG9m IGl0LgorCSAqLworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJCUFsdGVyZWRUYWJs ZUluZm8gKnRhYiA9IChBbHRlcmVkVGFibGVJbmZvICopIGxmaXJzdChsdGFiKTsKKworCQlp ZiAodGFiLT5yZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKSkKKwkJCSp3 cXVldWUgPSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIpOworCX0KKworCXBmcmVl KHBjKTsKK30KKworLyoKKyAqIFNwbGl0UGFydGl0aW9uTW92ZVJvd3M6IHNjYW4gc3BsaXQg cGFydGl0aW9uIChzcGxpdFJlbCkgb2YgcGFydGl0aW9uZWQgdGFibGUKKyAqIChyZWwpIGFu ZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9ucy4KKyAqCisgKiBOZXcgcGFydGl0aW9u cyBkZXNjcmlwdGlvbjoKKyAqIHBhcnRsaXN0OiBsaXN0IG9mIHBvaW50ZXJzIHRvIFNpbmds ZVBhcnRpdGlvblNwZWMgc3RydWN0dXJlcy4gIEl0IGNvbnRhaW5zCisgKiB0aGUgcGFydGl0 aW9uIHNwZWNpZmljYXRpb24gZGV0YWlscyBmb3IgYWxsIG5ldyBwYXJ0aXRpb25zLgorICog bmV3UGFydFJlbHM6IGxpc3Qgb2YgUmVsYXRpb25zLCBuZXcgcGFydGl0aW9ucyBjcmVhdGVk IGluCisgKiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK1NwbGl0 UGFydGl0aW9uTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBSZWxhdGlv biBzcGxpdFJlbCwKKwkJCQkJICAgTGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1BhcnRSZWxz KQoreworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4g Ki8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOworCUNvbW1h bmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy LAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4cHJD b250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJc25h cHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRleHRz ID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0 aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCisJbXlj aWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJZXN0YXRlID0gQ3JlYXRlRXhl Y3V0b3JTdGF0ZSgpOworCisJZm9yYm90aChsaXN0cHRyLCBwYXJ0bGlzdCwgbGlzdHB0cjIs IG5ld1BhcnRSZWxzKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmds ZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCXBjID0gY3JlYXRlU3Bs aXRQYXJ0aXRpb25Db250ZXh0KChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKSk7CisKKwkJ LyogRmluZCB0aGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgbmV3IHBhcnRpdGlvbiB0YWJsZTog bmV3UGFydFJlbC4gKi8KKwkJcGMtPnRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIHBj LT5wYXJ0UmVsKTsKKworCQlidWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXMocGMtPnRh YiwgcGMtPnBhcnRSZWwsIGVzdGF0ZSk7CisKKwkJaWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1 bHQpCisJCXsKKwkJCS8qCisJCQkgKiBXZSBzaG91bGQgbm90IGNyZWF0ZSBzdHJ1Y3R1cmUg Zm9yIGNoZWNrIHBhcnRpdGlvbiBjb25zdHJhaW50CisJCQkgKiBmb3IgbmV3IERFRkFVTFQg cGFydGl0aW9uLgorCQkJICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQl9CisJCWVs c2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8qIEJ1aWxkIGV4 cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxzLiAq LworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWwsIHNw cy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxfY29u c3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25zdHJh aW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4g Ki8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQo cGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0aGUg Y29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBzcGxp dFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25fdmFy YXR0bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwgcmVs KTsKKworCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhw ciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQocGMt PnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRpb24g Y29udGV4dCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFydENv bnRleHRzLCBwYyk7CisJfQorCisJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0 KGVzdGF0ZSk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJc3Jj c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHNwbGl0UmVsLCBOVUxMKTsKKworCS8qCisJICog TWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9u IHRvIG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24sIGJ1dCBv dGhlciBuZXcgcGFydGl0aW9ucyBjYW4gdXNlIHRoZSBzYW1lCisJICogbWFwKS4KKwkgKi8K KwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0 Q29udGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0 aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihw Yy0+cGFydFJlbCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBz aG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0g dGFibGVfYmVnaW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgor CSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZv ciBlYWNoIHR1cGxlCisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5Lgor CSAqLworCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9y eUNvbnRleHQoZXN0YXRlKSk7CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChz Y2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJeworCQlib29sCQlmb3Vu ZCA9IGZhbHNlOworCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNyY3Ns b3Q7CisKKwkJLyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgY3VycmVudCBzbG90IHNyY3Nsb3Qu ICovCisJCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQorCQl7CisJCQlwYyA9IChT cGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCQkvKiBza2lw IERFRkFVTFQgcGFydGl0aW9uICovCisJCQlpZiAocGMtPnBhcnRxdWFsc3RhdGUgJiYgRXhl Y0NoZWNrKHBjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7CisJCQkJZm91bmQg PSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICghZm91bmQpCisJCXsKKwkJ CS8qIFVzZSBERUZBVUxUIHBhcnRpdGlvbiBpZiBpdCBleGlzdHMuICovCisJCQlpZiAoZGVm YXVsdFBhcnRDdHgpCisJCQkJcGMgPSBkZWZhdWx0UGFydEN0eDsKKwkJCWVsc2UKKwkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiks CisJCQkJCQllcnJtc2coImNhbiBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRp dGlvbiByb3ciKSwKKwkJCQkJCWVycnRhYmxlKHNwbGl0UmVsKSk7CisJCX0KKworCQlpZiAo dHVwbGVfbWFwKQorCQl7CisJCQkvKiBOZWVkIHRvIHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1 dGVzLiAqLworCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9t YXAtPmF0dHJNYXAsIHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsK KwkJCS8qIEV4dHJhY3QgZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJCXNsb3RfZ2V0YWxs YXR0cnMoc3Jjc2xvdCk7CisKKwkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8K KwkJCWluc2VydHNsb3QgPSBwYy0+ZHN0c2xvdDsKKworCQkJRXhlY0NsZWFyVHVwbGUoaW5z ZXJ0c2xvdCk7CisKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90 LT50dHNfdmFsdWVzLAorCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZh bGlkKTsKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNf aXNudWxsLAorCQkJCSAgIHNpemVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOwor CisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCX0KKworCQkvKgor CQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVy ZW5jZSB0aGUgdGFibGVvaWQKKwkJICogY29sdW1uLCBzbyBmaWxsIHR0c190YWJsZU9pZCB3 aXRoIHRoZSBkZXNpcmVkIHZhbHVlLiAoV2UgbXVzdCBkbworCQkgKiB0aGlzIGVhY2ggdGlt ZSwgYmVjYXVzZSBpdCBnZXRzIG92ZXJ3cml0dGVuIHdpdGggbmV3cmVsJ3MgT0lECisJCSAq IGR1cmluZyBzdG9yaW5nLikKKwkJICovCisJCWluc2VydHNsb3QtPnR0c190YWJsZU9pZCA9 IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwpOworCisJCS8qCisJCSAqIE5vdywgZXZh bHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9zZSBpbnB1dHMgY29tZSBmcm9t IHRoZQorCQkgKiBuZXcgdHVwbGUuICBXZSBhc3N1bWUgdGhlc2UgY29sdW1ucyB3b24ndCBy ZWZlcmVuY2UgZWFjaCBvdGhlciwgc28KKwkJICogdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5n IGRlcGVuZGVuY3kuCisJCSAqLworCQlldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5k Q2hlY2tDb25zdHJhaW50cyhwYy0+dGFiLCBwYy0+cGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJ aW5zZXJ0c2xvdCwgZWNvbnRleHQpOworCisJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8g dGhlIG5ldyByZWxhdGlvbi4gKi8KKwkJdGFibGVfdHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVs LCBpbnNlcnRzbG90LCBteWNpZCwKKwkJCQkJCSAgIHRpX29wdGlvbnMsIHBjLT5iaXN0YXRl KTsKKworCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwl9CisKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkQ3h0KTsKKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJVW5yZWdp c3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCWlmICh0dXBsZV9tYXApCisJCWZyZWVfY29u dmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3Qoc3Jjc2xvdCk7CisKKwlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJZm9yZWFj aF9wdHIoU3BsaXRQYXJ0aXRpb25Db250ZXh0LCBzcGMsIHBhcnRDb250ZXh0cykKKwkJZGVs ZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KHNwYywgd3F1ZXVlLCB0aV9vcHRpb25zKTsKK30K KworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlv bi1uYW1lPiBJTlRPIDxwYXJ0aXRpb24tbGlzdD4KKyAqLworc3RhdGljIHZvaWQKK0FURXhl Y1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24gcmVsLAorCQkJCQkgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglzcGxpdFJlbDsKKwlPaWQJCQlz cGxpdFJlbE9pZDsKKwljaGFyCQlyZWxuYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0Q2VsbCAg ICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxz ZTsKKwljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0CSAgICpuZXdQYXJ0 UmVscyA9IE5JTDsKKwlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwlPaWQJCQlkZWZhdWx0UGFy dE9pZDsKKwlPaWQJCQlzYXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0Owor CWludAkJCXNhdmVfbmVzdGxldmVsOworCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVs dF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVl KSk7CisKKwkvKgorCSAqIFBhcnRpdGlvbiBpcyBhbHJlYWR5IGxvY2tlZCBpbiB0aGUgdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKwkgKiBmdW5jdGlvbi4KKwkgKi8KKwlzcGxp dFJlbCA9IHRhYmxlX29wZW5ydihjbWQtPm5hbWUsIE5vTG9jayk7CisKKwlzcGxpdFJlbE9p ZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3JpcHRp b25zIG9mIG5ldyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRp b25TcGVjLCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlPaWQJCQlleGlzdGluZ1JlbGlk OworCisJCXN0cmxjcHkocmVsbmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFUQUxF Tik7CisKKwkJLyogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9u IG5hbWUuICovCisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMt Pm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMgd291 bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3Rz LiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVy cm9yIG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxpdFJlbE9p ZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRy dWU7CisJCWVsc2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJ ZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSk7CisJ fQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0aXRpb25U YWJsZShyZWwsIHNwbGl0UmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIFBlcmZv cm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUg dG8gZHJvcAorCSAqIHNwbGl0IHBhcnRpdGlvbiBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28g bGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cyBpbnRvCisJICogdGhlIG5ldyBwYXJ0aXRpb25z IHZpYSBTcGxpdFBhcnRpdGlvbk1vdmVSb3dzLCBhbGwgb2xkIHBhcnRpdGlvbnMgbmVlZAor CSAqIGJlIGRyb3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2aW9yIGlzIERS T1BfUkVTVFJJQ1QgYW5kIHRoZQorCSAqIG1lcmdlIHByb2Nlc3MgKFNwbGl0UGFydGl0aW9u TW92ZVJvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywKKwkgKiBwZXJmb3JtaW5nIGFuIGVh cmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25zIGlz CisJICogcHJlZmVyYWJsZS4KKwkgKi8KKwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9p ZDsKKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2Jq ZWN0U3ViSWQgPSAwOworCXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVT VFJJQ1QsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCisJLyoKKwkgKiBJZiBuZXcg cGFydGl0aW9uIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiB0aGVuIHdl IHNob3VsZAorCSAqIHJlbmFtZSBzcGxpdCBwYXJ0aXRpb24gZm9yIHJldXNpbmcgbmFtZS4K KwkgKi8KKwlpZiAoaXNTYW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0 aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQor CQkgKiB2aXNpYmxlIGZvciByZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5j cmVtZW50KCk7CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVs TmFtZSwgInNwbGl0LSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9j UGlkKTsKKwkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFt ZSwgdHJ1ZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFu ZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNp YmxlIGFmdGVyIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKwl9CisKKwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFydGl0 aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRp b25TcGVjLCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlSZWxhdGlvbgluZXdQYXJ0UmVs OworCisJCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZSh3cXVldWUsIHNwcy0+ bmFtZSwgcmVsLAorCQkJCQkJCQkJCSAgc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIpOwor CQluZXdQYXJ0UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0K KworCS8qCisJICogU3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhh dCBhbnkgaW5kZXggZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0IHVzZXIuICBBbHNv IGxvY2sgZG93biBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5kCisJICogYXJy YW5nZSB0byBtYWtlIEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMgY29tbWFu ZC4KKwkgKgorCSAqIE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5lIG5hbWVzcGFjZSBp biBjcmVhdGVQYXJ0aXRpb25UYWJsZSBjYWxsLgorCSAqLworCUdldFVzZXJJZEFuZFNlY0Nv bnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5k U2VjQ29udGV4dChzcGxpdFJlbC0+cmRfcmVsLT5yZWxvd25lciwKKwkJCQkJCSAgIHNhdmVf c2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CisJc2F2ZV9u ZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNlYXJjaFBhdGgoKTsK KworCS8qIENvcHkgZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9u cy4gKi8KKwlTcGxpdFBhcnRpdGlvbk1vdmVSb3dzKHdxdWV1ZSwgcmVsLCBzcGxpdFJlbCwg Y21kLT5wYXJ0bGlzdCwgbmV3UGFydFJlbHMpOworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwg Y29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKHNwbGl0UmVsLCBOb0xvY2spOworCisJLyogQXR0 YWNoIG5ldyBwYXJ0aXRpb25zIHRvIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWZvcmJvdGgo bGlzdHB0ciwgY21kLT5wYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxzKQorCXsKKwkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZp cnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsID0gKFJlbGF0aW9uKSBsZmly c3QobGlzdHB0cjIpOworCisJCS8qCisJCSAqIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlv biBmb3IgZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QKKwkJICogbmVlZGVkLgorCQkg Ki8KKwkJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBzcHMt PmJvdW5kKTsKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRhYmxl X2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisJfQorCisJLyogRHJvcCBzcGxpdCBwYXJ0 aXRpb24uICovCisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2Jq ZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7CisJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsK KwkvKiBQcm9iYWJseSBEUk9QX0NBU0NBREUgaXMgbm90IG5lZWRlZC4gKi8KKwlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisKKwkvKiBSb2xsIGJhY2sg YW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVP WGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3RvcmUgdXNlcmlk IGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2 ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNmUz Yjg5NWY3Mi4uODFmNmU1ZTM2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTcsNiArMjU3LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlQYXJ0aXRpb25FbGVtICpwYXJ0ZWxl bTsKIAlQYXJ0aXRpb25TcGVjICpwYXJ0c3BlYzsKIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKnBh cnRib3VuZHNwZWM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc2luZ2xlcGFydHNwZWM7CiAJ Um9sZVNwZWMgICAqcm9sZXNwZWM7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJsaWNhdGlv bm9iamVjdHNwZWM7CiAJc3RydWN0IFNlbGVjdExpbWl0ICpzZWxlY3RsaW1pdDsKQEAgLTY0 MCw2ICs2NDEsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHBhcnRl bGVtPglwYXJ0X2VsZW0KICV0eXBlIDxsaXN0PgkJcGFydF9wYXJhbXMKICV0eXBlIDxwYXJ0 Ym91bmRzcGVjPiBQYXJ0aXRpb25Cb3VuZFNwZWMKKyV0eXBlIDxzaW5nbGVwYXJ0c3BlYz4J U2luZ2xlUGFydGl0aW9uU3BlYworJXR5cGUgPGxpc3Q+CQlwYXJ0aXRpb25zX2xpc3QKICV0 eXBlIDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRi b3VuZF9lbGVtCiAKQEAgLTc3MCw3ICs3NzMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogCVNBVkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBT RUNPTkRfUCBTRUNVUklUWSBTRUxFQ1QKIAlTRVFVRU5DRSBTRVFVRU5DRVMKIAlTRVJJQUxJ WkFCTEUgU0VSVkVSIFNFU1NJT04gU0VTU0lPTl9VU0VSIFNFVCBTRVRTIFNFVE9GIFNIQVJF IFNIT1cKLQlTSU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU09V UkNFIFNRTF9QIFNUQUJMRSBTVEFOREFMT05FX1AKKwlTSU1JTEFSIFNJTVBMRSBTS0lQIFNN QUxMSU5UIFNOQVBTSE9UIFNPTUUgU1BMSVQgU09VUkNFIFNRTF9QIFNUQUJMRSBTVEFOREFM T05FX1AKIAlTVEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFH RSBTVE9SRUQgU1RSSUNUX1AgU1RSSU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJT VFJJTkcgU1VQUE9SVCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIApA QCAtMjM1Nyw2ICsyMzYwLDIzIEBAIGFsdGVyX3RhYmxlX2NtZHM6CiAJCQl8IGFsdGVyX3Rh YmxlX2NtZHMgJywnIGFsdGVyX3RhYmxlX2NtZAl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9 CiAJCTsKIAorcGFydGl0aW9uc19saXN0OgorCQkJU2luZ2xlUGFydGl0aW9uU3BlYwkJCQkJ CQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcGFydGl0aW9uc19saXN0ICcsJyBT aW5nbGVQYXJ0aXRpb25TcGVjCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitT aW5nbGVQYXJ0aXRpb25TcGVjOgorCQkJUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRp dGlvbkJvdW5kU3BlYworCQkJCXsKKwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqbiA9IG1h a2VOb2RlKFNpbmdsZVBhcnRpdGlvblNwZWMpOworCisJCQkJCW4tPm5hbWUgPSAkMjsKKwkJ CQkJbi0+Ym91bmQgPSAkMzsKKworCQkJCQkkJCA9IG47CisJCQkJfQorCQk7CisKIHBhcnRp dGlvbl9jbWQ6CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElPTiA8 dGFibGVfbmFtZT4gRk9SIFZBTFVFUyAqLwogCQkJQVRUQUNIIFBBUlRJVElPTiBxdWFsaWZp ZWRfbmFtZSBQYXJ0aXRpb25Cb3VuZFNwZWMKQEAgLTI0MDEsNiArMjQyMSwyMCBAQCBwYXJ0 aXRpb25fY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJCQkJCSQkID0gKE5v ZGUgKikgbjsKIAkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFSVElU SU9OIDxwYXJ0aXRpb25fbmFtZT4gSU5UTyAoKSAqLworCQkJfCBTUExJVCBQQVJUSVRJT04g cXVhbGlmaWVkX25hbWUgSU5UTyAnKCcgcGFydGl0aW9uc19saXN0ICcpJworCQkJCXsKKwkJ CQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQ YXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+ c3VidHlwZSA9IEFUX1NwbGl0UGFydGl0aW9uOworCQkJCQljbWQtPm5hbWUgPSAkMzsKKwkJ CQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAkNjsKKwkJCQkJ Y21kLT5jb25jdXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1l PiBNRVJHRSBQQVJUSVRJT05TICgpIElOVE8gPHBhcnRpdGlvbl9uYW1lPiAqLwogCQkJfCBN RVJHRSBQQVJUSVRJT05TICcoJyBxdWFsaWZpZWRfbmFtZV9saXN0ICcpJyBJTlRPIHF1YWxp ZmllZF9uYW1lCiAJCQkJewpAQCAtMTgwMTYsNiArMTgwNTAsNyBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IFNLSVAKIAkJCXwgU05BUFNIT1QKIAkJCXwgU09VUkNFCisJCQl8IFNQ TElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKQEAgLTE4 NjU2LDYgKzE4NjkxLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBTTkFQU0hPVAog CQkJfCBTT01FCiAJCQl8IFNPVVJDRQorCQkJfCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBT VEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwppbmRleCAzMzNjNTFkOTMzLi44NzQ2OWY2OWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV91dGlsY21kLmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1D b25zdHJhaW50QXR0cnMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSBMaXN0 ICpjb25zdHJhaW50TGlzdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5UeXBlKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKTsKIHN0YXRpYyB2b2lk IHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10 X3NjaGVtYV9uYW1lKTsKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCk7CitzdGF0aWMgdm9pZCB0 cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9u Qm91bmRTcGVjICpib3VuZCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtUGFydGl0aW9uUmFu Z2VCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCwKIAkJCQkJCQkJCQkg ICBSZWxhdGlvbiBwYXJlbnQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVJbmZpbml0ZUJvdW5k cyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0KTsKQEAgLTM1MTYsOSArMzUxNiwx MSBAQCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsCiAvKgogICogY2hlY2tQYXJ0aXRpb24KICAqIENoZWNrIHdoZXRoZXIgcGFy dFJlbE9pZCBpcyBhIGxlYWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgKHJlbCku CisgKiBpc19tZXJnZTogdHJ1ZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyAiQUxURVIg VEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMiOworICogZmFsc2UgaW5kaWNhdGVzIHRoZSBv cGVyYXRpb24gaXMgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIi4KICAqLwog c3RhdGljIHZvaWQKLWNoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxP aWQpCitjaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkLCBib29s IGlzX21lcmdlKQogewogCVJlbGF0aW9uCXBhcnRSZWw7CiAKQEAgLTM1MjgsMjUgKzM1MzAs NjkgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAogCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocGFydFJlbCkpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWIt cGFydGl0aW9ucyIpKTsKKwkJCQlpc19tZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFC TEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24n dCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4u LiBTUExJVCBQQVJUSVRJT05TIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2 ZSBzdWItcGFydGl0aW9ucyIpKTsKIAogCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3Bh cnRpdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAogCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBv ZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCi0JCQkJ ZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVy Z2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzX21l cmdlCisJCQkJPyBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBj YW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQor CQkJCTogZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgY2FuIG9u bHkgc3BsaXQgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJ aWYgKGdldF9wYXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlv bkdldFJlbGlkKHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9UQUJMRSksCiAJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCSAgIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwK LQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25s eSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJCQkJ aXNfbWVyZ2UKKwkJCQk/IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJ T05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9u cyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyBj YW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7 CiAKIAl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwogfQogCisvKgorICogdHJhbnNm b3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAu Li4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0 aW9uIHNwcy0+Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3Vu ZC4KKyAqIERvZXMgY2hlY2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisgKi8K K3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10 Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24JcGFy ZW50ID0gY3h0LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCisJLyogVHJhbnNmb3Jt IHBhcnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0OiAqLwor CWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRjbWQtPnBhcnRs aXN0KQorCXsKKwkJY3h0LT5wYXJ0Ym91bmQgPSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0aXRp b25DbWQoY3h0LCBzcHMtPmJvdW5kKTsKKwkJLyogQXNzaWduIHRyYW5zZm9ybWVkIHZhbHVl IG9mIHRoZSBwYXJ0aXRpb24gYm91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRi b3VuZDsKKwl9CisKKwkvKgorCSAqIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9uLCBjaGVjayBv d25lcnNoaXAgYWxvbmcgdGhlIHdheS4gV2UgbmVlZCB0byB1c2UKKwkgKiBBY2Nlc3NFeGNs dXNpdmVMb2NrIGhlcmUsIGJlY2F1c2UgdGhpcyBzcGxpdCBwYXJ0aXRpb24gd2lsbCBiZSBk ZXRhY2hlZAorCSAqIHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKwkg Ki8KKwlzcGxpdFBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQocGFydGNtZC0+ bmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJMCwgUmFuZ2VWYXJDYWxs YmFja093bnNSZWxhdGlvbiwKKwkJCQkJCQkJCQkJTlVMTCk7CisKKwljaGVja1BhcnRpdGlv bihwYXJlbnQsIHNwbGl0UGFydE9pZCwgZmFsc2UpOworCisJLyogVGhlbiB3ZSBzaG91bGQg Y2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8KKwljaGVja19w YXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFydE9pZCwgcGFydGNtZC0+cGFy dGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKworCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9u Q21kRm9yTWVyZ2UKICAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFS VElUSU9OUyBjb21tYW5kCkBAIC0zNjIzLDcgKzM2NjksNyBAQCB0cmFuc2Zvcm1QYXJ0aXRp b25DbWRGb3JNZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBh cnRjbWQpCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxv Y2F0aW9uKSk7CiAJCX0KIAotCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOwor CQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQsIHRydWUpOwogCiAJCXBhcnRPaWRz ID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOwogCX0KQEAgLTM5MTEsNyArMzk1 Nyw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0 bXQgKnN0bXQsCiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0 aW9uQ21kICopIGNtZC0+ZGVmOwogCi0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0 LCBwYXJ0Y21kKTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQt PmJvdW5kKTsKIAkJCQkJLyogYXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0 aXRpb24gYm91bmQgKi8KIAkJCQkJcGFydGNtZC0+Ym91bmQgPSBjeHQucGFydGJvdW5kOwog CQkJCX0KQEAgLTM5MzMsNiArMzk3OSwyMCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQlicmVhazsKIAkJCQl9CiAK KwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQg KnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0 X2xlbmd0aChwYXJ0Y21kLT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAor CQkJCQkJCQllcnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4g YXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9u Q21kRm9yU3BsaXQoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5l d2NtZHMsIGNtZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJ CS8qCkBAIC00MzYzLDEzICs0NDIzLDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAq Y29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJh bnNmb3JtUGFydGl0aW9uQ21kCi0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJU SVRJT04gY29tbWFuZAorICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFS VElUSU9OIGNvbW1hbmQKICAqCi0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9O IGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVk IHZhbHVlIG9mIGNtZC0+Ym91bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRy YW5zZm9ybWVkIHZhbHVlIG9mIGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3Jt UGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21k KQordHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRp dGlvbkJvdW5kU3BlYyAqYm91bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5y ZWw7CiAKQEAgLTQzNzgsOSArNDQzOCw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFOgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91 bmQsIGlmIGFueSAqLwogCQkJQXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVu dFJlbCkgIT0gTlVMTCk7Ci0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJv dW5kICE9IE5VTEwpCiAJCQkJY3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25C b3VuZChjeHQtPnBzdGF0ZSwgcGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3Vu ZCk7CisJCQkJCQkJCQkJCQkJCSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5E X1BBUlRJVElPTkVEX0lOREVYOgogCkBAIC00Mzg4LDcgKzQ0NDgsNyBAQCB0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQp CiAJCQkgKiBBIHBhcnRpdGlvbmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJv dW5kIHNldC4gIEFMVEVSCiAJCQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdy YW1tYXIsIGJ1dCBub3QgQUxURVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5k ICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJ CQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA2MGMxMDM2Y2U4Li5jOTg4 NDA2YjI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTE3 LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJh Y2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUg ImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCkBAIC00OTg0LDE1ICs0OTg1LDIzIEBAIHNhdGlzZmllc19oYXNoX3BhcnRp dGlvbihQR19GVU5DVElPTl9BUkdTKQogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0Ug cGFydGl0aW9uaW5nKQogICoKLSAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNh bGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEgaGVs cGVyIGZ1bmN0aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICog Y2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rp b24gY29tcGFyZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5k IG9mCi0gKiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisg KiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdo ZW4KKyAqICJkZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBz cGxpdCBwYXJ0aXRpb25zIGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJv dW5kIG9mIGZpcnN0X2JvdW5kIGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAq IHNlY29uZF9ib3VuZCBiZWNhdXNlIHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwg YmUgaW5jbHVkZWQgaW4KKyAqIERFRkFVTFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJ CQlwYXJ0aXRpb25lZCB0YWJsZQogICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFy dGl0aW9uCiAgKiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgogICog c2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KICAqIHNlY29uZF9ib3Vu ZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlm IG9uZSBvZiBuZXcgcGFydGl0aW9ucyBpcyBERUZBVUxUCisgKiBtZXJnZV9vcl9zcGxpdDog IHRydWUgaW5kaWNhdGUgdGhlIG9wcmF0aW9uIGlzICJBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyIKKyAqIGZhbHNlIGluZGljYXRlIHRoZSBvcHJhdGlvbiBpcyAiQUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMiLgogICogcHN0YXRlOgkJCXBvaW50ZXIgdG8g UGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0aW9uCiAgKi8K IHN0YXRpYyB2b2lkCkBAIC01MDAxLDYgKzUwMTAsOCBAQCBjaGVja190d29fcGFydGl0aW9u c19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkgIFBhcnRpdGlvbkJv dW5kU3BlYyAqZmlyc3RfYm91bmQsCiAJCQkJCQkJCSAgUmFuZ2VWYXIgKnNlY29uZF9uYW1l LAogCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc2Vjb25kX2JvdW5kLAorCQkJCQkJ CQkgIGJvb2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCSAgYm9vbCBtZXJnZV9zcGxpdCwKIAkJ CQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCiB7CiAJUGFydGl0aW9uS2V5IGtleSA9IFJl bGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CkBAIC01MDIyLDE3ICs1MDMzLDIyIEBA IGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJ CQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJCQkgIHNlY29uZF9sb3dlci0+ ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJCQkJCSAgZmFsc2UsIGZpcnN0X3Vw cGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwg KGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQogCXsKIAkJUGFydGl0aW9uUmFuZ2VEYXR1 bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zKTsKIAogCQll cmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKLQkJCQllcnJtc2coImNhbiBub3QgbWVyZ2UgcGFydGl0aW9uIFwiJXNcIiB0 b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAotCQkJCQkgICBzZWNvbmRfbmFtZS0+ cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJbWVyZ2Vfc3BsaXQKKwkJCQk/ IGVycm1zZygiY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGgg cGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0 X25hbWUtPnJlbG5hbWUpCisJCQkJOiBlcnJtc2coImNhbiBub3Qgc3BsaXQgdG8gcGFydGl0 aW9uIFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJIHNl Y29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKIAkJCQllcnJkZXRh aWwoImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRo ZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKIAkJCQkJCSAgc2Vjb25kX25h bWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAotCQkJCWVycmhpbnQoIkFMVEVS IFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91 bmRzIHRvIGJlIGFkamFjZW50LiIpLAorCQkJCW1lcmdlX3NwbGl0CisJCQkJPyBlcnJoaW50 KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0 aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4iKQorCQkJCTogZXJyaGludCgiQUxURVIgVEFC TEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMg dG8gYmUgYWRqYWNlbnQuIiksCiAJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0 dW0tPmxvY2F0aW9uKSk7CiAJfQogfQpAQCAtNTEzNiw2ICs1MTUyLDggQEAgY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJ CQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5k ZXgpLAogCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywg aW5kZXgpLAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250 aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJCQkJ CSAgdHJ1ZSwKIAkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CiAJCQkJfQogCkBAIC01MTc0LDMg KzUxOTIsNjkyIEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0 aW9uIHBhcmVudCwKIAkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CiAJfQogfQorCisvKgor ICogY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0CisgKgorICogKGZ1bmN0aW9u IGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1 bmN0aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpLgorICogQ2hlY2tzIHRo YXQgdGhlIHZhbHVlcyBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgZG8gbm90IG92ZXJsYXAuCisg KgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydHM6CWFycmF5IG9mIFNp bmdsZVBhcnRpdGlvblNwZWMgc3RydWN0cyB3aXRoIGluZm8gYWJvdXQgc3BsaXQgcGFydGl0 aW9ucworICogbnBhcnRzOglzaXplIG9mIGFycmF5ICJwYXJ0cyIKKyAqLworc3RhdGljIHZv aWQKK2NoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdChSZWxhdGlvbiBwYXJlbnQs CisJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGlu dCBucGFydHMsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlv bktleSBrZXkgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFyZW50KTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisJaW50CQkJ aSwKKwkJCQlqOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczEsCisJCQkgICAqc3BzMjsK KwlMaXN0CSAgICpvdmVybGFwOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElU SU9OX1NUUkFURUdZX0xJU1QpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQor CXsKKwkJc3BzMSA9IHBhcnRzW2ldOworCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRz OyBqKyspCisJCXsKKwkJCXNwczIgPSBwYXJ0c1tqXTsKKworCQkJLyoKKwkJCSAqIENhbGN1 bGF0ZSBpbnRlcnNlY3Rpb24gYmV0d2VlbiB2YWx1ZXMgb2YgdHdvIHBhcnRpdGlvbnMuCisJ CQkgKi8KKwkJCW92ZXJsYXAgPSBsaXN0X2ludGVyc2VjdGlvbihzcHMxLT5ib3VuZC0+bGlz dGRhdHVtcywKKwkJCQkJCQkJCQlzcHMyLT5ib3VuZC0+bGlzdGRhdHVtcyk7CisJCQlpZiAo bGlzdF9sZW5ndGgob3ZlcmxhcCkgPiAwKQorCQkJeworCQkJCUNvbnN0CSAgICp2YWwgPSAo Q29uc3QgKikgbGZpcnN0KGxpc3RfaGVhZChvdmVybGFwKSk7CisKKwkJCQlvdmVybGFwX2xv Y2F0aW9uID0gdmFsLT5sb2NhdGlvbjsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNn KCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcg cGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkJICAgc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3Bz Mi0+bmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBv dmVybGFwX2xvY2F0aW9uKSk7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19w YXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3Ig QlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBu ZXcgcGFydGl0aW9uICJzcGVjIiBhcmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAorICogcGFy dGl0aW9uICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLiBJZiBmaXJzdD10cnVlICh0aGlzIG1l YW5zIHRoYXQgInNwZWMiIGlzCisgKiB0aGUgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMpIHRo ZW4gbG93ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IKKyAqIGdyZWF0 ZXIgdGhhbiBvciBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxvd2VyIGJv dW5kIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9dHJ1ZSAodGhpcyBtZWFucyB0 aGF0ICJzcGVjIiBpcyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRpdGlvbnMpIHRoZW4gdXBw ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yCisg KiBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNw bGl0IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAq IHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3Vu ZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lk OglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBmaXJzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBh cnRpdGlvbiAic3BlYyIgaXMgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGxhc3Q6CQkJ dHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGxhc3Qgb2YgbmV3IHBhcnRp dGlvbnMKKyAqIGRlZmF1bHRQYXJ0OgkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGNv bnRhaW4gREVGQVVMVCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNl U3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGlj IHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9u IHBhcmVudCwKKwkJCQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAor CQkJCQkJCQkJICAgYm9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJ CQkJCSAgIGJvb2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3Rh dGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJ aW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX1JBTkdFKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX1JBTkdFKTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChr ZXksIC0xLCBzcGVjLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9w YXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisK KwkvKgorCSAqIEZpcnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUg ZW1wdHkgd2l0aCBzcGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFy dGl0aW9uX3Jib3VuZF9jbXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICog dGhlIGxvd2VyLWJvdW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0g cGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5w YXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAg bG93ZXItPmRhdHVtcywgbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOwor CUFzc2VydChjbXB2YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2lu dCB0byBwcm9ibGVtYXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQ YXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1z LCBjbXB2YWwgLSAxKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdl IGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5h bWUpLAorCQkJCWVycmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0 ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFu Z2VfcGFydGJvdW5kX3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9y YW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVl ZCB0byBjaGVjayBmaXJzdCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcg cGFydGl0aW9ucykgKi8KKwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJv dW5kU3BlYyAqc3BsaXRfc3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBh cnRPaWQpOworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3Qp CisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxp dF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3Bl Yy0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5k X2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJ CQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0 dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKwor CQkJLyoKKwkJCSAqIExvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9y IGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorCQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVl KSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICgh ZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJ ZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsK KwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24iLAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJaWYgKGNtcHZhbCA8IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRo KHNwZWMtPmxvd2VyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQkJCQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMg bGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAg IHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlv blJhbmdlQm91bmQgKnNwbGl0X3VwcGVyOworCisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25l X3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZh bHNlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0 dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5w YXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgdXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQs CisJCQkJCQkJCQkJICBmYWxzZSwgc3BsaXRfdXBwZXIpOworCisJCQkvKgorCQkJICogVXBw ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVx dWFsIGluCisJCQkgKiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsK KwkJCQlpZiAoY21wdmFsICE9IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNw ZWMtPnVwcGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkJCQllcnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90 IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAg IHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5s b2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFs ID4gMCkKKwkJCQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMs IGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJ fQorCQkJfQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19m b3Jfc3BsaXRfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25p bmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gYXJlIGlu c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0 T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6 CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lm aWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBw YXJ0aXRpb24gT2lkCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVj dCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVj a19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hh ciAqcmVsbmFtZSwKKwkJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJ CQkJCQkJICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3Rh dGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9u RGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0g cGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3Zlcmxh cCA9IGZhbHNlOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKworCUFzc2VydChr ZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoc3Bl Yy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCUFzc2VydChib3Vu ZGluZm8gJiYgYm91bmRpbmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElT VCk7CisKKwkvKgorCSAqIFNlYXJjaCBlYWNoIHZhbHVlIG9mIG5ldyBwYXJ0aXRpb24gInNw ZWMiIGluIGV4aXN0aW5nIHBhcnRpdGlvbnMuIEFsbAorCSAqIG9mIHRoZW0gc2hvdWxkIGJl IGluIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKwkgKi8KKwlm b3JlYWNoX25vZGUoQ29uc3QsIHZhbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCW92ZXJs YXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQlpZiAoIXZhbC0+Y29uc3Rpc251bGwp CisJCXsKKwkJCWludAkJCW9mZnNldDsKKwkJCWJvb2wJCWVxdWFsOworCisJCQlvZmZzZXQg PSBwYXJ0aXRpb25fbGlzdF9ic2VhcmNoKCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJ CQkJCQlrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJCWJvdW5kaW5mbywKKwkJCQkJ CQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJCQkmZXF1YWwpOworCQkJaWYgKG9m ZnNldCA+PSAwICYmIGVxdWFsKQorCQkJeworCQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4 ZXNbb2Zmc2V0XTsKKwkJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0 T2lkKQorCQkJCXsKKwkJCQkJb3ZlcmxhcCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0K KwkJCX0KKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFy dGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCQl9CisJCWVs c2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsK KwkJCXdpdGggPSBib3VuZGluZm8tPm51bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9p ZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJy bXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSks CisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsK Kwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVw b3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICBy ZWxuYW1lLCBnZXRfcmVsX25hbWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisv KgorICogZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0CisgKgorICogKGZ1bmN0 aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5z IHRydWUgaW4gY2FzZSBhbnkgb2YgbmV3IHBhcnRpdGlvbnMgY29udGFpbnMgdmFsdWUgInZh bHVlIi4KKyAqCisgKiBwYXJ0c3VwZnVuYzoJCWluZm9ybWF0aW9uIGFib3V0IGNvbXBhcmlz b24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0 Y29sbGF0aW9uOglwYXJ0aXRpb25pbmcgY29sbGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVy IHRvIGFycmF5IHdpdGggbmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6 CQkJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiB2YWx1ZToJCQl0aGUgdmFsdWUgdGhh dCB3ZSBhcmUgbG9va2luZyBmb3IKKyAqIGlzbnVsbDoJCQl0cnVlIGlmIHRoZSB2YWx1ZSB0 aGF0IHdlIGFyZSBsb29raW5nIGZvciBpcyBOVUxMCisgKi8KK3N0YXRpYyBib29sCitmaW5k X3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAor CQkJCQkJCQkgIE9pZCAqcGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRp b25TcGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBEYXR1 bSB2YWx1ZSwKKwkJCQkJCQkJICBib29sIGlzbnVsbCkKK3sKKwlmb3IgKGludCBpID0gMDsg aSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFy dHNbaV07CisKKwkJZm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwcy0+Ym91bmQtPmxpc3Rk YXR1bXMpCisJCXsKKwkJCWlmIChpc251bGwgJiYgdmFsLT5jb25zdGlzbnVsbCkKKwkJCQly ZXR1cm4gdHJ1ZTsKKworCQkJaWYgKCFpc251bGwgJiYgIXZhbC0+Y29uc3Rpc251bGwpCisJ CQl7CisJCQkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBm dW5jWzBdLAorCQkJCQkJCQkJCQkJCXBhcnRjb2xsYXRpb25bMF0sCisJCQkJCQkJCQkJCQkJ dmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJCQkJCXZhbHVlKSkgPT0gMCkKKwkJCQkJcmV0 dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICog Y2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucworICoKKyAqIChmdW5jdGlv biBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZh bHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lkIHBhcnRPaWQpIGNvbnRhaW5zIGlu IG5ldworICogcGFydGl0aW9ucy4KKyAqCisgKiBwYXJlbnQ6CXBhcnRpdGlvbmVkIHRhYmxl CisgKiBwYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwYXJ0czoJcG9pbnRlciB0 byBhcnJheSB3aXRoIG5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOglu dW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBzdGF0ZToJcG9pbnRlciB0byBQYXJzZVN0 YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBh cmVudCwKKwkJCQkJCQkJCSAgT2lkIHBhcnRPaWQsCisJCQkJCQkJCQkgIFNpbmdsZVBhcnRp dGlvblNwZWMgKipwYXJ0cywKKwkJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJCSAg UGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdl dFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxh dGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJ bmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNjLT5ib3VuZGluZm87CisJaW50CQkJaTsKKwlib29s CQlmb3VuZCA9IHRydWU7CisJYm9vbAkJc2VhcmNoTnVsbCA9IGZhbHNlOworCURhdHVtCQlk YXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5 ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCS8qCisJICogU3BlY2lhbCBwcm9j ZXNzaW5nIGZvciBOVUxMIHZhbHVlLiBTZWFyY2ggTlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQK KwkgKiBwYXJ0aXRpb24gKHBhcnRPaWQpIGNvbnRhaW5zIGl0LgorCSAqLworCWlmIChwYXJ0 aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5v aWRzW2JvdW5kaW5mby0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkKKwl7CisJCWlmICghZmlu ZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAor CQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVt LCB0cnVlKSkKKwkJeworCQkJZm91bmQgPSBmYWxzZTsKKwkJCXNlYXJjaE51bGwgPSB0cnVl OworCQl9CisJfQorCisJLyoKKwkgKiBTZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0 aXRpb24gd2l0aCBwYXJ0T2lkIGluIFBhcnRpdGlvbkRlc2Mgb2YKKwkgKiBwYXJ0aXRpb25l ZCB0YWJsZS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBp KyspCisJeworCQlpZiAocGFydGRlc2MtPm9pZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9 PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBXZSBmb3VuZCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRp dGlvbiBjb250YWlucy4gKi8KKwkJCWRhdHVtID0gYm91bmRpbmZvLT5kYXR1bXNbaV1bMF07 CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0 c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlvbiwgcGFydHMs IG5wYXJ0cywgZGF0dW0sIGZhbHNlKSkKKwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOworCQkJ CWJyZWFrOworCQkJfQorCQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwl7CisJCUNvbnN0CSAg ICpub3RGb3VuZFZhbDsKKworCQlpZiAoIXNlYXJjaE51bGwpCisKKwkJCS8qCisJCQkgKiBN YWtlIENvbnN0IGZvciBnZXR0aW5nIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91 bmQKKwkJCSAqIHZhbHVlLgorCQkJICovCisJCQlub3RGb3VuZFZhbCA9IG1ha2VDb25zdChr ZXktPnBhcnR0eXBpZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJ CQkJCWtleS0+cGFydHR5cGNvbGxbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBsZW5bMF0s CisJCQkJCQkJCQlkYXR1bSwKKwkJCQkJCQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJ CQkJCWtleS0+cGFydHR5cGJ5dmFsWzBdKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2co Im5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRp b24gZG9lcyIsCisJCQkJCSAgIHNlYXJjaE51bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9wYXJ0 dmFsdWVfc3RyaW5nKG5vdEZvdW5kVmFsKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3Bh cnRpdGlvbnNfZm9yX3NwbGl0CisgKgorICogQ2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBT UExJVCBQQVJUSVRJT05TIGNvbW1hbmQ6CisgKiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91 bGQgYmUgb25lLgorICogMi4gTmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50 IG5hbWVzCisgKiAgICAod2l0aCBleGlzdGluZyBwYXJ0aXRpb25zIHRvbykuCisgKiAzLiBC b3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFu ZCBleGlzdGluZworICogICAgcGFydGl0aW9ucy4KKyAqIDQuIEluIGNhc2Ugc3BsaXQgcGFy dGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uLCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKKyAq ICAgIHNob3VsZCBiZSBERUZBVUxULgorICogNS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBv ciBleGlzdGluZyBwYXJ0aXRpb25zIGNvbnRhaW5zIERFRkFVTFQKKyAqICAgIHBhcnRpdGlv biwgbmV3IHBhcnRpdGlvbnMgY2FuIGhhdmUgYW55IGJvdW5kcyBpbnNpZGUgc3BsaXQKKyAq ICAgIHBhcnRpdGlvbiBib3VuZCAoY2FuIGJlIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMg Ym91bmRzKS4KKyAqIDYuIEluIGNhc2UgcGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2 ZSBERUZBVUxUIHBhcnRpdGlvbiwgREVGQVVMVAorICogICAgcGFydGl0aW9uIGNhbiBiZSBk ZWZpbmVkIGFzIG9uZSBvZiBuZXcgcGFydGl0aW9uLgorICogNy4gSW4gY2FzZSBuZXcgcGFy dGl0aW9ucyBub3QgY29udGFpbnMgREVGQVVMVCBwYXJ0aXRpb24gYW5kCisgKiAgICBwYXJ0 aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xs b3dpbmcKKyAqICAgIHNob3VsZCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRp b25zIHNob3VsZCBiZSBlcXVhbAorICogICAgdG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u LgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lk OglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlv bnMKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRl cm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jf c3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJ CQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQor eworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVs dFBhcnRPaWQ7CisJYm9vbAkJaXNTcGxpdFBhcnREZWZhdWx0OworCWJvb2wJCWNyZWF0ZURl ZmF1bHRQYXJ0OworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJ CWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHNQcmV2ID0gTlVMTDsKKwlpbnQJCQlucGFydHMgPSAwOworCisJa2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0 aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNl IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9S QU5HRToKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGgg bmV3IHBhcnRpdGlvbnMgZXhjZXB0IERFRkFVTFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJ ICovCisJCQkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQkJCXBh bGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3QpICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNw ZWMgKikpOworCQkJCWkgPSAwOworCQkJCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25T cGVjLCBzcHMsIHBhcnRsaXN0KQorCQkJCXsKKwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlzX2Rl ZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlmIChkZWZhdWx0X2luZGV4ID49IDApCisJCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJCWVycm1zZygiREVGQVVMVCBwYXJ0aXRpb24gc2hv dWxkIGJlIG9uZSIpLAorCQkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3Bz LT5uYW1lLT5sb2NhdGlvbikpOworCQkJCQkJZGVmYXVsdF9pbmRleCA9IGk7CisJCQkJCX0K KwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOwor CQkJCQl9CisJCQkJCWkrKzsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBB UlRJVElPTl9TVFJBVEVHWV9IQVNIOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygicGFydGl0 aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0IikpOworCQkJ YnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRp dGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJy ZWFrOworCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0Up CisJeworCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQ YXJ0aXRpb25TcGVjICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxp ZnkgY2hlY2sgZm9yIHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBuZWVkIHRvIHNvcnQgYWxs CisJCSAqIHBhcnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZW0gYm91bmRzICh3 ZSBjb21wYXJlIHVwcGVyCisJCSAqIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91 bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNp emVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2Yg bG93ZXIgYm91bmRzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsK KwkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBp LAorCQkJCQkJCQkJCQkJCQluZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1 ZSk7CisJCX0KKworCQkvKiBTb3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNv cnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3Vu ZCAqKSwKKwkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkp OworCisJCS8qIFJlb3JkZXIgYXJyYXkgb2YgcGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19w YXJ0cyA9IG5ld19wYXJ0czsKKwkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMg KiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICop KTsKKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQkJbmV3X3BhcnRzW2ldID0g dG1wX25ld19wYXJ0c1tsb3dlcl9ib3VuZHNbaV0tPmluZGV4XTsKKworCQlwZnJlZSh0bXBf bmV3X3BhcnRzKTsKKwkJcGZyZWUobG93ZXJfYm91bmRzKTsKKwl9CisKKwlkZWZhdWx0UGFy dE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFy dGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCS8qIGlzU3BsaXRQYXJ0RGVmYXVsdCBm bGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlpc1Nw bGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsKKwor CWlmIChpc1NwbGl0UGFydERlZmF1bHQgJiYgZGVmYXVsdF9pbmRleCA8IDApCisJeworCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQllcnJtc2coIm9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxk IGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCIpLAorCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsICgoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBs aW5pdGlhbChwYXJ0bGlzdCkpLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKwllbHNlIGlmICgh aXNTcGxpdFBhcnREZWZhdWx0ICYmIChkZWZhdWx0X2luZGV4ID49IDApICYmIE9pZElzVmFs aWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVm ID0KKwkJCShTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZh dWx0X2luZGV4KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24g Y2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4 aXN0cyIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwc0RlZi0+bmFtZS0+ bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJbmRpY2F0b3IgdGhhdCB0aGUgREVGQVVMVCBwYXJ0 aXRpb24gd2lsbCBiZSBjcmVhdGVkLiAqLworCWNyZWF0ZURlZmF1bHRQYXJ0ID0gKGRlZmF1 bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJewor CQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFydHNbaV07CisKKwkJaWYgKGlz U3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIEluIGNhc2Ugc3BsaXQgcGFy dGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1c2UgYW55CisJCQkgKiBmcmVl IHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFydGl0aW9uLgorCQkJICovCisJ CQljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFtZS0+cmVsbmFtZSwgcGFyZW50 LCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOworCQl9CisJCWVsc2UKKwkJewor CQkJLyoKKwkJCSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1cnJlbnQgcGFydGl0aW9uIGlz IGluc2lkZSBib3VuZCBvZiBzcGxpdAorCQkJICogcGFydGl0aW9uLiBGb3IgcmFuZ2UgcGFy dGl0aW9uaW5nOiBjaGVja3MgdGhhdCB1cHBlciBib3VuZCBvZgorCQkJICogcHJldmlvdXMg cGFydGl0aW9uIGlzIGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIGN1cnJlbnQKKwkJCSAqIHBh cnRpdGlvbi4gRm9yIGxpc3QgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCBzcGxpdCBwYXJ0 aXRpb24KKwkJCSAqIGNvbnRhaW5zIGFsbCB2YWx1ZXMgb2YgY3VycmVudCBwYXJ0aXRpb24u CisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0Up CisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9PSAwKTsKKwkJCQlib29sCQlsYXN0ID0g KGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9y X3NwbGl0X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLCBzcHMtPmJvdW5kLAor CQkJCQkJCQkJCQkJCSAgIHNwbGl0UGFydE9pZCwgZmlyc3QsIGxhc3QsCisJCQkJCQkJCQkJ CQkJICAgY3JlYXRlRGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisJCQl9CisJCQllbHNlCisJCQkJ Y2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdChwYXJlbnQsIHNwcy0+bmFt ZS0+cmVsbmFtZSwKKwkJCQkJCQkJCQkJCQkgIHNwcy0+Ym91bmQsIHNwbGl0UGFydE9pZCwg cHN0YXRlKTsKKwkJfQorCisJCS8qIFJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQg bm90IG92ZXJsYXAuICovCisJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lf UkFOR0UgJiYgc3BzUHJldikKKwkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5n ZShwYXJlbnQsIHNwc1ByZXYtPm5hbWUsIHNwc1ByZXYtPmJvdW5kLAorCQkJCQkJCQkJCQkg IHNwcy0+bmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJICBjcmVhdGVEZWZhdWx0UGFy dCwKKwkJCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCXNw c1ByZXYgPSBzcHM7CisKKwkJLyogQ2hlY2s6IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZl IGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGor KykKKwkJeworCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsK KwkJCWJvb2wJCXJlc3VsdCA9IGZhbHNlOworCisJCQkvKgorCQkJICogTmVlZCB0byBjb21w YXJlIG5hbWVzcGFjZXM/IE9uZSBvZiB0aGUgc2NoZW1hIG5hbWVzIG1heSBiZQorCQkJICog dW5kZWZpbmVkLCBidXQgdGhlIHNjaGVtYXMgbWF5IHN0aWxsIGJlIGVxdWFsLgorCQkJICov CisJCQlpZiAoKHNwcy0+bmFtZS0+c2NoZW1hbmFtZSAmJiAhc3BzMi0+bmFtZS0+c2NoZW1h bmFtZSkgfHwKKwkJCQkoIXNwcy0+bmFtZS0+c2NoZW1hbmFtZSAmJiBzcHMyLT5uYW1lLT5z Y2hlbWFuYW1lKSkKKwkJCXsKKwkJCQlPaWQJCQluc3BpZCA9IFJhbmdlVmFyR2V0Q3JlYXRp b25OYW1lc3BhY2Uoc3BzLT5uYW1lKTsKKwkJCQlPaWQJCQluc3BpZDIgPSBSYW5nZVZhckdl dENyZWF0aW9uTmFtZXNwYWNlKHNwczItPm5hbWUpOworCisJCQkJaWYgKG5zcGlkID09IG5z cGlkMikKKwkJCQkJcmVzdWx0ID0gKHN0cmNtcChzcHMtPm5hbWUtPnJlbG5hbWUsIHNwczIt Pm5hbWUtPnJlbG5hbWUpID09IDApOworCQkJfQorCQkJZWxzZQorCQkJCXJlc3VsdCA9IGVx dWFsKHNwcy0+bmFtZSwgc3BzMi0+bmFtZSk7CisKKwkJCWlmIChyZXN1bHQpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAor CQkJCQkJZXJybXNnKCJuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBzcHMyLT5uYW1l LT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwczItPm5h bWUtPmxvY2F0aW9uKSk7CisJCX0KKwl9CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9O X1NUUkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1ZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIG5vdCBvdmVybGFwLiAqLworCQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xp c3QocGFyZW50LCBuZXdfcGFydHMsIG5wYXJ0cywKKwkJCQkJCQkJCQkgIHBzdGF0ZSk7CisK KwkJLyoKKwkJICogTmVlZCB0byBjaGVjayB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFy dGl0aW9uIGNvbnRhaW5zIGluIG5ldworCQkgKiBwYXJ0aXRpb25zLiBTa2lwIHRoaXMgY2hl Y2sgaWYgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3RzLgorCQkgKi8KKwkJaWYgKCFjcmVhdGVE ZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMo cGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkJCQkgIG5ld19wYXJ0cywgbnBhcnRz LCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19wYXJ0cyk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggM2Q2ZTZiZGJmZC4uM2UxNjg5YjExOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTM3MDcsMyArMTM3MDcsMjEgQEAgZ2V0X3Jh bmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1 Zi0+ZGF0YTsKIH0KKworLyoKKyAqIGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcKKyAqCQlB IEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9uZSBsaXN0IHBhcnRpdGlvbiB2YWx1ZQor ICovCitjaGFyICoKK2dldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZhbCkKK3sK KwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlTdHJpbmdJbmZvCWJ1ZiA9IG1ha2VTdHJp bmdJbmZvKCk7CisKKwltZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihkZXBhcnNlX2NvbnRl eHQpKTsKKwljb250ZXh0LmJ1ZiA9IGJ1ZjsKKworCWdldF9jb25zdF9leHByKHZhbCwgJmNv bnRleHQsIC0xKTsKKworCXJldHVybiBidWYtPmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKaW5kZXggMWNmMDk0OWZiYi4uZWZlNjVjZjk0NCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwpAQCAtMjc0OSw3ICsyNzQ5LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50 IHBhdHRlcm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJREFURSBDT05T VFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0ggUEFSVElUSU9O IiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVWRUwgU0VDVVJJ VFkiLAotCQkJCQkgICJNRVJHRSBQQVJUSVRJT05TICgiLAorCQkJCQkgICJTUExJVCBQQVJU SVRJT04iLCAiTUVSR0UgUEFSVElUSU9OUyAoIiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7 CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAgLTMwMTIsMTAgKzMwMTIsMTAgQEAg bWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgo IkZST00gKCIsICJJTiAoIiwgIldJVEggKCIpOwogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIEFM VEVSIFRBQkxFIDxmb28+IERFVEFDSCBQQVJUSVRJT04sIHByb3ZpZGUgYSBsaXN0IG9mCisJ ICogSWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0h8U1BMSVQgUEFSVElUSU9O LCBwcm92aWRlIGEgbGlzdCBvZgogCSAqIHBhcnRpdGlvbnMgb2YgPGZvbz4uCiAJICovCi0J ZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIs ICJQQVJUSVRJT04iKSkKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1h dGNoQW55LCAiREVUQUNIfFNQTElUIiwgIlBBUlRJVElPTiIpKQogCXsKIAkJc2V0X2NvbXBs ZXRpb25fcmVmZXJlbmNlKHByZXYzX3dkKTsKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX3BhcnRpdGlvbl9vZl90YWJsZSk7CkBAIC0zMDIzLDYgKzMwMjMsMTAg QEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkRFVEFDSCIsICJQQVJUSVRJT04i LCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJGSU5BTEla RSIpOwogCisJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8bmFtZT4g Ki8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiU1BM SVQiLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJJTlRPICgg UEFSVElUSU9OIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9O UyAoICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwg Ik1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCIpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCBiMWIzMzE1ZmU1Li41YzliZTg0ODNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC05NjMsMTcgKzk2MywyOSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5n ZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCisvKgorICogUGFydGl0 aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlvbiBmb3IgQUxURVIgVEFCTEUg U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2luZ2xlUGFy dGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisKKwlSYW5nZVZhciAgICpuYW1lOwkJ CS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJ LyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCit9IFNpbmdsZVBhcnRpdGlvblNwZWM7 CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBB VFRBQ0gvREVUQUNIIFBBUlRJVElPTiBhbmQgZm9yCi0gKgkgIEFMVEVSIFRBQkxFIE1FUkdF IFBBUlRJVElPTlMgY29tbWFuZHMKKyAqCSAgQUxURVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFS VElUSU9OKFMpIGNvbW1hbmRzCiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAog ewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBh cnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoL21lcmdlICovCisJUmFuZ2VWYXIgICAqbmFtZTsJ CQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0bworCQkJCQkJCQkgKiBhdHRhY2gvZGV0YWNoL21l cmdlL3NwbGl0ICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVF UywgaWYgYXR0YWNoaW5nICovCi0JTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBh cnRpdGlvbnMgdG8gYmUgbWVyZ2VkLCB1c2VkIGluCi0JCQkJCQkJCSAqIEFMVEVSIFRBQkxF IE1FUkdFIFBBUlRJVElPTlMgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2Yg cGFydGl0aW9ucyB0byBiZSBzcGxpdC9tZXJnZWQsIHVzZWQKKwkJCQkJCQkJICogaW4gQUxU RVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFSVElUSU9OKFMpICovCiAJYm9vbAkJY29uY3VycmVu dDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDc2LDYgKzI0ODgsNyBAQCB0eXBlZGVmIGVu dW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBB UlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9O ICovCiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04g RklOQUxJWkUgKi8KKwlBVF9TcGxpdFBhcnRpdGlvbiwJCQkvKiBTUExJVCBQQVJUSVRJT04g Ki8KIAlBVF9NZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFU X0FkZElkZW50aXR5LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJ CQkJLyogU0VUIGlkZW50aXR5IGNvbHVtbiBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggOTBlOGNkZGY4Yi4uNjZjODg3NjY1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAt NDIxLDYgKzQyMSw3IEBAIFBHX0tFWVdPUkQoInNtYWxsaW50IiwgU01BTExJTlQsIENPTF9O QU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzbmFwc2hvdCIsIFNOQVBT SE9ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzb21l IiwgU09NRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNv dXJjZSIsIFNPVVJDRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgic3BsaXQiLCBTUExJVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic3FsIiwgU1FMX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInN0YWJsZSIsIFNUQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhbmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmgKaW5kZXggNjkwZDI1OTYxOS4uNDViMWZhMWRlOCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNiArMTQzLDEwIEBAIGV4dGVy biBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBm dW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5k SW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVy KTsKIAorZXh0ZXJuIHZvaWQgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24g cGFyZW50LAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIExp c3QgKnBhcnRsaXN0LAorCQkJCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKTsKIGV4dGVy biB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBh cmVudCwKIAkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1lcywKIAkJCQkJCQkJCQkJCUxpc3Qg KnBhcnRPaWRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaAppbmRleCA1ZjJlYTJlNGQwLi42MjA0 M2QzYmY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtNTQsNCArNTQsNiBAQCBleHRl cm4gY2hhciAqZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1z KTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX3N0cmluZyhPaWQg c3RhdGV4dGlkKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmco Q29uc3QgKnZhbCk7CisKICNlbmRpZgkJCQkJCQkvKiBSVUxFVVRJTFNfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQg Yi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41ZDllOGIwOTI1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxp dC5vdXQKQEAgLTAsMCArMSwxOTAgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Np b25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYiBzMmkgczFjIHMy YyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICog RlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQw MQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0 ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQ QVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8x NSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFy dF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0t LS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0 ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQg czJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4 dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFicnIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDog QUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJ CSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkg VE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3Rl cCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8 dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJyciBz MmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFS VElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRf MTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMx YzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0t LS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4 dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQg czJicyBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BM SVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRf MTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04g dHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0t LS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0 ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0 IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQ QVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8x NSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFy dF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4 dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFicyBzMXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxU RVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAg IChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwK KwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8g KDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScp OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29t cGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRw YXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0 ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFM VEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkg ICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSks CisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRP ICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxF Oworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0 MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCAyMDQwZTFjNTdhLi4yYWQ5Zjk3Y2JlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEwOSw2ICsxMDksNyBA QCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVw ZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00CiB0ZXN0OiBwYXJ0aXRpb24t bWVyZ2UKK3Rlc3Q6IHBhcnRpdGlvbi1zcGxpdAogdGVzdDogcGxwZ3NxbC10b2FzdAogdGVz dDogY2x1c3Rlci1jb25mbGljdAogdGVzdDogY2x1c3Rlci1jb25mbGljdC1wYXJ0aXRpb24K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQu c3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wODcyMzlhNGExCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxp dC5zcGVjCkBAIC0wLDAgKzEsNTQgQEAKKyMgVmVyaWZ5IHRoYXQgU1BMSVQgb3BlcmF0aW9u IGxvY2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAK K3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFy dChpIGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJM RSB0cGFydF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMTApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0 IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8y MF8zMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsK KyAgQ1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFV TFQ7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNF UlQgSU5UTyB0cGFydCBWQUxVRVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMjUsICd0ZXh0MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVT ICgzNSwgJ3RleHQzNScpOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0 OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsg QkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMWJzCXsg QkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMXNwbHQJeyBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBU TyAoMjApKTsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVw IHMyYgl7IEJFR0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNF UklBTElaQUJMRTsgfQorc3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VMRUNU ICogRlJPTSB0cGFydDsgfQorCisKKyMgczEgc3RhcnRzIFNQTElUIFBBUlRJVElPTiB0aGVu IHMyIHRyeWluZyB0byBpbnNlcnQgcm93IGFuZAorIyB3YWl0cyB1bnRpbCBzMSBmaW5pc2hl ZCBTUExJVCBvcGVyYXRpb24uCisKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJiIHMyaSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBz MnMKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVy bXV0YXRpb24gczFicnIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9u IHMxYnJyIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnJy IHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworCitwZXJtdXRhdGlvbiBzMWJzIHMxc3Bs dCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJyciBz MmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBz MmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uv ZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCBjNDAzYzJmNTY5Li4xM2Nj ZmI3NGY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uv ZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTYxLDYgKzYxLDExIEBA IE5PVElDRTogIERETCB0ZXN0OiB0eXBlIHNpbXBsZSwgdGFnIENSRUFURSBUQUJMRQogQUxU RVIgVEFCTEUgcGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFy dDE7CiBOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRB QkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgTUVSR0UgUEFSVElUSU9OUyBkZXNj IDxOVUxMPgorQUxURVIgVEFCTEUgcGFydCBTUExJVCBQQVJUSVRJT04gcGFydDEgSU5UTwor CShQQVJUSVRJT04gcGFydDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTAwKSwKKwkgUEFS VElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKSk7CitOT1RJQ0U6 ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCitOT1RJQ0U6 ICAgIHN1YmNvbW1hbmQ6IHR5cGUgU1BMSVQgUEFSVElUSU9OIGRlc2MgPE5VTEw+CiBBTFRF UiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7CiBOT1RJQ0U6ICBEREwgdGVzdDog dHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1h bmQ6IHR5cGUgQUREIENPTlNUUkFJTlQgKGFuZCByZWN1cnNlKSBkZXNjIGNvbnN0cmFpbnQg cGFydF9hX25vdF9udWxsIG9uIHRhYmxlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKaW5kZXggMzFl NjkxMDBhMy4uMWU3NWZlYWE0NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTM4LDYgKzM4LDEw IEBAIERST1AgVEFCTEUgcGFydDI7CiBDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9G IHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFy dCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7CiAKK0FMVEVS IFRBQkxFIHBhcnQgU1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFSVElUSU9OIHBh cnQxIEZPUiBWQUxVRVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElPTiBwYXJ0MiBG T1IgVkFMVUVTIEZST00gKDEwMCkgdG8gKDIwMCkpOworCiBBTFRFUiBUQUJMRSBwYXJ0IEFE RCBQUklNQVJZIEtFWSAoYSk7CiAKIEFMVEVSIFRBQkxFIHBhcmVudCBBTFRFUiBDT0xVTU4g YSBTRVQgTk9UIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Rk bF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRleCA3ZGU1ZGRiODc4Li4xN2Q3MmU0 MTJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVz dF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJs ZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRp dGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklO QUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQlz dHJ0eXBlID0gIlNQTElUIFBBUlRJVElPTiI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUX01l cmdlUGFydGl0aW9uczoKIAkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOwogCQkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fc3BsaXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYzNjQ3ZTc3 ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQKQEAgLTAsMCArMSwxNjQyIEBACistLQorLS0gUEFSVElUSU9OX1NQ TElUCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gLi4u IiBjb21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOwor Q1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBw YXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25f bmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CistLSBFUlJPUjog IHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIg YWxyZWFkeSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9u IGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9u CitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcy MDIyLTA1LTAxJywgJzIwMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVk IGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFy dGl0aW9uICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBT cGVjaWZpZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFuIG9y IGVxdWFsIHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxpc3Qg b2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0xMC0wMScpKTsKK0VSUk9SOiAgbGlzdCBv ZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9u cworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIi IGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Yg c3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAi c2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3Jl YXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBi dXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjog IG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitMSU5FIDM6 ICAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJz YWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2Vk CitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6 ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBuYW1l ICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9O IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTLi4uCisg ICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFyX2FwcjIw MjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBBTFRFUiBhY3Rpb24gU1BMSVQgUEFSVElU SU9OIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gcmVsYXRpb24gInNhbGVzX2ZlYl9tYXJfYXBy MjAyMiIKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRh Ymxlcy4KKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0 b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24g InNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19mZWIyMDIy IgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJ VCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFj ZW50LgorLS0gVGVzdHMgZm9yIHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hv dWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzOworLS0gRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVh bCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9u IG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVt YS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBzYWxl c19yYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFi bGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4g ICAgICB8ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg RGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwg Cisgc2FsZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisg c2FsZXNfYW1vdW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2Fs ZXNfZGF0ZSAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRp b24ga2V5OiBSQU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEyLnNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicp IFRPICgnMDUtMDEtMjAyMicpLAorICAgICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVt YTIuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcw My0wMS0yMDIyJyksCisgICAgICAgICAgICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIw MjInKSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEt MDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRp dGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX3JhbmdlIE9SREVSIEJZIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBz YWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2phbjIwMjIgfCAg ICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0z MS0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIw MjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAg IHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAg ICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIy Cisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8 ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor IHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBz YWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2Fs ZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAg ICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlIENBU0NBREU7CistLQorLS0gQWRkIHNwbGl0IHBhcnRpdGlvbiwgdGhlbiBhZGQgcm93 cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworLS0gU3BsaXQgcGFydGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVt YSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBwYXJ0aXRpb25zCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKK1xkKyBzYWxlc19yYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UGFydGl0aW9uZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2Ui CisgICAgICBDb2x1bW4gICAgICB8ICAgICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAg ICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwg ICAgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5n KDMwKSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAg ICAgICAgICAgIHwgCisgc2FsZXNfYW1vdW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAg ICAgICAgIHwgCisgc2FsZXNfZGF0ZSAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAg ICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlvbnM6 IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIy JyksCisgICAgICAgICAgICBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAx LTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpLAorICAg ICAgICAgICAgc2FsZXNfb3RoZXJzIERFRkFVTFQKKworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAg KDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywg ICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIw MjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAor ICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywg ICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyks CisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1 bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDkn KSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHNhbGVzcGVy c29uX2lkOworICAgICAgICAgICAgICAgdGFibGVvaWQgICAgICAgICAgICAgICAgfCBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisg c2FsZXNfZmViMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAy IHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBzYWxl c19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2Fw cjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAy MiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19mZWIyMDIyICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEyLnNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxl c19tYXIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwg ICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMt MTktMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0y MDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIK KygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0g VGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VO RVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBz YWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChz YWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0 ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkg U1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVz IGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVz X21vbnRoLCBzYWxlc19kYXkpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIw MjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwg TUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2Vy MScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdN YW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisg ICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEp LAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAz LCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisgICAgIHRhYmxlb2lkICAgICAgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwg c2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSAgICAg fCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAg ICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIxICAg ICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAg ICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIy MDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2Zl YjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwg ICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5f ZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ph bl9mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf b3RoZXIgICAgICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxl c19vdGhlciAgICAgICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNh bGVzX290aGVyICAgICAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50Ciso OSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxl c19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMs IDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAy MDIyLCAxLCAxMCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZCwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKyAgIHRhYmxlb2lkICAgIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2Rh eSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSB8IE1h bmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcg fCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2RlYzIwMjEgfCBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwg MjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdl cjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIw MjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1hbmFnZXIy ICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIy LjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMyAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4w NS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjMgICAg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEu MDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIyICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAy IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBNYW5hZ2VyMSAgICAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmViMjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVz IGRlcGFydG1lbnQKKygxMSByb3dzKQorCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2ph bl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmVi MjAyMjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBl eGlzdAorTElORSAxOiBTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworICAgICAg ICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworLS0K Ky0tIFRlc3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFy dGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2Fs ZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAw MCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywg ICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAg IDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0y MDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAw NS0wNC0yMDIyCisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlv bl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAgICBzY2hlbWFuYW1l ICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgIHwg dGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lk eCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVf aWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKQorKDEgcm93KQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CistLSBVc2UgaW5kZXhzY2FuIGZvciB0 ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUg PiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1 c2luZyBzYWxlc19mZWIyMDIyX3NhbGVzX2RhdGVfaWR4IG9uIHNhbGVzX2ZlYjIwMjIKKyAg IEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjInOjpkYXRlKQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAn MjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwg U21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAg ICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy CisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwg MDItMjMtMjAyMgorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX21hcjIwMjJf c2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfbWFyMjAyMgorICAgSW5kZXggQ29uZDogKHNhbGVz X2RhdGUgPiAnMDEtMDEtMjAyMic6OmRhdGUpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxl c3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMiB8 IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dz KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3 aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBvbiBz YWxlc19hcHIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIy Jzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVy ZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0w Ni0yMDIyCisgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVz X2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNj YW4gdXNpbmcgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSBvbiBzYWxlc19vdGhlcnMK KyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjInOjpkYXRlKQorKDIg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTQg fCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93 KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworICAgICAgIHNjaGVt YW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAg ICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19mZWIyMDIyIHwgc2FsZXNfZmViMjAy Ml9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfZmVi MjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2Zl YjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZS T00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1l OworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAg aW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19tYXIyMDIy IHwgc2FsZXNfbWFyMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUg SU5ERVggc2FsZXNfbWFyMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLnNhbGVzX21hcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNf YXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JE RVIgQlkgaW5kZXhuYW1lOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgIHRhYmxlbmFt ZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg fCBzYWxlc19hcHIyMDIyIHwgc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAg ICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJs ZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAg ICB8ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJs ZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4 MSB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVf aWR4MSBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJl ZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVND QURFOworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMgZm9yIHNwbGl0dGluZyBERUZBVUxUIHBh cnRpdGlvbiAoZGlmZmVyZW50IGJvdW5kcykKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNh bGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRv IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxl c19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVT IEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAg Y2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRo IHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0 byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDog IEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRp b24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3 aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNw bGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHRvZ2V0 aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0xJTkUgNDogICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor REVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii CitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhl IHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRl cnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBj YW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGgg cGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVj MjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIx MTIyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZB VUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9y IiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0xJTkUgMzogICAg UEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgy MDIxLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii IGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19k ZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIHJlcXVp cmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50LgorLS0gc2FsZXNfZXJy b3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGV4YWN0bHkgdGhlIHNhbWUgYm91 bmRzKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJy b3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0 aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMSIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJP TSAoMjAyMTEyMDEpIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZXJyb3IiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJ VCBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFj ZW50LgorLS0gRVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBE RUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIw MjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKK0VSUk9SOiAgb25l IHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0 IHBhcnRpdGlvbiBpcyBERUZBVUxUCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAg ICAgICAgICAgXgorLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBi ZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIw MTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gbm8gZXJyb3I6IGJvdW5k cyBvZiBzYWxlc19ub2Vycm9yIGFyZSBlcXVhbCB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRz IG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAx MDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVz dDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJ TlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxl KHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90 Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKAorc2FsZXNwZXJzb25faWQgSU5UIFJF RkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLAorc2FsZXNfYW1vdW50IElO VCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIg QlkgY29ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50 ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgY29ubmFtZSAgICAg ICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vf c2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc3BlcnNvbl9p ZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCkgfCBzYWxlc19yYW5n ZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9CisoMiByb3dzKQorCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CistLSBXZSBzaG91bGQgc2VlIHRoZSBzYW1lIENPTlNUUkFJ TlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19n ZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIwMjInOjpyZWdjbGFzczo6b2lkIE9S REVSIEJZIGNvbm5hbWU7OworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1l ICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4g MSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19y YW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVy c29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVz X3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lk IE9SREVSIEJZIGNvbm5hbWU7OworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25u YW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50 ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxl c19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVz cGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNh bGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVD VCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6 b2lkIE9SREVSIEJZIGNvbm5hbWU7OworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBj b25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1v dW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBz YWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNh bGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8 IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKKy0t IEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVz IGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKK0VS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0RFVEFJ TDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgxLCAwLCAwMy0xMS0yMDIyKS4KKy0tIEVSUk9S OiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtl eSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0x MScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIy IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3Bl cnNvbl9pZF9ma2V5IgorREVUQUlMOiAgS2V5IChzYWxlc3BlcnNvbl9pZCk9KC0xKSBpcyBu b3QgcHJlc2VudCBpbiB0YWJsZSAic2FsZXNwZW9wbGUiLgorLS0gb2sKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAzLTExJyk7CitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7 CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRhYmxlIGlu IGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlHTiBLRVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0 YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQg UFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzIChzYWxlc3Bl cnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSk7CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICAnUG9pcm90JyksCisgICgxMCwgJ01heScp LAorICAoMTksICdJdmFub3YnKSwKKyAgKDIwLCAnU21pcm5vZmYnKSwKKyAgKDMwLCAnRm9y ZCcpOworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTCisgICgxLCAgMTAwLCAnMjAyMi0wMy0w MScpLAorICAoMSwgIDExMCwgJzIwMjItMDMtMDInKSwKKyAgKDEwLCAxNTAsICcyMDIyLTAz LTAxJyksCisgICgxMCwgOTAsICAnMjAyMi0wMy0wMycpLAorICAoMTksIDIwMCwgJzIwMjIt MDMtMDQnKSwKKyAgKDIwLCA1MCwgICcyMDIyLTAzLTEyJyksCisgICgyMCwgMTcwLCAnMjAy Mi0wMy0wMicpLAorICAoMzAsIDMwLCAgJzIwMjItMDMtMDQnKTsKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2Fs ZXNwZXJzb25faWQ7CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8 IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNh bGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxl MTBfNDAgfCAgICAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUxMF80MCB8 ICAgICAgICAgICAgIDMwIHwgRm9yZAorKDUgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElU SU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAg IFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMw KSBUTyAoNDApKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Bl b3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRhYmxlb2lk ICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVv cGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxlMTBfMjAg fCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAg ICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAyMCB8IFNt aXJub2ZmCisgc2FsZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAorKDUg cm93cykKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRf ZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQn KTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitE RVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lkKT0oNDApIGlzIG5vdCBwcmVzZW50IGluIHRh YmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgz MCwgNTAsICAnMjAyMi0wMy0wNCcpOworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJP UCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRp dGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNv bl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2Fs ZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAn UG9pcm90Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93 X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZ JAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24g PSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4s IFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworQ1JFQVRFIFRS SUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAg QUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1F TlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3Nh bGVzcGVvcGxlJyk7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAg IEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVy ZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAo MTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0 aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmln Z2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVS LCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJv dyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVFUyAoMTksICdJdmFub3Yn KTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFS VElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwK KyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRP ICg0MCkpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1l bnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7 CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Bl b3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBT VEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJU IElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAg dHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgIHRh Ymxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNh bGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVvcGxl MTBfMjAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfMjAgfCAgICAg ICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAgICAgICAgICAy MCB8IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9y ZAorKDUgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworRFJPUCBG VU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBzcGxp dCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBzcGxpdCBwYXJ0aXRp b24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBvZiBuZXcgcGFydGl0aW9u cyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVv cGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBS SU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7Cist LSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5IGNvbHVtbjoKK0NSRUFURSBU QUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3BlcnNvbl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRU QUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBGT1IgVkFMVUVTIEZST00gKDIpIFRPICg1 KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMg KCdQb2lyb3QnKSwgKCdJdmFub3YnKTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0 dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CisgICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Bl cnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkg Y29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNw ZW9wbGUyXzUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFt ZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBh ICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIg cm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVz cGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfMyBGT1IgVkFMVUVT IEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTNfNCBGT1IgVkFM VUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTRfNSBGT1Ig VkFMVUVTIEZST00gKDQpIFRPICg1KSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2Fs ZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnTWF5JyksICgnRm9yZCcpOworU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBz YWxlc3BlcnNvbl9pZDsKKyAgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTFfMiB8ICAgICAgICAgICAgICAxIHwgUG9p cm90Cisgc2FsZXNwZW9wbGUyXzMgfCAgICAgICAgICAgICAgMiB8IEl2YW5vdgorIHNhbGVz cGVvcGxlM180IHwgICAgICAgICAgICAgIDMgfCBNYXkKKyBzYWxlc3Blb3BsZTRfNSB8ICAg ICAgICAgICAgICA0IHwgRm9yZAorKDQgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4g MCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0 ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQor IHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUg fCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50 aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBB TkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0 ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQor IHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUg fCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBp ZGVudGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAg ICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29u X2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAg ICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAg ICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29u X2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAg ICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNwZW9wbGU0XzUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAg ICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29u X2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAg ICB8IAorKDIgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0K Ky0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9O IE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0 ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMKKyAgKCdkdW1t eSB2YWx1ZSAxJywgMTksIDEwMCwgbm93KCksICdJdmFub3YnKSwKKyAgKCdkdW1teSB2YWx1 ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBf NDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1Ag Q09MVU1OIGQzOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBz YWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5 JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBB UlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3Bs ZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2Fs ZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElU SU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkg dGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAg ICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAg MTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YK KyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVz cGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFy dGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2Rh dGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwK KyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScp LAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAn UGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBP UkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNh bGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBzYWxl c19hcHJfYWxsIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNf ZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX2Zl YjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAx ODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgICA5IHwgTXVs bGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19qYW4y MDIyIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfbWFyMjAy MiB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAg ICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAg fCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAw NS0wNC0yMDIyCisoMTQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJ VCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXBy MjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0 LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcy MDIyLTA1LTAxJykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVz X3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRhYmxl b2lkICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAg ICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAg fCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAw MS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19mZWIy MDIyICAgICAgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisg c2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwg ICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMt MDgtMjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11bGxl ciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbWFyMjAy MiAgICAgICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgIHwgICAgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorIHNh bGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8wMV8xMCB8ICAg ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyBzYWxlc19hcHIyMDIyXzEwXzIwIHwgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjJf MjBfMzAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK Ky0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZp YyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5U LAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5n JywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7Cist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0 aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3Zl cmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3JkIgor TElORSAzOiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycsICdIZWxzaW5raScuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRp b24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0 b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJz YXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0 aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0 aW9uICJzYWxlc19jZW50cmFsIgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3Bs aXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxo aScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZB TFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBh cnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNw bGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBo YXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vh c3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIg Y2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5v dCBoYXZlCitMSU5FIDI6IC4uLnN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlv cmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3 IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9u IGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElP TiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJ TiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywg J1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzMiBERUZBVUxUKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVG QVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitMSU5FIDU6 ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAg ICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IHR3byBzcGVj aWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0 aXRpb25zIGRvIG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBo YXMuCistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNw bGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxl c3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxl c19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUg REFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVs c2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdE ZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CistLSBFUlJPUjogIG5ldyBw YXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBk b2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywg J0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5V TEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25z IGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZ b3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJ TiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNh bGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7 CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQg c3BsaXQgcGFydGl0aW9uIGRvZXMKKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBzaG91 bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAg IFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAg IFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBERUZBVUxUIHBh cnRpdGlvbiBzaG91bGQgYmUgb25lCitMSU5FIDY6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxl c19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJU SVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3Bl cnNvbl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxl c19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUg REFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVgg c2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0 cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVz X3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywg J0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNF UlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcn LCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlv cmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQ ZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJz YXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAnTGlz Ym9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0Jl cmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdP c2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAgICAn VmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAgICAg J09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAg ICdIZWxzaW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywg ICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywg ICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScs ICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8n LCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVq aW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2Vu dHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFi bGVvaWQsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAg IHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgc2FsZXNf bm9yZCAgICB8ICAgICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICAgICB8IE9zbG8gICAg ICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorIHNhbGVzX25vcmQgICAgfCAg ICAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAg ICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAg MTAgfCBIYWxkZXIgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgICA4MDAg fCAwMy0wMi0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8IE5ldyBZb3JrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAy MgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAg fCBMaXNib24gICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyBzYWxlc193 ZXN0ICAgIHwgICAgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgICAgIHwgTWFkcmlkICAg ICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAg ICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAg ICAgICAgOTUwIHwgMDMtMDUtMjAyMgorIHNhbGVzX2Vhc3QgICAgfCAgICAgICAgICAgICAg MSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAgICAgICB8ICAgICAgICAgMTAwMCB8 IDAzLTAxLTIwMjIKKyBzYWxlc19lYXN0ICAgIHwgICAgICAgICAgICAgIDggfCBMaSAgICAg ICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIy Cisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8 IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVzX2Nl bnRyYWwgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAg ICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xMC0yMDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgIDEz IHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwg MDMtMDgtMjAyMgorKDE0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3Rpbmcg aW5kZXhlcyBhZnRlciBzcGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX3NlcXNjYW4g PSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfY2VudHJh bCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19jZW50cmFsX3NhbGVzX3N0YXRlX2lkeCBv biBzYWxlc19jZW50cmFsCisgICBJbmRleCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9 ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19jZW50 cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBz YWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIK KyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAg ICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNh dyc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg SW5kZXggU2NhbiB1c2luZyBzYWxlc19jZW50cmFsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxl c19jZW50cmFsIHNhbGVzX2xpc3QKKyAgIEluZGV4IENvbmQ6ICgoc2FsZXNfc3RhdGUpOjp0 ZXh0ID0gJ1dhcnNhdyc6OnRleHQpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAy MgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwg ICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9 ICdJdmFub3YnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgSW5kZXgg U2NhbiB1c2luZyBzYWxlc19lYXN0X3NhbGVzcGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2Vh c3Qgc2FsZXNfbGlzdF8xCisgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25h bWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBz YWxlc19jZW50cmFsX3NhbGVzcGVyc29uX25hbWVfaWR4IG9uIHNhbGVzX2NlbnRyYWwgc2Fs ZXNfbGlzdF8yCisgICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0 ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBzYWxl c19ub3JkIHNhbGVzX2xpc3RfMworICAgICAgICAgUmVjaGVjayBDb25kOiAoKHNhbGVzcGVy c29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gc2FsZXNfbm9yZF9zYWxlc3BlcnNvbl9uYW1lX2lkeAorICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFu b3YnOjp0ZXh0KQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfd2VzdF9zYWxlc3Bl cnNvbl9uYW1lX2lkeCBvbiBzYWxlc193ZXN0IHNhbGVzX2xpc3RfNAorICAgICAgICAgSW5k ZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQor ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gc2FsZXNfb3RoZXJzIHNhbGVzX2xpc3RfNQor ICAgICAgICAgUmVjaGVjayBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2 YW5vdic6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gc2FsZXNf b3RoZXJzX3NhbGVzcGVyc29uX25hbWVfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisoMTUgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUg PSAnSXZhbm92JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxl c19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAg ICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0IGZvcjoK Ky0tICAgKiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3Bh Y2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25z IGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQs IHNhbGVzcGVyc29uX2lkOworICAgICAgIHRhYmxlb2lkICAgICAgICB8IHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19vdGhlcnMgICAgICAg ICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAg fCAwMS0zMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDMg fCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVz X290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAg ICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDkgfCBNdWxs ZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX290aGVy cyAgICAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy Cisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorIHNhbGVzX21hcjIwMjJfMWRl Y2FkZSB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3 NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2Fs ZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSB8 ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAy LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNfYXBy MjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAg ICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNf cmFuZ2U7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFy dGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAg ICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1h bmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyks CisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKSwKKyAgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwg ICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcn KSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1 LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf YWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVy cyBERUZBVUxUKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19y YW5nZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVv aWQgICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIHNhbGVzX21hcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFk ZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAz NzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAg IDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNh bGVzX2ZlYjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUg fCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX290 aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAg ICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAg IDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAg ICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisg c2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAg ICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAzLTE5LTIwMjIKKygxMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0K Ky0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiB0byBERUZBVUxUIHBh cnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzLgor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQt MTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgx MCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAg ICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1Qg dGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVv aWQsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAgMSB8 IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNf amFuMjAyMiB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTMgfCBH YW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX2Fw cjIwMjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIw MDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIy MDIyIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfZmViMjAy MiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYgfCBQb2lyb3Qg ICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIwMjIg fCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAw Mi0yMy0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19vdGhlcnMgIHwg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAg ICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRy eSB0byBTUExJVCBwYXJ0aXRpb24gb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUgVEFC TEUgdDEoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QgKHQpOworQ1JFQVRFIFRB QkxFIHQxcGEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgSU4gKCdBJyk7CitDUkVBVEUg VEFCTEUgdDIgKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAodCk7CistLSBF UlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24g InQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQxcGEgSU5UTworICAgKFBB UlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicpLAorICAgIFBBUlRJ VElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsKK0VSUk9SOiAgcmVs YXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAidDIiCitISU5U OiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgY2FuIG9ubHkgc3BsaXQgcGFy dGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCitEUk9QIFRBQkxFIHQyOworRFJP UCBUQUJMRSB0MTsKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIHRlbXBvcmFy eSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp LCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19j YXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBp LmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgyKSB8IHQKKygxIHJvdykKKworLS0gRVJST1I6ICBjYW5u b3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3Jh cnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIg SU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwK KyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJS T1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBv ZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAudHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3RlbXAudHBfMV8yIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpKTsKKy0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFy eS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAg V0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xh c3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVs cGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0KKyB0cF8wXzEgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSB8 IHQKKyB0cF8xXzIgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSB8IHQKKygyIHJvd3Mp CisKK0RST1AgVEFCTEUgdDsKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0 IHBhcmVudCdzIHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtF WSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElP TiBCWSBSQU5HRSAoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRB QkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJ T04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0 YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAn dHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9z Y2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVzcGFjZTsKKyB0YWJsZW5hbWUg fCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg dCAgICAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMSAgICB8IHJlZ3Jlc3NfdGJs c3BhY2UKKyB0cF8xXzIgICAgfCByZWdyZXNzX3RibHNwYWNlCisoMyByb3dzKQorCitTRUxF Q1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisg IFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hl bWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFt ZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICBpbmRleG5hbWUgIHwg ICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgdCAgICAgICAgIHwgdF9wa2V5ICAgICAgfCByZWdyZXNzX3RibHNwYWNl CisgdHBfMF8xICAgIHwgdHBfMF8xX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMV8y ICAgIHwgdHBfMV8yX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisoMyByb3dzKQorCitEUk9Q IFRBQkxFIHQ7CistLSBDaGVjayBuZXcgcGFydGl0aW9ucyBpbmhlcml0cyBwYXJlbnQncyB0 YWJsZSBhY2Nlc3MgbWV0aG9kCitDUkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3Bs aXRfaGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0 aW9uX3NwbGl0X2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9J TiBwZ19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVn Y2xhc3MsICd0cF8wXzEnOjpyZWdjbGFzcywgJ3RwXzFfMic6OnJlZ2NsYXNzKQorT1JERVIg QlkgYy5yZWxuYW1lOworIHJlbG5hbWUgfCAgICAgICAgYW1uYW1lICAgICAgICAKKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICB8IHBhcnRpdGlvbl9zcGxp dF9oZWFwCisgdHBfMF8xICB8IHBhcnRpdGlvbl9zcGxpdF9oZWFwCisgdHBfMV8yICB8IHBh cnRpdGlvbl9zcGxpdF9oZWFwCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHQ7CitEUk9QIEFD Q0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXA7CistLSBUZXN0IHBlcm1pc3Npb24g Y2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRo ZQorLS0gdGhlIHBhcnRpdGlvbiB0byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitDUkVBVEUg Uk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9u X3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5U IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgyKTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsKK0VSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0CitSRVNFVCBTRVNTSU9O IEFVVEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8y IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSks CisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK0VS Uk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzIKK1JFU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHRwXzBfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBf MiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp LAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitS RVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxM IE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworRFJPUCBST0xFIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2JvYjsKKy0tIFNwbGl0IHBhcnRpdGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJs ZSB3aGVuIG9uZSBvZiB0aGUgcGFydGl0aW9ucyBhZnRlcgorLS0gc3BsaXQgaGFzIHRoZSBz YW1lIG5hbWUgYXMgdGhlIHBhcnRpdGlvbiBiZWluZyBzcGxpdAorQ1JFQVRFIFRFTVAgVEFC TEUgdCAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEVNUCBUQUJM RSB0cF8wIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxU RVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMCBJTlRPCisgIChQQVJUSVRJT04gcGdf dGVtcC50cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBn X3RlbXAudHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7 CistLSBDaGVjayBkZWZhdWx0cyBhbmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMK K0NSRUFURSBUQUJMRSB0X2JpZ2ludCAoCisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxU ICgzKzEwKSwKKyAgaiBpbnQgREVGQVVMVCAxMDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdB WVMgQVMgKGIrMTApIFNUT1JFRAorKQorUEFSVElUSU9OIEJZIFJBTkdFIChiKTsKK0NSRUFU RSBUQUJMRSB0X2JpZ2ludF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0X2JpZ2ludCBERUZBVUxU OworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBiZWZvcmUgU1BMSVQgUEFSVElUSU9O CitcZCsgdF9iaWdpbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0 aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludCIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBE ZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBs YWluICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3Jl ZCB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChi KQorUGFydGl0aW9uczogdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUCisKK1xkKyB0X2JpZ2lu dF9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAi cGFydGl0aW9uX3NwbGl0X3NjaGVtYS50X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBU eXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQg ICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxh aW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxU CitObyBwYXJ0aXRpb24gY29uc3RyYWludAorCitBTFRFUiBUQUJMRSB0X2JpZ2ludCBTUExJ VCBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBJTlRPCisgIChQQVJUSVRJT04gdF9iaWdp bnRfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApLAorICAgUEFSVElUSU9OIHRf YmlnaW50X2RlZmF1bHQgREVGQVVMVCk7CistLSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRz IGFmdGVyIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50X2RlZmF1bHQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnRfYmlnaW50X2RlZmF1bHQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0 b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIg ICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisg aSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAK KyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRl ZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IERFRkFVTFQKK1BhcnRpdGlvbiBjb25zdHJh aW50OiAoTk9UICgoYiBJUyBOT1QgTlVMTCkgQU5EICgoYiA+PSAnMCc6OmJpZ2ludCkgQU5E IChiIDwgJzEwJzo6YmlnaW50KSkpKQorCitcZCsgdF9iaWdpbnRfMDFfMTAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3Nj aGVtYS50X2JpZ2ludF8wMV8xMCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3Rv cmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAg ICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBp ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAzICsgMTAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor IGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDEwMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwg CisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVk IGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgRk9SIFZBTFVFUyBGUk9NICgnMCcpIFRPICgn MTAnKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYiBJUyBOT1QgTlVMTCkgQU5EIChiID49 ICcwJzo6YmlnaW50KSBBTkQgKGIgPCAnMTAnOjpiaWdpbnQpKQorCitEUk9QIFRBQkxFIHRf YmlnaW50OworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIHRo ZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRF IFRBQkxFIHRwXzBfMihpIGludCk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitB TFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8yIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDIpOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl JzoKK1xkdCB0cF8wXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0 YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAg ICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMF8yIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZQorKDEgcm93KQorCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZSc6CitcZHQgdHBfMF8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg dGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAg ICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzBfMSB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2UKKygxIHJvdykKKworXGR0IHRwXzFfMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAgICAg fCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8xXzIgfCB0 YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisKK0RST1Ag VEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEg RlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0aXRp b25zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0gcGFy dGl0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dS QU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMTBfMjAgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVT ICgxMSksICgxNik7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBydW5fbWUoaW50ZWdl cikgUkVUVVJOUyBpbnRlZ2VyIEFTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBh cmUgcnVubmluZyBtZSBhcyAlJywgQ1VSUkVOVF9VU0VSOworICBSRVRVUk4gJDE7CitFTkQK KyQkIExBTkdVQUdFIFBMUEdTUUwgSU1NVVRBQkxFOworLS0gT3duZXIgaXMgJ3JlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBPTiB0IChydW5fbWUoaSkp OworTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlCitOT1RJQ0U6ICB5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2UKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKy0tIE93 bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQUxURVIg VEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMTBfMjAgSU5UTworICAoUEFSVElUSU9OIHRw XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisgICBQQVJUSVRJT04gdHBf MTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitOT1RJQ0U6ICB5b3UgYXJl IHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK05PVElDRTog IHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQor RFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElPTiBydW5fbWUoaW50ZWdlcik7CitSRVZPS0Ug QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFC TEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxFIHRwMSBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDAp OworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1P RFVMVVMgMiwgUkVNQUlOREVSIDEpOworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1w YXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgc3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRI IChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSwKKyAgIFBBUlRJVElPTiB0cDFfMiBGT1IgVkFM VUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDIpKTsKK0VSUk9SOiAgcGFydGl0aW9u IG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CistLSBFUlJPUjog IGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBh cnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQ QVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAw KSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQg bGVhc3QgdHdvIHBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDsKKy0tIEFkZGl0aW9uYWwgdGVz dHMgZm9yIGVycm9yIG1lc3NhZ2VzCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1v dW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIy IiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAuLi4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworLS0gVGVzdCBmb3Igc3BsaXQgcGFydGl0aW9uIHByb3Bl cnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVOVCBpcyBlbXB0 eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBhcnRpdGlv bmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3IgcGFy dGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhl IHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFi bGUKKy0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRp b25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQg U1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcs CisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAx JykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENP TFVNTiB0LmkgSVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRwX3gKKyhpIGludCBOT1QgTlVM TCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfeCcsCisgYiBi aWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RP UkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDIpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfeC5pIElTICd0cF94Lmkn OworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJv bSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9zdGF0IChERVBFTkRFTkNJRVMpIG9uIGks IGIgZnJvbSB0cF94OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sg Q0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNr MSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNU UkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworSU5TRVJU IElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJTlNFUlQgSU5U TyB0cF94KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VB R0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dl ciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdW WzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7Cisk Qk9EWSQ7CitDUkVBVEUgVFJJR0dFUiB0X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVG T1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJR0dFUiB0cF94X2JlZm9yZV9pbnNlcnRf cm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVworICBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94Jyk7CitcZCsgdHBfeAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFy dGl0aW9uX3NwbGl0X3NjaGVtYS50cF94IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAg ICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IHRwX3guaQorIHQgICAgICB8IHRleHQg ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3RwX3gnOjp0ZXh0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgbWFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGIg ICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAg ICAgICB8IAorIGQgICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdl bmVyYXRlZCBhbHdheXMgYXMgKCcwMi0wMi0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4g ICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwp IEFORCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50 czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENI RUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4g MCkgTk9UIFZBTElECitTdGF0aXN0aWNzIG9iamVjdHM6CisgICAgInBhcnRpdGlvbl9zcGxp dF9zY2hlbWEudHBfeF9zdGF0IiAoZGVwZW5kZW5jaWVzKSBPTiBpLCBiIEZST00gdHBfeAor Tm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRwX3hfaV9ub3RfbnVsbCIgTk9UIE5VTEwg ImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQp IE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2Vy IEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0 cmlnZ2VyX2Z1bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKyAgICB0cF94X2JlZm9yZV9pbnNl cnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBFWEVD VVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKQorCitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF94IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgyKSk7CitcZCsgdHBfeAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudHBf eCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAg ICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwg U3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor IGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAg ICAgICAgICAgfCAKKyB0ICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4 dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIGQgICAgICB8IGRhdGUg ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKCcwMS0w MS0yMDIyJzo6ZGF0ZSkgc3RvcmVkIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1Bh cnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKQorUGFydGl0aW9uIGNv bnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAxKSBBTkQg KGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hF Q0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNF RAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorTm90LW51bGwg Y29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0 ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAor VHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNF UlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0 aW9uKCd0JyksIE9OIFRBQkxFIHQKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBWQUxVRVMo MSwgREVGQVVMVCwgMyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHQpIGNhbGxlZDogYWN0aW9uID0g SU5TRVJULCB3aGVuID0gQkVGT1JFLCBsZXZlbCA9IFJPVworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAgIHQg ICAgICAgfCBiIHwgICAgIGQgICAgICAKKy0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLSstLS0tLS0tLS0tLS0KKyB0cF8wXzEgICB8IDAgfCBkZWZhdWx0X3RwX3ggfCAxIHwg MDEtMDEtMjAyMgorIHRwX3ggICAgIHwgMSB8IGRlZmF1bHRfdHBfeCB8IDIgfCAwMS0wMS0y MDIyCisgdHBfeCAgICAgfCAxIHwgZGVmYXVsdF90ICAgIHwgMyB8IDAxLTAxLTIwMjIKKygz IHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlv bigpOworLS0gVGVzdCBmb3IgcmVjb21wdXRhdGlvbiBvZiBzdG9yZWQgZ2VuZXJhdGVkIGNv bHVtbnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2VuZXJhdGVkIGFs d2F5cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NS RUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIGNjIENIRUNLKHRhYmxlb2lk IDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKKy0tIFNo b3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9 MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRo IGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJ TiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0t LQorICAgICAxCisoMSByb3cpCisKKy0tICJ0YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVy YXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJl Y29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBf MiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp LAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7Cist LSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0 aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciBy b3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0 YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CitSRVNFVCBzZWFy Y2hfcGF0aDsKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworRFJP UCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQppbmRleCAyZDNmNTBhNDNiLi4wZmI1M2Q0ODZkIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFuY2Fj aGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUg Y29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhp bmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4K ICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9qb2luIHBh cnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25f YWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9u IGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0OiBw YXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlv bl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVn YXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXBy ZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJp Z2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkg d2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX3NwbGl0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5kZmQ1NTM3YjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGFydGl0aW9uX3NwbGl0LnNxbApAQCAtMCwwICsxLDExNDkgQEAKKy0tCistLSBQQVJU SVRJT05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJ VElPTiAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0 X3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQg c2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CisKKy0tCist LSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBj b2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50 LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxl c19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor LS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBh bHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBF UlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRp b24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVF UyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBlbXB0eSByYW5n ZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS1FUlJPUjogIGxpc3Qgb2Ygc3BsaXQg cGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0xMC0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKKworLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVh ZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFt ZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMg d2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBh bHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJS T1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJP UjogICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxl CitBTFRFUiBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJP UjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVx dWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA2LTAxJykpOworCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0 aW9uICJzYWxlc19tYXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZmVi MjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gVGVzdHMgZm9y IHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdp dGhvdXQgREVGQVVMVCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFD SCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzOworCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLSBDaGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhlIHNlYXJjaCBwYXRo CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVibGljOwor QUxURVIgVEFCTEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZQorU1BMSVQg UEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworCistLQorLS0gQWRkIHJv d3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycs ICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOwor CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIEFkZCBzcGxpdCBw YXJ0aXRpb24sIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gU3BsaXQgcGFy dGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBwYXJ0aXRp b25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5nZQorCitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAn MjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyks CisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0y OCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwg J1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAz NzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5n ZSBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBD QVNDQURFOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlv biBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBE RUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBz YWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdB WVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBM UEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2Rh eTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIo MzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00g KDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFu X2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIy LCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAo TUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2Rh eSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjIn LCAyMDIxLCAxMiwgOCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5h Z2VyMScsIDIwMjIsIDIsIDQpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgn TWFuYWdlcjMnLCAyMDIyLCAyLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAor ICAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAx KTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JE RVIgQlkgdGFibGVvaWQsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7CisK K0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2phbl9mZWIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworCitJ TlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwg MTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheTsKKworLS1FUlJPUjogIHJlbGF0aW9uICJz YWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNf amFuX2ZlYjIwMjI7CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQor LS0gVGVzdDogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb247IHVzZSBhbiBpbmRleCBvbiBwYXJ0 aXRpb24ga2V5OyBjaGVjayBpbmRleCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxl c19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDIt MTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAg MjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4 LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywg ICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAg KDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIw MjItMDUtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBG Uk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1l OworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VU IGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gc2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOwor U0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0w MS0wMSc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAy MiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxl c19tYXIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitFWFBMQUlOIChD T1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRl ID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEt MDEnOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworU0VMRUNUICogRlJPTSBwZ19pbmRl eGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9 ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CitTRUxFQ1Qg KiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFu ZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4 bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2Fs ZXNfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScg T1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRh YmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9z cGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5n IERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIHNhbGVzX2Vycm9yIGludGVy c2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAgY2Fu IG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAy MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1 cHBlciBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNh bGVzX2ZlYjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIw MSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVT IEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVy c2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGNh biBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjEx MjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAo ZXhhY3RseSB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8g cGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVz X2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJy b3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIy MDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBFUlJP UjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVz ZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAg UEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8g KDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworCistLSBubyBlcnJvcjogYm91bmRzIG9m IHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfZmVi MjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3Ig Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMw MSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29u X2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVxdWFs IHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf ZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZS T00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJy b3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIy MDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGgg Q0hFQ0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxl CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoCitzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShz YWxlc3BlcnNvbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQg PiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1l LCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2Zl Yl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTsKKworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBXZSBzaG91bGQgc2VlIHRoZSBz YW1lIENPTlNUUkFJTlRzIGFzIG9uIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBwYXJ0aXRpb24K K1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJP TSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIwMjInOjpyZWdj bGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u cmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFt ZTs7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19hcHIyMDIyJzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOzsKKworLS0gRVJST1I6ICBuZXcgcm93 IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworLS0gRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTExJyk7CistLSBv aworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEn KTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxl c3Blb3BsZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9uIHBh cnRpdGlvbmVkIHRhYmxlIGluIGNhc2Ugb2YgZXhpc3RpbmcgRk9SRUlHTiBLRVkgcmVmZXJl bmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShz YWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRB QkxFIHNhbGVzIChzYWxlc3BlcnNvbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShz YWxlc3BlcnNvbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSk7CisK K0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3Bs ZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAgJ1Bv aXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92JyksCisgICgyMCwgJ1Nt aXJub2ZmJyksCisgICgzMCwgJ0ZvcmQnKTsKKworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVT CisgICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpLAorICAoMSwgIDExMCwgJzIwMjItMDMtMDIn KSwKKyAgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyksCisgICgxMCwgOTAsICAnMjAyMi0wMy0w MycpLAorICAoMTksIDIwMCwgJzIwMjItMDMtMDQnKSwKKyAgKDIwLCA1MCwgICcyMDIyLTAz LTEyJyksCisgICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpLAorICAoMzAsIDMwLCAgJzIwMjIt MDMtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVv cGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUg c2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAo UEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjAp IFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZS T00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworLS0g RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VS VCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKy0tIG9rCitJ TlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CisKK0RS T1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FE RTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJs ZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVy c29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5T RVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5T IHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlT RSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2 ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJF VFVSTiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3Bs ZV9hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAg ICBPTiBzYWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUg UFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKwor Q1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisg ICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cK KyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVz cGVvcGxlJyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3Rh dGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsK Ky0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNh bGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCks CisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBU TyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9N ICgzMCkgVE8gKDQwKSk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93 ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdT bWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJs ZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FE RTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0tCist LSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBz cGxpdCBwYXJ0aXRpb24gY29sdW1uIGlzIGlkZW50aXR5IGNvbHVtbiwgY29sdW1ucyBvZiBu ZXcgcGFydGl0aW9ucyBhcmUgaWRlbnRpdHkgY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFT IElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNh bGVzcGVvcGxlMV8yIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRpdHkgY29s dW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMl81KHNhbGVzcGVyc29uX2lkIElOVCBO T1QgTlVMTCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IEZPUiBWQUxVRVMg RlJPTSAoMikgVE8gKDUpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJz b25fbmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7CisKK1NFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJF IGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9p ZCBPUkRFUiBCWSBhdHRudW07CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdl bmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxp ZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwor LS0gU3BsaXQgcGFydGl0aW9uIGhhcyBpZGVudGl0eSBjb2x1bW46CitTRUxFQ1QgYXR0bmFt ZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBh dHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2NsYXNzOjpv aWQgT1JERVIgQlkgYXR0bnVtOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxl Ml8zIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVzcGVv cGxlM180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVz cGVvcGxlNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKKworSU5TRVJUIElOVE8g c2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQn KTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9S REVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKworU0VMRUNUIGF0dG5hbWUsIGF0 dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVt ID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVk IEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3Nh bGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CistLSBOZXcg cGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0 ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAn c2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRl IFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUg Q0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQg Y29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29s dW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBz YWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBf NDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygpLCAnSXZhbm92 JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsK KworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Bl b3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgx LCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CisKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZS T00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZB TFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7 CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNw bGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBB VFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2Fs ZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNh bGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAn TWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUw MCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAg MTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5 LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywg ICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIy LTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAg KDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIg VEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0 LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQsIHNh bGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkg TElTVCBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMg Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QK KyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwK KyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVz X2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVy bGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworLS0gRVJS T1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5v dGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnSGVsc2lua2knKSwKKyAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYn KSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3Zl cmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAo J0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnTGlzYm9uJywg J0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fu bm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBo YXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAg IFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVy bGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2Vz dCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2Vz IG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xp c2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRp dm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5 IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNf YWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIg REVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IHR3 byBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5l dyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRp dGlvbiBoYXMuCistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0 aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QK KyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwK KyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVz X2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVy bGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKworLS0gRVJS T1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBw YXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04g c2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyks CisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5v dCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywg J01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Nl bnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxMKSk7CisKKy0t IEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFs IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMy IERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBC WSBMSVNUIHBhcnRpdGlvbmluZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgU0VSSUFMLAorIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisg c2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElT VCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNv bl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1l KTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19s aXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19u b3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScs ICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9u JywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywg J0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAn MjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwg JzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAs ICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUw LCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1 MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEw MDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAx MjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAg MTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdPc2xvJywgICAgICAgICAg IDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnSGVsc2lua2knLCAgICAg ICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAg ICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2JywgICAgICAg ICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAg ICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAg ICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0 IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywg J1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCitTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZCwgc2FsZXNw ZXJzb25faWQ7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcyBhZnRl ciBzcGxpdHRpbmcgcGFydGl0aW9uCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdIRVJFIHNh bGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hF UkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVz cGVyc29uX25hbWUgPSAnSXZhbm92JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVS RSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2Fu OworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAg KiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJl dHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQ TElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAg KDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9m ZicsIDUwMCwgICcyMDIyLTAyLTA5JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIw MjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAor ICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJv dCcsICAgMTUwLCAgJzIwMjItMDItMDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyks CisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFs ZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwg ICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdT bWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIy MDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w Mi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworCitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQs IHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0g VGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRp dGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVy IG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAz ODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAz LTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKKworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4y MDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w MS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRF UiBCWSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8g REVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3ZWVu IGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEn KSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdG b3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAx ODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDEx LCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0w NS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFu Z2UgT1JERVIgQlkgdGFibGVvaWQsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworCistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVy IHRhYmxlLgorLS0KK0NSRUFURSBUQUJMRSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04g QlkgTElTVCAodCk7CitDUkVBVEUgVEFCTEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZB TFVFUyBJTiAoJ0EnKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElU SU9OIEJZIFJBTkdFICh0KTsKKworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90 IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBB UlRJVElPTiB0MXBhIElOVE8KKyAgIChQQVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAo J0EnKSBUTyAoJ0InKSwKKyAgICBQQVJUSVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0In KSBUTyAoJ0MnKSk7CisKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworCistLQor LS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQ1JF QVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMik7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3Rl bmNlCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0 Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBh cnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz czo6cGdfY2F0YWxvZy50ZXh0OworCistLSBFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJt YW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIK K0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJ T04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CisKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gcGdfdGVtcC50cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gcGdfdGVtcC50cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworCistLSBQYXJ0aXRpb25zIHNob3Vs ZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJz aXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19p bmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQg PSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayB0 aGUgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdCBwYXJlbnQncyB0YWJsZXNwYWNlCitDUkVBVEUg VEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcworICBX SEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUs IHRhYmxlc3BhY2U7CitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2Ug RlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywg J3RwXzFfMicpIEFORCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisg IE9SREVSIEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworRFJPUCBUQUJM RSB0OworCistLSBDaGVjayBuZXcgcGFydGl0aW9ucyBpbmhlcml0cyBwYXJlbnQncyB0YWJs ZSBhY2Nlc3MgbWV0aG9kCitDUkVBVEUgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRf aGVhcCBUWVBFIFRBQkxFIEhBTkRMRVIgaGVhcF90YWJsZWFtX2hhbmRsZXI7CitDUkVBVEUg VEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgVVNJTkcgcGFydGl0aW9u X3NwbGl0X2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04g dHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp KTsKK1NFTEVDVCBjLnJlbG5hbWUsIGEuYW1uYW1lCitGUk9NIHBnX2NsYXNzIGMgSk9JTiBw Z19hbSBhIE9OIGMucmVsYW0gPSBhLm9pZAorV0hFUkUgYy5vaWQgSU4gKCd0Jzo6cmVnY2xh c3MsICd0cF8wXzEnOjpyZWdjbGFzcywgJ3RwXzFfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkg Yy5yZWxuYW1lOworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlv bl9zcGxpdF9oZWFwOworCistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIg bmVlZHMgdG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZQorLS0gdGhlIHBhcnRpdGlv biB0byBzcGxpdCB0byBkbyB0aGUgc3BsaXQuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2JvYjsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CisK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitD UkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRP CisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo MikpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0cF8w XzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwor CitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitSRVZPS0UgQUxM IE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl OworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKworLS0gU3BsaXQg cGFydGl0aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxlIHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRp b25zIGFmdGVyCistLSBzcGxpdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcGFydGl0aW9u IGJlaW5nIHNwbGl0CitDUkVBVEUgVEVNUCBUQUJMRSB0IChhIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChhKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzAgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wIElOVE8KKyAgKFBBUlRJVElPTiBwZ190ZW1wLnRwXzAgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gcGdfdGVtcC50cF8xIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKK0RST1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgZGVmYXVsdHMgYW5k IGNvbnN0cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVBVEUgVEFCTEUgdF9iaWdpbnQg KAorICBiIGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysxMCksCisgIGogaW50IERFRkFV TFQgMTAxLAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiKzEwKSBTVE9SRUQKKykK K1BBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFCTEUgdF9iaWdpbnRfZGVmYXVs dCBQQVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0tIFNob3cgZGVmYXVsdHMvY29u c3RyYWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50CitcZCsgdF9i aWdpbnRfZGVmYXVsdAorQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFSVElUSU9OIHRf YmlnaW50X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAxXzEwIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0 IERFRkFVTFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRlciBTUExJVCBQ QVJUSVRJT04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CitcZCsgdF9iaWdpbnRfMDFfMTAKK0RS T1AgVEFCTEUgdF9iaWdpbnQ7CisKKworLS0gVGVzdDogb3duZXIgb2YgbmV3IHBhcnRpdGlv bnMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG93bmVyIG9mIHNwbGl0IHBhcnRpdGlvbgorQ1JF QVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2U7CisKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdF IChpKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIoaSBpbnQpOworUkVTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBf MF8yIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCistLSBPd25lciBpcyAncmVncmVz c19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMgorCitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMikpOworCistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8wXzEKK1xkdCB0cF8xXzIKKworRFJPUCBU QUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBG Uk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlOworCisKKy0tIFRlc3Q6IGluZGV4IG9mIG5ldyBwYXJ0 aXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggc2FtZSBvd25lciBhcyBzcGxpdAorLS0g cGFydGl0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xMF8yMCBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworSU5TRVJUIElOVE8gdCBW QUxVRVMgKDExKSwgKDE2KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJ1bl9tZShp bnRlZ2VyKSBSRVRVUk5TIGludGVnZXIgQVMgJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAn eW91IGFyZSBydW5uaW5nIG1lIGFzICUnLCBDVVJSRU5UX1VTRVI7CisgIFJFVFVSTiAkMTsK K0VORAorJCQgTEFOR1VBR0UgUExQR1NRTCBJTU1VVEFCTEU7CisKKy0tIE93bmVyIGlzICdy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVu X21lKGkpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworLS0gT3duZXIgc2hv dWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitBTFRFUiBUQUJMRSB0 IFNQTElUIFBBUlRJVElPTiB0cF8xMF8yMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMTBfMTUg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKyAgIFBBUlRJVElPTiB0cF8xNV8yMCBG T1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKKworRFJPUCBUQUJMRSB0OworRFJPUCBG VU5DVElPTiBydW5fbWUoaW50ZWdlcik7CisKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworLS0gVGVzdCBm b3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJU SVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NSRUFURSBUQUJMRSB0 cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRF UiAxKTsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJs ZSBjYW5ub3QgYmUgc3BsaXQKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJ TlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJF TUFJTkRFUiAwKSwKKyAgIFBBUlRJVElPTiB0cDFfMiBGT1IgVkFMVUVTIFdJVEggKE1PRFVM VVMgNCwgUkVNQUlOREVSIDIpKTsKKworLS0gRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRp b25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zCitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBW QUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOworCitEUk9QIFRBQkxFIHQ7 CisKKworLS0gQWRkaXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1l IHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCisKKy0tIFRlc3QgZm9yIHNwbGl0IHBhcnRp dGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBTVEFUSVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1F TlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMgYXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBTVE9SQUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JB R0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlO VFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgZm9yIHBhcnRp dGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBhcyBUUklHR0VSUyBm b3IgcGFydGl0aW9uZWQgdGFibGUKKworQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVM TCwKKyB0IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQg J2RlZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMg KCcyMDIyLTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitD T01NRU5UIE9OIENPTFVNTiB0LmkgSVMgJ3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBfeAor KGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVs dF90cF94JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIw MjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRw X3ggRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5UIE9OIENPTFVNTiB0cF94 LmkgSVMgJ3RwX3guaSc7CisKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5D SUVTKSBvbiBpLCBiIGZyb20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRwX3hfc3RhdCAoREVQ RU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfeDsKKworQUxURVIgVEFCTEUgdCBBREQgQ09O U1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENP TlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRDsKK0FMVEVS IFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBDSEVDSyAoYiA+IDApIE5PVCBW QUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX25uIE5PVCBOVUxMIGIg Tk9UIFZBTElEOworCitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygwLCBERUZB VUxULCAxKTsKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQs IDIpOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkg UkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgor ICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0g JSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOwor ICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiB0X2JlZm9y ZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0IEZPUiBFQUNIIFJPVwor ICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyk7CitDUkVBVEUgVFJJ R0dFUiB0cF94X2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0 cF94IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9u KCd0cF94Jyk7CisKK1xkKyB0cF94CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF94IElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7Citc ZCsgdHBfeAorCitJTlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAz KTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0IE9SREVSIEJZIGI7CitE Uk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKworCist LSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucy4K K0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFz ICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRB QkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsK K0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIz NDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91bGQg YmUgMSBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMg dGhlIHNhbWUgYXMKKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEu CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNF TEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1u IChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSBy ZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJVCBQ QVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpKTsKKworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRp ZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24g aWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBX SEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBp ID0gMSk7CisKK0RST1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hfcGF0aDsKKworLS0K K0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg YTEzZTgxNjI4OS4uMTJiZmEzMGM2YyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTI3NzcsNiArMjc3Nyw3IEBAIFNpbXBsZVN0YXRzCiBTaW1wbGVTdHJpbmdMaXN0CiBT aW1wbGVTdHJpbmdMaXN0Q2VsbAogU2luZ2xlQm91bmRTb3J0SXRlbQorU2luZ2xlUGFydGl0 aW9uU3BlYwogU2l6ZQogU2tpcFBhZ2VzCiBTa2lwU3VwcG9ydApAQCAtMjg0Myw2ICsyODQ0 LDcgQEAgU3BlY2lhbEpvaW5JbmZvCiBTcGluRGVsYXlTdGF0dXMKIFNwbGl0SW50ZXJ2YWwK IFNwbGl0TFIKK1NwbGl0UGFydGl0aW9uQ29udGV4dAogU3BsaXRQYWdlTGF5b3V0CiBTcGxp dFBvaW50CiBTcGxpdFRleHRPdXRwdXREYXRhCi0tIAoyLjQwLjEud2luZG93cy4xCgo= --------------vY6xP84H0ZqrzNzrZVQC16EN--