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 1qks53-00HEht-Gx for pgsql-hackers@arkaria.postgresql.org; Mon, 25 Sep 2023 20:21:22 +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 1qks52-004jKQ-7G for pgsql-hackers@arkaria.postgresql.org; Mon, 25 Sep 2023 20:21:20 +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 1qks50-004jJm-N6 for pgsql-hackers@lists.postgresql.org; Mon, 25 Sep 2023 20:21:19 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qks4m-006c5m-Vv for pgsql-hackers@lists.postgresql.org; Mon, 25 Sep 2023 20:21:17 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-692c02adeefso3006512b3a.3 for ; Mon, 25 Sep 2023 13:21:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1695673264; x=1696278064; darn=lists.postgresql.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=asJKiyNCqI41WFSEtAXZAZHVElDhslgHFeCeI+QLojI=; b=YE/IFhSXnrXF4jNcy/RH3TAvcQ9uZkox44i1cNCByv1f+FTzv8O+Jr/hLvtYgxiECP TCMBR7ZkDLp26FCNb6vkioy3xJKjx9Vfzjr+ftR2OLmQ6lmFOYcDbBQeM5bsVTUnIOOx y8mk+IrdWelV9wrZdyu1AjzevZUWKtCsJfiPIzHG/Sl/38fXlP2megoNMvOnHzNNkxO6 nOzEcHklpk440zsGqHfvAe49o+ciUhcW3IAJY2l8IZDweyd7lJIrUK0INYxn4WnGPNmx FKIDM6en8cvqUQ0z64qOCngB59CQIBNOoCpMLF+IYG+5jn2pAg3cSwLYrOSeZ5vVGnQ2 obtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695673264; x=1696278064; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=asJKiyNCqI41WFSEtAXZAZHVElDhslgHFeCeI+QLojI=; b=tRjLd5W47vZTx4yQrDN0HEq7WCMsm599wE8i5N+owH+k7MZ7/4J1SI2Tg0rIC2r9kc Qeetkqxm0hr8lPcrPuyHCFudhTtO7xXtmxWIidYu/LhRRqC9+5pqY5OhOEaRxrNyeTrK buGtcijJfYMWvJ+o/+J6dGXl4rFEkALf+11TJlcKpTWH4xfm3ZfYqY1IiW9urbwXXWQD T1o8KltC8wc5Hk4M82Uu0+kNS0CP9feCH9oDp+lzSVRGLL7N79A7e6oDD34NctQ1jNS3 IfCg6Y4XshpqzGjHA7qasUXlcP4tsR8a5fN/KbQDt50oxWrjh92AhowdV8Us2heM25L4 uosg== X-Gm-Message-State: AOJu0YzlvQElZMAxWCeCNyaCcKCNKuPGVZ8QNHHL3oOw534HrcJxWspl Z/HHyO1Y0xQOKoatrz7x4X2eNw== X-Google-Smtp-Source: AGHT+IFkGYYFZclu6SMR8rzL4lmB/RSXJkVCZTlLTWR38eHQhrpVerDrLtHbznEf3GRbEWafn6yIgQ== X-Received: by 2002:a05:6a20:258f:b0:14b:f86f:d9ea with SMTP id k15-20020a056a20258f00b0014bf86fd9eamr6905123pzd.3.1695673263163; Mon, 25 Sep 2023 13:21:03 -0700 (PDT) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id js19-20020a17090b149300b0027768cd88d7sm29599pjb.1.2023.09.25.13.21.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 25 Sep 2023 13:21:01 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------G957IccwHqpC3R9IYdyZoS1g" Message-ID: Date: Mon, 25 Sep 2023 13:20:59 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: SQL:2011 application time Content-Language: en-US To: jian he Cc: PostgreSQL Hackers References: <831f17ba-ff36-1380-a475-a7cd2c65a89c@enterprisedb.com> <6f010a6e-8e20-658b-dc05-dc9033a694da@eisentraut.org> <7d44dade-ff31-5eef-80ac-78ed838066f6@postgresfriends.org> <88dadcc1-6652-ff7d-264d-73906a53dee9@illuminatedcomputing.com> <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> From: Paul Jungwirth In-Reply-To: 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. --------------G957IccwHqpC3R9IYdyZoS1g Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 9/24/23 21:52, jian he wrote: > On Wed, Sep 20, 2023 at 10:50 AM Paul Jungwirth > wrote: >> >> On 9/17/23 20:11, jian he wrote: >>> small issues so far I found, v14. >> >> Thank you again for the review! v15 is attached. >> > > hi. some tiny issues. Rebased v16 patches attached. > IN src/backend/utils/adt/ri_triggers.c > > else { > appendStringInfo(&querybuf, "SELECT 1 FROM %s%s x", > pk_only, pkrelname); > } > should change to > > else > { > appendStringInfo(&querybuf, "SELECT 1 FROM %s%s x", > pk_only, pkrelname); > } Fixed. > It would be better, we mention it somewhere: > by default, you can only have a primary key(range_type[...], > range_type WITHOUT OVERLAPS). > > preceding without overlaps, all columns (in primary key) data types > only allowed range types. > ------------------------------- > The WITHOUT OVERLAPS value must be a range type and is used to > constrain the record's applicability to just that interval (usually a > range of dates or timestamps). > > "interval", I think "period" or "range" would be better. I am not sure > we need to mention " must be a range type, not a multi range type". I reworked those two paragraphs to incorporate those suggestions and hopefully clarify the idea bit further. (I'll revise these again once I support multiple WITHOUT OVERLAPS columns.) > I just `git apply`, then ran the test, and one test failed. Some minor > changes need to make the test pass. I couldn't reproduce this. If you're still seeing a failure please let me know what you're seeing. These patches also fix a problem I found with FKs when used with btree_gist. Privately I'm using the script below [1] to re-run all my tests with that extension and int+range columns. I'd like to add something similar to contrib/btree_gist. I'm open to advice how best to do that if anyone has any! [1] #!/bin/bash set -eu # without_overlaps cat ../src/test/regress/sql/without_overlaps.sql | \ sed -E 's/int4range/integer/g' | \ sed -E 's/valid_at integer/valid_at int4range/' | \ sed -E 's/int8range/bigint/g' | \ sed -E 's/'"'"'\[(-?[[:digit:]]+),\1\]'"'"'/\1/g' | \ cat > ./sql/without_overlaps.sql cat ../src/test/regress/expected/without_overlaps.out | \ sed -E 's/int4range/integer/g' | \ sed -E 's/valid_at integer/valid_at int4range/' | \ sed -E 's/incompatible types: integer and tsrange/incompatible types: int4range and tsrange/' | \ sed -E 's/int8range/bigint/g' | \ sed -E 's/'"'"'\[(-?[[:digit:]]+),\1\]'"'"'/\1/g' | \ sed -E 's/'"'"'\[(-?[[:digit:]]+),-?[[:digit:]]+\)'"'"'/\1/g' | \ sed -E 's/\[(-?[[:digit:]]+),\1\]/\1/g' | \ sed -E 's/\[(-?[[:digit:]]+),-?[[:digit:]]+\)/\1/g' | \ sed -E 'N;P;s/^ +id [^\n]+\n-+(\+.*)$/----\1/p;D' | \ sed -E 's/^----------\+-----------\+-----------\+----------\+---------$/----------+---------+-----------+----------+---------/' | \ sed -E 's/^----\+-------------------------\+--------\+-------$/----+-------------------------+-----+-------/' | \ cat > ./expected/without_overlaps.out # for_portion_of cat ../src/test/regress/sql/for_portion_of.sql | \ sed -E 's/int4range/integer/g' | \ sed -E 's/valid_at integer/valid_at int4range/' | \ sed -E 's/'"'"'\[(-?[[:digit:]]+),\1\]'"'"'/\1/g' | \ cat > ./sql/for_portion_of.sql cat ../src/test/regress/expected/for_portion_of.out | \ sed -E 's/int4range/integer/g' | \ sed -E 's/valid_at integer/valid_at int4range/' | \ sed -E 's/'"'"'\[(-?[[:digit:]]+),\1\]'"'"'/\1/g' | \ sed -E 's/'"'"'\[(-?[[:digit:]]+),-?[[:digit:]]+\)'"'"'/\1/g' | \ sed -E 's/\[(-?[[:digit:]]+),\1\]/\1/g' | \ sed -E 's/\[(-?[[:digit:]]+),-?[[:digit:]]+\)/\1/g' | \ sed -E 'N;P;s/^ +id [^\n]+\n-+(\+.*)$/----\1/p;D' | \ cat > ./expected/for_portion_of.out Regards, -- Paul ~{:-) pj@illuminatedcomputing.com --------------G957IccwHqpC3R9IYdyZoS1g Content-Type: text/x-patch; charset=UTF-8; name="v16-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v16-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBhZmMxNmViNWZiMzYwZjVjN2Y1MjI5ZWVhMThjMDg2NzA5OGY5Zjg5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNiAxLzVdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICB8ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sICAgICAgICAgICAgfCAgNDUgKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YyAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3Bn X2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTU1ICsrKysrKystCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDMwICstCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxMjQgKysrKystCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgMjkgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAxMCAr LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDM1 ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwg IDQ2ICsrKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDEyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAg ICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAg ICAgICAgICB8ICAgNCArCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dCAgICAgfCAzNTkgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8IDI2MiArKysrKysrKysrKysrCiAyNCBm aWxlcyBjaGFuZ2VkLCAxMTA3IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggZTA5YWRiNDVlNC4uMzEy ZTAwYzkwYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTI3MDksNiArMjcwOSwxOCBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5jb250ZW1wb3JhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGNvbnN0cmFpbnQgaXMgYSBh cHBsaWNhdGlvbi10aW1lIHRlbXBvcmFsIGNvbnN0cmFpbnQsCisgICAgICAgZGVmaW5lZCB3 aXRoIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IChmb3IgcHJpbWFyeQor ICAgICAgIGtleSBhbmQgdW5pcXVlIGNvbnN0cmFpbnRzKSBvciA8bGl0ZXJhbD5QRVJJT0Q8 L2xpdGVyYWw+IChmb3IKKyAgICAgICBmb3JlaWduIGtleXMpLgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgog ICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25rZXk8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyW108 L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCBlMDRhMDY5MmM0 Li5hZDViZjIxNDUzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTc4 LDggKzc4LDggQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwg VEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKIFsgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4gXQogeyBDSEVDSyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBbIE5PIElOSEVSSVQgXSB8CiAgIE5PVCBOVUxMIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFsgTk8gSU5IRVJJVCBdIHwKLSAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBd ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhf cGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwKLSAgUFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9y ZXBsYWNlYWJsZT4gfAorICBVTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxf aW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwK KyAgUFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJM QVBTIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVy czwvcmVwbGFjZWFibGU+IHwKICAgRVhDTFVERSBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiBdICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2x1ZGVfZWxlbWVudDwvcmVwbGFjZWFibGU+IFdJ VEggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yPC9yZXBsYWNlYWJs ZT4gWywgLi4uIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFy YW1ldGVyczwvcmVwbGFjZWFibGU+IFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cHJlZGljYXRlPC9yZXBsYWNlYWJsZT4gKSBdIHwKICAgRk9SRUlHTiBLRVkg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KICAgICBbIE1B VENIIEZVTEwgfCBNQVRDSCBQQVJUSUFMIHwgTUFUQ0ggU0lNUExFIF0gWyBPTiBERUxFVEUg PHJlcGxhY2VhYmxlCkBAIC0xMDcsNiArMTA3LDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxl PiwgUkVNCiAKIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gfCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSB9IFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm9wY2xhc3M8L3JlcGxhY2VhYmxlPiBdIFsgQVNDIHwgREVTQyBdIFsgTlVMTFMgeyBG SVJTVCB8IExBU1QgfSBdCiAKKzxwaHJhc2U+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gaW4gYSA8bGl0ZXJhbD5QUklN QVJZIEtFWTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlVOSVFVRTwvbGl0ZXJhbD4sIG9yIDxsaXRl cmFsPkZPUkVJR04gS0VZPC9saXRlcmFsPiBjb25zdHJhaW50IGlzOjwvcGhyYXNlPgorCis8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2VfY29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPgorCiA8cGhyYXNlPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZl cmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBpbiBhIDxsaXRlcmFsPkZPUkVJR04gS0VZ PC9saXRlcmFsPi88bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBjb25zdHJhaW50IGlz OjwvcGhyYXNlPgogCiB7IE5PIEFDVElPTiB8IFJFU1RSSUNUIHwgQ0FTQ0FERSB8IFNFVCBO VUxMIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gfCBTRVQgREVGQVVMVCBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdIH0KQEAgLTEwMDEsNyArMTAwNSwxMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJF TQogCiAgICAgIDxwYXJhPgogICAgICAgQWRkaW5nIGEgdW5pcXVlIGNvbnN0cmFpbnQgd2ls bCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHVuaXF1ZSBidHJlZQotICAgICAgaW5kZXggb24g dGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlIGNvbnN0cmFpbnQu CisgICAgICBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBp biB0aGUgY29uc3RyYWludC4gQnV0IGlmCisgICAgICB0aGUgY29uc3RyYWludCBpbmNsdWRl cyBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAg IGl0IHdpbGwgdXNlIGEgR2lTVCBpbmRleCBhbmQgYmVoYXZlIGxpa2UgYSB0ZW1wb3JhbCA8 bGl0ZXJhbD5QUklNQVJZCisgICAgICBLRVk8L2xpdGVyYWw+OiBwcmV2ZW50aW5nIGR1cGxp Y2F0ZXMgb25seSBpbiBvdmVybGFwcGluZyB0aW1lIHBlcmlvZHMuCiAgICAgIDwvcGFyYT4K IAogICAgICA8cGFyYT4KQEAgLTEwMTksNyArMTAyNiw4IEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJt cy1wcmltYXJ5LWtleSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVy YWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+Ci0gICAgPHRlcm0+PGxpdGVyYWw+UFJJ TUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApPC9saXRlcmFsPgorICAgIDx0ZXJtPjxsaXRlcmFs PlBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KKyAgICBbLCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9W RVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklOQ0xVREUg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0cmFpbnQp PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CkBAIC0xMDUzLDggKzEwNjEs OCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt ZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICAgIDxwYXJhPgogICAgICAg QWRkaW5nIGEgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2ls bCBhdXRvbWF0aWNhbGx5Ci0gICAgICBjcmVhdGUgYSB1bmlxdWUgYnRyZWUgaW5kZXggb24g dGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlCi0gICAgICBjb25z dHJhaW50LgorICAgICAgY3JlYXRlIGEgdW5pcXVlIGJ0cmVlIGluZGV4IChvciBHaVNUIGlm IHRlbXBvcmFsKSBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mCisgICAgICBjb2x1bW5zIHVz ZWQgaW4gdGhlIGNvbnN0cmFpbnQuCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAg LTEwNjcsNiArMTA3NSwzMSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAg KGUuZy4sIDxsaXRlcmFsPkRST1AgQ09MVU1OPC9saXRlcmFsPikgY2FuIGNhdXNlIGNhc2Nh ZGVkIGNvbnN0cmFpbnQgYW5kCiAgICAgICBpbmRleCBkZWxldGlvbi4KICAgICAgPC9wYXJh PgorCisgICAgIDxwYXJhPgorICAgICAgQSA8bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJh bD4gd2l0aCBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IG9wdGlvbgor ICAgICAgaXMgYSA8ZW1waGFzaXM+dGVtcG9yYWw8L2VtcGhhc2lzPiBwcmltYXJ5IGtleS4K KyAgICAgIFRoZSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBjb2x1bW4K KyAgICAgIG11c3QgYmUgYSByYW5nZSB0eXBlIG9yIGEgPGxpdGVyYWw+UEVSSU9EPC9saXRl cmFsPgorICAgICAgYW5kIGlzIHVzZWQgdG8gY29uc3RyYWluIHRoZSByZWNvcmQncyBhcHBs aWNhYmlsaXR5CisgICAgICB0byBqdXN0IHRoYXQgcmFuZ2UvcGVyaW9kICh1c3VhbGx5IGEg cmFuZ2Ugb2YgZGF0ZXMgb3IgdGltZXN0YW1wcywKKyAgICAgIGFsdGhvdWdoIFBvc3RncmVz IGFsbG93cyBhIHJhbmdlL3BlcmlvZCBvdmVyIGFueSBiYXNlIHR5cGUpLgorICAgICA8L3Bh cmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgbm9uLTxsaXRlcmFsPldJVEhPVVQgT1ZF UkxBUFM8L2xpdGVyYWw+IHBhcnQocykgb2YgdGhlIGtleSBjYW4gYmUgYW55CisgICAgICB0 eXBlIHRoYXQgY2FuIGJlIGNvbXBhcmVkIGZvciBlcXVhbGl0eSBpbiBhIEdpU1QgaW5kZXgu IEJ5IGRlZmF1bHQKKyAgICAgIG9ubHkgcmFuZ2UgdHlwZXMgYXJlIHN1cHBvcnRlZCwgYnV0 IHlvdSBjYW4gdXNlIG90aGVyIHR5cGVzIGJ5CisgICAgICBhZGRpbmcgdGhlIDx4cmVmIGxp bmtlbmQ9ImJ0cmVlLWdpc3QiLz4gZXh0ZW5zaW9uCisgICAgICAod2hpY2ggaXMgdGhlIGV4 cGVjdGVkIHdheSB0byB1c2UgdGhpcyBmZWF0dXJlKS4KKyAgICAgIFRoZXNlIG9yZGluYXJ5 IHBhcnRzIG9mIHRoZSBwcmltYXJ5IGtleSBkbyBhbGxvdyBkdXBsaWNhdGVzLAorICAgICAg c28gbG9uZyBhcyB0aGUgZHVwbGljYXRlcyBkb24ndCBvdmVybGFwIGluIHRoZQorICAgICAg PGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uLgorICAgICAgSW4g ZWZmZWN0IGEgdGVtcG9yYWwgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IGlzIGVu Zm9yY2VkIHdpdGggYW4KKyAgICAgIDxsaXRlcmFsPkVYQ0xVREU8L2xpdGVyYWw+IGNvbnN0 cmFpbnQgcmF0aGVyIHRoYW4gYSA8bGl0ZXJhbD5VTklRVUU8L2xpdGVyYWw+CisgICAgICBj b25zdHJhaW50LiBTbyBmb3IgZXhhbXBsZSA8bGl0ZXJhbD5QUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpPC9saXRlcmFsPgorICAgICAgYmVoYXZlcyBsaWtl IDxsaXRlcmFsPkVYQ0xVREUgVVNJTkcgR0lTVCAoaWQgV0lUSCA9LCB2YWxpZF9hdCBXSVRI ICZhbXA7JmFtcDspPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCBiNDI3MTFmNTc0 Li43MTQ4ZGQxNzg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMjE0MCw2ICsyMTQwLDcgQEAg U3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwgTm9kZSAq ZXhwciwKIAkJCQkJCQkgIGlzX2xvY2FsLCAvKiBjb25pc2xvY2FsICovCiAJCQkJCQkJICBp bmhjb3VudCwgLyogY29uaW5oY291bnQgKi8KIAkJCQkJCQkgIGlzX25vX2luaGVyaXQsCS8q IGNvbm5vaW5oZXJpdCAqLworCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICovCiAJ CQkJCQkJICBpc19pbnRlcm5hbCk7IC8qIGludGVybmFsbHkgY29uc3RydWN0ZWQ/ICovCiAK IAlwZnJlZShjY2Jpbik7CkBAIC0yMTkwLDYgKzIxOTEsNyBAQCBTdG9yZVJlbE5vdE51bGwo UmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpubm5hbWUsIEF0dHJOdW1iZXIgYXR0bnVtLAog CQkJCQkJCSAgaXNfbG9jYWwsCiAJCQkJCQkJICBpbmhjb3VudCwKIAkJCQkJCQkgIGlzX25v X2luaGVyaXQsCisJCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8KIAkJCQkJCQkg IGZhbHNlKTsKIAlyZXR1cm4gY29uc3RyT2lkOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4 IDcyZjQ3NmI1MWQuLjFhNjE3YjA0MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI1NSw4 ICsyNTUsOCBAQCBpbmRleF9jaGVja19wcmltYXJ5X2tleShSZWxhdGlvbiBoZWFwUmVsLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBl cnJtc2coInByaW1hcnkga2V5cyBjYW5ub3QgYmUgZXhwcmVzc2lvbnMiKSkpOwogCi0JCS8q IFN5c3RlbSBhdHRyaWJ1dGVzIGFyZSBuZXZlciBudWxsLCBzbyBubyBuZWVkIHRvIGNoZWNr ICovCi0JCWlmIChhdHRudW0gPCAwKQorCQkvKiBTeXN0ZW0gYXR0cmlidXRlcyBhcmUgbmV2 ZXIgbnVsbCwgc28gbm8gbmVlZCB0byBjaGVjay4gKi8KKwkJaWYgKGF0dG51bSA8PSAwKQog CQkJY29udGludWU7CiAKIAkJYXR0dHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVNLApA QCAtMTg5Nyw2ICsxODk3LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkKQogICoJCUlOREVYX0NPTlNUUl9DUkVBVEVfVVBEQVRFX0lO REVYOiB1cGRhdGUgdGhlIHBnX2luZGV4IHJvdwogICoJCUlOREVYX0NPTlNUUl9DUkVBVEVf UkVNT1ZFX09MRF9ERVBTOiByZW1vdmUgZXhpc3RpbmcgZGVwZW5kZW5jaWVzCiAgKgkJCW9m IGluZGV4IG9uIHRhYmxlJ3MgY29sdW1ucworICoJCUlOREVYX0NPTlNUUl9DUkVBVEVfVEVN UE9SQUw6IGNvbnN0cmFpbnQgaXMgZm9yIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkKICAqIGFs bG93X3N5c3RlbV90YWJsZV9tb2RzOiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRh bG9nCiAgKiBpc19pbnRlcm5hbDogaW5kZXggaXMgY29uc3RydWN0ZWQgZHVlIHRvIGludGVy bmFsIHByb2Nlc3MKICAqLwpAQCAtMTkyMCwxMSArMTkyMSwxMyBAQCBpbmRleF9jb25zdHJh aW50X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJYm9vbAkJbWFya19hc19wcmlt YXJ5OwogCWJvb2wJCWlzbG9jYWw7CiAJYm9vbAkJbm9pbmhlcml0OworCWJvb2wJCWlzX3Rl bXBvcmFsOwogCWludAkJCWluaGNvdW50OwogCiAJZGVmZXJyYWJsZSA9IChjb25zdHJfZmxh Z3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUpICE9IDA7CiAJaW5pdGRlZmVy cmVkID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfSU5JVF9ERUZFUlJF RCkgIT0gMDsKIAltYXJrX2FzX3ByaW1hcnkgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09O U1RSX0NSRUFURV9NQVJLX0FTX1BSSU1BUlkpICE9IDA7CisJaXNfdGVtcG9yYWwgPSAoY29u c3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9URU1QT1JBTCkgIT0gMDsKIAogCS8q IGNvbnN0cmFpbnQgY3JlYXRpb24gc3VwcG9ydCBkb2Vzbid0IHdvcmsgd2hpbGUgYm9vdHN0 cmFwcGluZyAqLwogCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKQEAg LTIwMDEsNiArMjAwNCw3IEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJICAgaXNsb2NhbCwKIAkJCQkJCQkJICAgaW5oY291bnQs CiAJCQkJCQkJCSAgIG5vaW5oZXJpdCwKKwkJCQkJCQkJICAgaXNfdGVtcG9yYWwsCS8qIGNv bnRlbXBvcmFsICovCiAJCQkJCQkJCSAgIGlzX2ludGVybmFsKTsKIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IGU5ZDRkNjAwNmUuLmQ1MzI5Y2E4Yzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC03OCw2ICs3OCw3IEBA IENyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJ CQkJICBib29sIGNvbklzTG9jYWwsCiAJCQkJCSAgaW50IGNvbkluaENvdW50LAogCQkJCQkg IGJvb2wgY29uTm9Jbmhlcml0LAorCQkJCQkgIGJvb2wgY29uVGVtcG9yYWwsCiAJCQkJCSAg Ym9vbCBpc19pbnRlcm5hbCkKIHsKIAlSZWxhdGlvbgljb25EZXNjOwpAQCAtMTkzLDYgKzE5 NCw3IEBAIENyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFt ZSwKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmlzbG9jYWwgLSAxXSA9IEJvb2xH ZXREYXR1bShjb25Jc0xvY2FsKTsKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2Nvbmlu aGNvdW50IC0gMV0gPSBJbnQxNkdldERhdHVtKGNvbkluaENvdW50KTsKIAl2YWx1ZXNbQW51 bV9wZ19jb25zdHJhaW50X2Nvbm5vaW5oZXJpdCAtIDFdID0gQm9vbEdldERhdHVtKGNvbk5v SW5oZXJpdCk7CisJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb250ZW1wb3JhbCAtIDFd ID0gQm9vbEdldERhdHVtKGNvblRlbXBvcmFsKTsKIAogCWlmIChjb25rZXlBcnJheSkKIAkJ dmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25rZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1 bShjb25rZXlBcnJheSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGFiOGI4 MWIzMDIuLjc5NGJkZTE5MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC03 Myw2ICs3MywxMSBAQAogLyogbm9uLWV4cG9ydCBmdW5jdGlvbiBwcm90b3R5cGVzICovCiBz dGF0aWMgYm9vbCBDb21wYXJlT3BjbGFzc09wdGlvbnMoY29uc3QgRGF0dW0gKm9wdHMxLCBj b25zdCBEYXR1bSAqb3B0czIsIGludCBuYXR0cyk7CiBzdGF0aWMgdm9pZCBDaGVja1ByZWRp Y2F0ZShFeHByICpwcmVkaWNhdGUpOworc3RhdGljIHZvaWQgZ2V0X2luZGV4X2F0dHJfdGVt cG9yYWxfb3BlcmF0b3IoT2lkIG9wY2xhc3MsCisJCQkJCQkJCQkJCSBPaWQgYXR0dHlwZSwK KwkJCQkJCQkJCQkJIGJvb2wgaXNvdmVybGFwcywKKwkJCQkJCQkJCQkJIE9pZCAqb3BpZCwK KwkJCQkJCQkJCQkJIGludCAqc3RyYXQpOwogc3RhdGljIHZvaWQgQ29tcHV0ZUluZGV4QXR0 cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkJICBPaWQgKnR5cGVPaWRzLAogCQkJ CQkJCSAgT2lkICpjb2xsYXRpb25PaWRzLApAQCAtODUsNiArOTAsNyBAQCBzdGF0aWMgdm9p ZCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJCQkgIE9p ZCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkJCQkg IGJvb2wgaXNjb25zdHJhaW50LAorCQkJCQkJCSAgYm9vbCBpc3RlbXBvcmFsLAogCQkJCQkJ CSAgT2lkIGRkbF91c2VyaWQsCiAJCQkJCQkJICBpbnQgZGRsX3NlY19jb250ZXh0LAogCQkJ CQkJCSAgaW50ICpkZGxfc2F2ZV9uZXN0bGV2ZWwpOwpAQCAtMTQyLDYgKzE0OCw3IEBAIHR5 cGVkZWYgc3RydWN0IFJlaW5kZXhFcnJvckluZm8KICAqCQl0byBpbmRleCBvbi4KICAqICdl eGNsdXNpb25PcE5hbWVzJzogbGlzdCBvZiBuYW1lcyBvZiBleGNsdXNpb24tY29uc3RyYWlu dCBvcGVyYXRvcnMsCiAgKgkJb3IgTklMIGlmIG5vdCBhbiBleGNsdXNpb24gY29uc3RyYWlu dC4KKyAqICdpc3RlbXBvcmFsJzogdHJ1ZSBpZmYgdGhpcyBpbmRleCBoYXMgYSBXSVRIT1VU IE9WRVJMQVBTIGNsYXVzZS4KICAqCiAgKiBUaGlzIGlzIHRhaWxvcmVkIHRvIHRoZSBuZWVk cyBvZiBBTFRFUiBUQUJMRSBBTFRFUiBUWVBFLCB3aGljaCByZWNyZWF0ZXMKICAqIGFueSBp bmRleGVzIHRoYXQgZGVwZW5kZWQgb24gYSBjaGFuZ2luZyBjb2x1bW4gZnJvbSB0aGVpciBw Z19nZXRfaW5kZXhkZWYKQEAgLTE3MSw3ICsxNzgsOCBAQCBib29sCiBDaGVja0luZGV4Q29t cGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSBjb25zdCBjaGFyICphY2Nlc3NNZXRob2ROYW1l LAogCQkJCQkgY29uc3QgTGlzdCAqYXR0cmlidXRlTGlzdCwKLQkJCQkJIGNvbnN0IExpc3Qg KmV4Y2x1c2lvbk9wTmFtZXMpCisJCQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVz LAorCQkJCQkgYm9vbCBpc3RlbXBvcmFsKQogewogCWJvb2wJCWlzY29uc3RyYWludDsKIAlP aWQJCSAgICp0eXBlSWRzOwpAQCAtMjQ0LDggKzI1Miw4IEBAIENoZWNrSW5kZXhDb21wYXRp YmxlKE9pZCBvbGRJZCwKIAkJCQkJICBjb2xvcHRpb25zLCBhdHRyaWJ1dGVMaXN0LAogCQkJ CQkgIGV4Y2x1c2lvbk9wTmFtZXMsIHJlbGF0aW9uSWQsCiAJCQkJCSAgYWNjZXNzTWV0aG9k TmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0JCQkJCSAgYW1jYW5vcmRlciwgaXNjb25zdHJhaW50 LCBJbnZhbGlkT2lkLCAwLCBOVUxMKTsKLQorCQkJCQkgIGFtY2Fub3JkZXIsIGlzY29uc3Ry YWludCwgaXN0ZW1wb3JhbCwgSW52YWxpZE9pZCwKKwkJCQkJICAwLCBOVUxMKTsKIAogCS8q IEdldCB0aGUgc29vbi1vYnNvbGV0ZSBwZ19pbmRleCB0dXBsZS4gKi8KIAl0dXBsZSA9IFNl YXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKG9sZElkKSk7CkBA IC01NTMsNiArNTYxLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJYm9vbAkJYW1j YW5vcmRlcjsKIAlib29sCQlhbWlzc3VtbWFyaXppbmc7CiAJYW1vcHRpb25zX2Z1bmN0aW9u IGFtb3B0aW9uczsKKwlib29sCQlleGNsdXNpb247CiAJYm9vbAkJcGFydGl0aW9uZWQ7CiAJ Ym9vbAkJc2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0aW9uczsKQEAgLTY3MSw2ICs2ODAs MTIgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAluYW1lc3BhY2VJZCA9IFJlbGF0 aW9uR2V0TmFtZXNwYWNlKHJlbCk7CiAKKwkvKgorCSAqIEl0IGhhcyBleGNsdXNpb24gY29u c3RyYWludCBiZWhhdmlvciBpZiBpdCdzIGFuIEVYQ0xVREUgY29uc3RyYWludAorCSAqIG9y IGEgdGVtcG9yYWwgUFJJTUFSWSBLRVkvVU5JUVVFIGNvbnN0cmFpbnQKKwkgKi8KKwlleGNs dXNpb24gPSBzdG10LT5leGNsdWRlT3BOYW1lcyB8fCBzdG10LT5pc3RlbXBvcmFsOworCiAJ LyogRW5zdXJlIHRoYXQgaXQgbWFrZXMgc2Vuc2UgdG8gaW5kZXggdGhpcyBraW5kIG9mIHJl bGF0aW9uICovCiAJc3dpdGNoIChyZWwtPnJkX3JlbC0+cmVsa2luZCkKIAl7CkBAIC04Mzks NyArODU0LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfQUNDRVNTX01FVEhPRF9PSUQsCiAJ CQkJCQkJCSBhY2Nlc3NNZXRob2RJZCk7CiAKLQlpZiAoc3RtdC0+dW5pcXVlICYmICFhbVJv dXRpbmUtPmFtY2FudW5pcXVlKQorCWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlzdGVt cG9yYWwgJiYgIWFtUm91dGluZS0+YW1jYW51bmlxdWUpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJt c2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgdW5pcXVlIGluZGV4 ZXMiLApAQCAtODU0LDcgKzg2OSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNn KCJhY2Nlc3MgbWV0aG9kIFwiJXNcIiBkb2VzIG5vdCBzdXBwb3J0IG11bHRpY29sdW1uIGlu ZGV4ZXMiLAogCQkJCQkJYWNjZXNzTWV0aG9kTmFtZSkpKTsKLQlpZiAoc3RtdC0+ZXhjbHVk ZU9wTmFtZXMgJiYgYW1Sb3V0aW5lLT5hbWdldHR1cGxlID09IE5VTEwpCisJaWYgKGV4Y2x1 c2lvbiAmJiBhbVJvdXRpbmUtPmFtZ2V0dHVwbGUgPT0gTlVMTCkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJ IGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBleGNsdXNp b24gY29uc3RyYWludHMiLApAQCAtOTA2LDggKzkyMSw5IEBAIERlZmluZUluZGV4KE9pZCB0 YWJsZUlkLAogCQkJCQkgIGNvbG9wdGlvbnMsIGFsbEluZGV4UGFyYW1zLAogCQkJCQkgIHN0 bXQtPmV4Y2x1ZGVPcE5hbWVzLCB0YWJsZUlkLAogCQkJCQkgIGFjY2Vzc01ldGhvZE5hbWUs IGFjY2Vzc01ldGhvZElkLAotCQkJCQkgIGFtY2Fub3JkZXIsIHN0bXQtPmlzY29uc3RyYWlu dCwgcm9vdF9zYXZlX3VzZXJpZCwKLQkJCQkJICByb290X3NhdmVfc2VjX2NvbnRleHQsICZy b290X3NhdmVfbmVzdGxldmVsKTsKKwkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0 cmFpbnQsIHN0bXQtPmlzdGVtcG9yYWwsCisJCQkJCSAgcm9vdF9zYXZlX3VzZXJpZCwgcm9v dF9zYXZlX3NlY19jb250ZXh0LAorCQkJCQkgICZyb290X3NhdmVfbmVzdGxldmVsKTsKIAog CS8qCiAJICogRXh0cmEgY2hlY2tzIHdoZW4gY3JlYXRpbmcgYSBQUklNQVJZIEtFWSBpbmRl eC4KQEAgLTkyNSw3ICs5NDEsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBX ZSBjb3VsZCBsaWZ0IHRoaXMgbGltaXRhdGlvbiBpZiB3ZSBoYWQgZ2xvYmFsIGluZGV4ZXMs IGJ1dCB0aG9zZSBoYXZlCiAJICogdGhlaXIgb3duIHByb2JsZW1zLCBzbyB0aGlzIGlzIGEg dXNlZnVsIGZlYXR1cmUgY29tYmluYXRpb24uCiAJICovCi0JaWYgKHBhcnRpdGlvbmVkICYm IChzdG10LT51bmlxdWUgfHwgc3RtdC0+ZXhjbHVkZU9wTmFtZXMpKQorCWlmIChwYXJ0aXRp b25lZCAmJiAoc3RtdC0+dW5pcXVlIHx8IGV4Y2x1c2lvbikpCiAJewogCQlQYXJ0aXRpb25L ZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocmVsKTsKIAkJY29uc3QgY2hhciAq Y29uc3RyYWludF90eXBlOwpAQCAtOTMzLDYgKzk0OSw4IEBAIERlZmluZUluZGV4KE9pZCB0 YWJsZUlkLAogCiAJCWlmIChzdG10LT5wcmltYXJ5KQogCQkJY29uc3RyYWludF90eXBlID0g IlBSSU1BUlkgS0VZIjsKKwkJZWxzZSBpZiAoc3RtdC0+dW5pcXVlICYmIHN0bXQtPmlzdGVt cG9yYWwpCisJCQljb25zdHJhaW50X3R5cGUgPSAidGVtcG9yYWwgVU5JUVVFIjsKIAkJZWxz ZSBpZiAoc3RtdC0+dW5pcXVlKQogCQkJY29uc3RyYWludF90eXBlID0gIlVOSVFVRSI7CiAJ CWVsc2UgaWYgKHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKQpAQCAtOTc5LDEwICs5OTcsMTAgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkgKiBhc3NvY2lhdGVkIHdpdGggaW5kZXgg Y29sdW1ucywgdG9vLiAgV2Uga25vdyB3aGF0IHRvIGRvIHdpdGgKIAkJCSAqIGJ0cmVlIG9w Y2xhc3NlczsgaWYgdGhlcmUgYXJlIGV2ZXIgYW55IG90aGVyIGluZGV4IHR5cGVzIHRoYXQK IAkJCSAqIHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMsIHRoaXMgbG9naWMgd2lsbCBuZWVkIGV4 dGVuc2lvbi4gQnV0IGlmCi0JCQkgKiB3ZSBoYXZlIGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50 LCBpdCBhbHJlYWR5IGtub3dzIHRoZQotCQkJICogb3BlcmF0b3JzLCBzbyB3ZSBkb24ndCBo YXZlIHRvIGluZmVyIHRoZW0uCisJCQkgKiB3ZSBoYXZlIGFuIGV4Y2x1c2lvbiBjb25zdHJh aW50IChvciBhIHRlbXBvcmFsIFBLKSwgaXQgYWxyZWFkeQorCQkJICoga25vd3MgdGhlIG9w ZXJhdG9ycywgc28gd2UgZG9uJ3QgaGF2ZSB0byBpbmZlciB0aGVtLgogCQkJICovCi0JCQlp ZiAoc3RtdC0+dW5pcXVlICYmIGFjY2Vzc01ldGhvZElkICE9IEJUUkVFX0FNX09JRCkKKwkJ CWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlzdGVtcG9yYWwgJiYgYWNjZXNzTWV0aG9k SWQgIT0gQlRSRUVfQU1fT0lEKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkgZXJybXNnKCJjYW5u b3QgbWF0Y2ggcGFydGl0aW9uIGtleSB0byBhbiBpbmRleCB1c2luZyBhY2Nlc3MgbWV0aG9k IFwiJXNcIiIsCkBAIC0xMDE1LDEyICsxMDMzLDEyIEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogCQkJCQl7CiAJCQkJCQlPaWQJCQlpZHhfZXFvcCA9IEludmFsaWRPaWQ7CiAKLQkJ CQkJCWlmIChzdG10LT51bmlxdWUpCisJCQkJCQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10 LT5pc3RlbXBvcmFsKQogCQkJCQkJCWlkeF9lcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihp ZHhfb3BmYW1pbHksCiAJCQkJCQkJCQkJCQkJCSAgIGlkeF9vcGNpbnR5cGUsCiAJCQkJCQkJ CQkJCQkJCSAgIGlkeF9vcGNpbnR5cGUsCiAJCQkJCQkJCQkJCQkJCSAgIEJURXF1YWxTdHJh dGVneU51bWJlcik7Ci0JCQkJCQllbHNlIGlmIChzdG10LT5leGNsdWRlT3BOYW1lcykKKwkJ CQkJCWVsc2UgaWYgKGV4Y2x1c2lvbikKIAkJCQkJCQlpZHhfZXFvcCA9IGluZGV4SW5mby0+ aWlfRXhjbHVzaW9uT3BzW2pdOwogCQkJCQkJQXNzZXJ0KGlkeF9lcW9wKTsKIApAQCAtMTAy OSw3ICsxMDQ3LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJZm91bmQg PSB0cnVlOwogCQkJCQkJCWJyZWFrOwogCQkJCQkJfQotCQkJCQkJZWxzZSBpZiAoc3RtdC0+ ZXhjbHVkZU9wTmFtZXMpCisJCQkJCQllbHNlIGlmIChleGNsdXNpb24pCiAJCQkJCQl7CiAJ CQkJCQkJLyoKIAkJCQkJCQkgKiBXZSBmb3VuZCBhIG1hdGNoLCBidXQgaXQncyBub3QgYW4g ZXF1YWxpdHkKQEAgLTExNzMsNiArMTE5MSw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFOwog CWlmIChzdG10LT5pbml0ZGVmZXJyZWQpCiAJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9DT05T VFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQ7CisJaWYgKHN0bXQtPmlzdGVtcG9yYWwpCisJCWNv bnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMOwogCiAJaW5kZXhS ZWxhdGlvbklkID0KIAkJaW5kZXhfY3JlYXRlKHJlbCwgaW5kZXhSZWxhdGlvbk5hbWUsIGlu ZGV4UmVsYXRpb25JZCwgcGFyZW50SW5kZXhJZCwKQEAgLTE4NDEsNiArMTg2MSw5MSBAQCBD aGVja1ByZWRpY2F0ZShFeHByICpwcmVkaWNhdGUpCiAJCQkJIGVycm1zZygiZnVuY3Rpb25z IGluIGluZGV4IHByZWRpY2F0ZSBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUiKSkpOwogfQog CisvKgorICogZ2V0X2luZGV4X2F0dHJfdGVtcG9yYWxfb3BlcmF0b3IKKyAqCisgKiBGaW5k cyBhbiBvcGVyYXRvciBmb3IgYSB0ZW1wb3JhbCBpbmRleCBhdHRyaWJ1dGUuCisgKiBXZSBu ZWVkIGFuIGVxdWFsaXR5IG9wZXJhdG9yIGZvciBub3JtYWwga2V5cworICogYW5kIGFuIG92 ZXJsYXBzIG9wZXJhdG9yIGZvciB0aGUgcmFuZ2UuCisgKiBSZXR1cm5zIHRoZSBvcGVyYXRv ciBvaWQgYW5kIHN0cmF0ZWd5IGluIG9waWQgYW5kIHN0cmF0LAorICogcmVzcGVjdGl2ZWx5 LgorICovCitzdGF0aWMgdm9pZAorZ2V0X2luZGV4X2F0dHJfdGVtcG9yYWxfb3BlcmF0b3Io T2lkIG9wY2xhc3MsCisJCQkJCQkJCSBPaWQgYXR0dHlwZSwKKwkJCQkJCQkJIGJvb2wgaXNv dmVybGFwcywKKwkJCQkJCQkJIE9pZCAqb3BpZCwKKwkJCQkJCQkJIGludCAqc3RyYXQpCit7 CisJT2lkIG9wZmFtaWx5OworCWNvbnN0IGNoYXIgKm9wbmFtZTsKKworCW9wZmFtaWx5ID0g Z2V0X29wY2xhc3NfZmFtaWx5KG9wY2xhc3MpOworCS8qCisJICogSWYgd2UgaGF2ZSBhIHJh bmdlIHR5cGUsIGZhbGwgYmFjayBvbiBhbnlyYW5nZS4KKwkgKiBUaGlzIHNlZW1zIGxpa2Ug YSBoYWNrCisJICogYnV0IEkgY2FuJ3QgZmluZCBhbnkgZXhpc3RpbmcgbG9va3VwIGZ1bmN0 aW9uCisJICogdGhhdCBrbm93cyBhYm91dCBwc2V1ZG90eXBlcy4KKwkgKiBjb21wYXRpYmxl X29wZXIgaXMgY2xvc2UgYnV0IHdhbnRzIGEgKm5hbWUqLAorCSAqIGFuZCB0aGUgcG9pbnQg aGVyZSBpcyB0byBhdm9pZCBoYXJkY29kaW5nIGEgbmFtZQorCSAqIChhbHRob3VnaCBpdCBz aG91bGQgYWx3YXlzIGJlID0gYW5kICYmKS4KKwkgKgorCSAqIEluIGFkZGl0aW9uIGZvciB0 aGUgbm9ybWFsIGtleSBlbGVtZW50cworCSAqIHRyeSBib3RoIFJURXF1YWxTdHJhdGVneU51 bWJlciBhbmQgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLgorCSAqIElmIHlvdSdyZSB1c2luZyBi dHJlZV9naXN0IHRoZW4geW91J2xsIG5lZWQgdGhlIGxhdHRlci4KKwkgKi8KKwlpZiAoaXNv dmVybGFwcykKKwl7CisJCSpzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOworCQlv cG5hbWUgPSAib3ZlcmxhcHMiOworCQkqb3BpZCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3Bm YW1pbHksIGF0dHR5cGUsIGF0dHR5cGUsICpzdHJhdCk7CisJCWlmICghT2lkSXNWYWxpZCgq b3BpZCkgJiYgdHlwZV9pc19yYW5nZShhdHR0eXBlKSkKKwkJCSpvcGlkID0gZ2V0X29wZmFt aWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQsIEFOWVJBTkdFT0lELCAqc3RyYXQp OworCX0KKwllbHNlCisJeworCQkqc3RyYXQgPSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJ CW9wbmFtZSA9ICJlcXVhbGl0eSI7CisJCSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihv cGZhbWlseSwgYXR0dHlwZSwgYXR0dHlwZSwgKnN0cmF0KTsKKwkJaWYgKCFPaWRJc1ZhbGlk KCpvcGlkKSAmJiB0eXBlX2lzX3JhbmdlKGF0dHR5cGUpKQorCQkJKm9waWQgPSBnZXRfb3Bm YW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBBTllSQU5HRU9JRCwgQU5ZUkFOR0VPSUQsICpzdHJh dCk7CisKKwkJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSkKKwkJeworCQkJKnN0cmF0ID0gQlRF cXVhbFN0cmF0ZWd5TnVtYmVyOworCQkJKm9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9w ZmFtaWx5LCBhdHR0eXBlLCBhdHR0eXBlLCAqc3RyYXQpOworCQkJaWYgKCFPaWRJc1ZhbGlk KCpvcGlkKSAmJiB0eXBlX2lzX3JhbmdlKGF0dHR5cGUpKQorCQkJCSpvcGlkID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQsIEFOWVJBTkdFT0lELCAqc3Ry YXQpOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSkKKwl7CisJCUhlYXBU dXBsZQlvcGZ0dXBsZTsKKwkJRm9ybV9wZ19vcGZhbWlseSBvcGZmb3JtOworCisJCS8qCisJ CSAqIGF0dHJpYnV0ZS0+b3BjbGFzcyBtaWdodCBub3QgZXhwbGljaXRseSBuYW1lIHRoZSBv cGZhbWlseSwKKwkJICogc28gZmV0Y2ggdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIG9wZmFt aWx5IGZvciB1c2UgaW4gdGhlCisJCSAqIGVycm9yIG1lc3NhZ2UuCisJCSAqLworCQlvcGZ0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwKKwkJCQkJCQkJICAgT2JqZWN0 SWRHZXREYXR1bShvcGZhbWlseSkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BmdHVw bGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZmFtaWx5 ICV1IiwKKwkJCQkgb3BmYW1pbHkpOworCQlvcGZmb3JtID0gKEZvcm1fcGdfb3BmYW1pbHkp IEdFVFNUUlVDVChvcGZ0dXBsZSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vICVzIG9wZXJh dG9yIGZvdW5kIGZvciBXSVRIT1VUIE9WRVJMQVBTIGNvbnN0cmFpbnQiLCBvcG5hbWUpLAor CQkJCSBlcnJkZXRhaWwoIlRoZXJlIG11c3QgYmUgYW4gJXMgb3BlcmF0b3Igd2l0aGluIG9w ZmFtaWx5IFwiJXNcIiBmb3IgdHlwZSBcIiVzXCIuIiwKKwkJCQkJCSAgIG9wbmFtZSwKKwkJ CQkJCSAgIE5hbWVTdHIob3BmZm9ybS0+b3BmbmFtZSksCisJCQkJCQkgICBmb3JtYXRfdHlw ZV9iZShhdHR0eXBlKSkpKTsKKwl9Cit9CisKIC8qCiAgKiBDb21wdXRlIHBlci1pbmRleC1j b2x1bW4gaW5mb3JtYXRpb24sIGluY2x1ZGluZyBpbmRleGVkIGNvbHVtbiBudW1iZXJzCiAg KiBvciBpbmRleCBleHByZXNzaW9ucywgb3BjbGFzc2VzIGFuZCB0aGVpciBvcHRpb25zLiBO b3RlLCBhbGwgb3V0cHV0IHZlY3RvcnMKQEAgLTE4NjMsNiArMTk2OCw3IEBAIENvbXB1dGVJ bmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCSAgT2lkIGFjY2Vzc01ldGhv ZElkLAogCQkJCSAgYm9vbCBhbWNhbm9yZGVyLAogCQkJCSAgYm9vbCBpc2NvbnN0cmFpbnQs CisJCQkJICBib29sIGlzdGVtcG9yYWwsCiAJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkg IGludCBkZGxfc2VjX2NvbnRleHQsCiAJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCkK QEAgLTE4ODYsNiArMTk5MiwxNCBAQCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmlu ZGV4SW5mbywKIAllbHNlCiAJCW5leHRFeGNsT3AgPSBOVUxMOwogCisJLyogZXhjbHVzaW9u T3BOYW1lcyBjYW4gYmUgbm9uLU5JTCBpZiB3ZSBhcmUgY3JlYXRpbmcgYSBwYXJ0aXRpb24g Ki8KKwlpZiAoaXN0ZW1wb3JhbCAmJiBleGNsdXNpb25PcE5hbWVzID09IE5JTCkKKwl7CisJ CWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleWNv bHMpOworCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2NzID0gcGFsbG9jX2FycmF5KE9p ZCwgbmtleWNvbHMpOworCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0cyA9IHBhbGxv Y19hcnJheSh1aW50MTYsIG5rZXljb2xzKTsKKwl9CisKIAlpZiAoT2lkSXNWYWxpZChkZGxf dXNlcmlkKSkKIAkJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZl X3NlY19jb250ZXh0KTsKIApAQCAtMjE2MSw2ICsyMjc1LDE5IEBAIENvbXB1dGVJbmRleEF0 dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25T dHJhdHNbYXR0bl0gPSBzdHJhdDsKIAkJCW5leHRFeGNsT3AgPSBsbmV4dChleGNsdXNpb25P cE5hbWVzLCBuZXh0RXhjbE9wKTsKIAkJfQorCQllbHNlIGlmIChpc3RlbXBvcmFsKQorCQl7 CisJCQlpbnQgc3RyYXQ7CisJCQlPaWQgb3BpZDsKKwkJCWdldF9pbmRleF9hdHRyX3RlbXBv cmFsX29wZXJhdG9yKG9wY2xhc3NPaWRzW2F0dG5dLAorCQkJCQkJCQkJCQkgYXR0dHlwZSwK KwkJCQkJCQkJCQkJIGF0dG4gPT0gbmtleWNvbHMgLSAxLAkvKiBUT0RPOiBEb24ndCBhc3N1 bWUgaXQncyBsYXN0PyAqLworCQkJCQkJCQkJCQkgJm9waWQsCisJCQkJCQkJCQkJCSAmc3Ry YXQpOworCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNbYXR0bl0gPSBvcGlkOworCQkJ aW5kZXhJbmZvLT5paV9FeGNsdXNpb25Qcm9jc1thdHRuXSA9IGdldF9vcGNvZGUob3BpZCk7 CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0c1thdHRuXSA9IHN0cmF0OworCQl9 CiAKIAkJLyoKIAkJICogU2V0IHVwIHRoZSBwZXItY29sdW1uIG9wdGlvbnMgKGluZG9wdGlv biBmaWVsZCkuICBGb3Igbm93LCB0aGlzIGlzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IDhhMmM2NzFiNjYuLmJhMmE4OTE0ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC0yMDgsNiArMjA4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTmV3Q29uc3RyYWlu dAogCU9pZAkJCXJlZnJlbGlkOwkJLyogUEsgcmVsLCBpZiBGT1JFSUdOICovCiAJT2lkCQkJ cmVmaW5kaWQ7CQkvKiBPSUQgb2YgUEsncyBpbmRleCwgaWYgRk9SRUlHTiAqLwogCU9pZAkJ CWNvbmlkOwkJCS8qIE9JRCBvZiBwZ19jb25zdHJhaW50IGVudHJ5LCBpZiBGT1JFSUdOICov CisJYm9vbAkJY29udGVtcG9yYWw7CS8qIFdoZXRoZXIgdGhlIG5ldyBjb25zdHJhaW50IGlz IHRlbXBvcmFsICovCiAJTm9kZQkgICAqcXVhbDsJCQkvKiBDaGVjayBleHByIG9yIENPTlNU Ul9GT1JFSUdOIENvbnN0cmFpbnQgKi8KIAlFeHByU3RhdGUgICpxdWFsc3RhdGU7CQkvKiBF eGVjdXRpb24gc3RhdGUgZm9yIENIRUNLIGV4cHIgKi8KIH0gTmV3Q29uc3RyYWludDsKQEAg LTEwMDAzLDYgKzEwMDA0LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1 ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ CSAgY29uaXNsb2NhbCwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJICBjb25pbmhjb3VudCwJ LyogaW5oY291bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9pbmhlcml0LCAvKiBjb25Ob0luaGVy aXQgKi8KKwkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCiAJCQkJCQkJCQkg IGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVz cywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbnN0ck9pZCk7CkBAIC0xMDMwMSw2ICsxMDMw Myw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFp bnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJ CQkJCQkJCSAgMSwKIAkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGZhbHNlLAkvKiBj b25UZW1wb3JhbCAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0xMDgwNiw2 ICsxMDgwOSw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlv biBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlz bG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNl LAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwg Ki8KIAkJCQkJCQkJICB0cnVlKTsKIAogCQkvKiBTZXQgdXAgcGFydGl0aW9uIGRlcGVuZGVu Y2llcyBmb3IgdGhlIG5ldyBjb25zdHJhaW50ICovCkBAIC0xMTQ4MCw2ICsxMTQ4NCw3IEBA IEFURXhlY1ZhbGlkYXRlQ29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWws IGNoYXIgKmNvbnN0ck5hbWUsCiAJCQluZXdjb24tPnJlZnJlbGlkID0gY29uLT5jb25mcmVs aWQ7CiAJCQluZXdjb24tPnJlZmluZGlkID0gY29uLT5jb25pbmRpZDsKIAkJCW5ld2Nvbi0+ Y29uaWQgPSBjb24tPm9pZDsKKwkJCW5ld2Nvbi0+Y29udGVtcG9yYWwgPSBjb24tPmNvbnRl bXBvcmFsOwogCQkJbmV3Y29uLT5xdWFsID0gKE5vZGUgKikgZmtjb25zdHJhaW50OwogCiAJ CQkvKiBGaW5kIG9yIGNyZWF0ZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciB0aGlzIHRhYmxlICov CkBAIC0xMTY0NiwxMCArMTE2NTEsMTIgQEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lk IHJlbElkLCBMaXN0ICpjb2xMaXN0LAogICoKICAqCUxvb2sgdXAgdGhlIG5hbWVzLCBhdHRu dW1zLCBhbmQgdHlwZXMgb2YgdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZXMKICAqCWZvciB0 aGUgcGtyZWwuICBBbHNvIHJldHVybiB0aGUgaW5kZXggT0lEIGFuZCBpbmRleCBvcGNsYXNz ZXMgb2YgdGhlCi0gKglpbmRleCBzdXBwb3J0aW5nIHRoZSBwcmltYXJ5IGtleS4KKyAqCWlu ZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkga2V5LiAgSWYgdGhpcyBpcyBhIHRlbXBvcmFs IHByaW1hcnkga2V5LAorICoJYWxzbyBzZXQgdGhlIFdJVEhPVVQgT1ZFUkxBUFMgYXR0cmli dXRlIG5hbWUsIGF0dG51bSwgYW5kIGF0dHR5cGlkLgogICoKICAqCUFsbCBwYXJhbWV0ZXJz IGV4Y2VwdCBwa3JlbCBhcmUgb3V0cHV0IHBhcmFtZXRlcnMuICBBbHNvLCB0aGUgZnVuY3Rp b24KLSAqCXJldHVybiB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhl IHByaW1hcnkga2V5LgorICoJcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYXR0cmli dXRlcyBpbiB0aGUgcHJpbWFyeSBrZXksCisgKglub3QgaW5jbHVkaW5nIHRoZSBXSVRIT1VU IE9WRVJMQVBTIGlmIGFueS4KICAqCiAgKglVc2VkIHdoZW4gdGhlIGNvbHVtbiBsaXN0IGlu IHRoZSBSRUZFUkVOQ0VTIHNwZWNpZmljYXRpb24gaXMgb21pdHRlZC4KICAqLwpAQCAtMTQx OTEsNyArMTQxOTgsOCBAQCBUcnlSZXVzZUluZGV4KE9pZCBvbGRJZCwgSW5kZXhTdG10ICpz dG10KQogCWlmIChDaGVja0luZGV4Q29tcGF0aWJsZShvbGRJZCwKIAkJCQkJCQkgc3RtdC0+ YWNjZXNzTWV0aG9kLAogCQkJCQkJCSBzdG10LT5pbmRleFBhcmFtcywKLQkJCQkJCQkgc3Rt dC0+ZXhjbHVkZU9wTmFtZXMpKQorCQkJCQkJCSBzdG10LT5leGNsdWRlT3BOYW1lcywKKwkJ CQkJCQkgc3RtdC0+aXN0ZW1wb3JhbCkpCiAJewogCQlSZWxhdGlvbglpcmVsID0gaW5kZXhf b3BlbihvbGRJZCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDUy MTc3NzU5YWIuLjA1NzdiNjA0MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTg0 MSw2ICs4NDEsNyBAQCBDcmVhdGVUcmlnZ2VyRmlyaW5nT24oQ3JlYXRlVHJpZ1N0bXQgKnN0 bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCQkJCQkgIHRydWUsIC8qIGlz bG9jYWwgKi8KIAkJCQkJCQkJCQkJICAwLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJCQkg IHRydWUsIC8qIG5vaW5oZXJpdCAqLworCQkJCQkJCQkJCQkgIGZhbHNlLCAvKiBjb250ZW1w b3JhbCAqLwogCQkJCQkJCQkJCQkgIGlzSW50ZXJuYWwpOwkvKiBpc19pbnRlcm5hbCAqLwog CX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5kZXggNWU5NzYwNjc5My4uNmQwZTk0 NjY4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0zNTQ0LDYgKzM1NDQsNyBA QCBkb21haW5BZGRDb25zdHJhaW50KE9pZCBkb21haW5PaWQsIE9pZCBkb21haW5OYW1lc3Bh Y2UsIE9pZCBiYXNlVHlwZU9pZCwKIAkJCQkJCQkgIHRydWUsIC8qIGlzIGxvY2FsICovCiAJ CQkJCQkJICAwLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGNvbm5vaW5o ZXJpdCAqLworCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICovCiAJCQkJCQkJICBm YWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJaWYgKGNvbnN0ckFkZHIpCiAJCU9iamVjdEFk ZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjY29pZCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQppbmRleCA3ZDIwMzI4ODVlLi4zZWE0YWNiNzRkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKQEAgLTUyMyw3ICs1MjMsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5 cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxlbWVudCBDb25zdHJhaW50RWxl bSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9kZT4JY29sdW1uRGVmIGNvbHVtbk9wdGlv bnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlvbl9lbGVtIG9sZF9hZ2dyX2Vs ZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxub2RlPglkZWZfYXJnIGNvbHVtbkVsZW0g d2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCisldHlwZSA8bm9kZT4JZGVm X2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRfb3ZlcmxhcHNfY2xhdXNlCisJCQkJd2hlcmVfY2xh dXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCiAJCQkJYV9leHByIGJfZXhwciBjX2V4cHIg QWV4cHJDb25zdCBpbmRpcmVjdGlvbl9lbCBvcHRfc2xpY2VfYm91bmQKIAkJCQljb2x1bW5y ZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNfdGFibGUgeG1sdGFibGUgYXJyYXlfZXhw cgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcKQEAgLTQwOTYsNyArNDA5 Nyw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5pbml0aWFsbHlfdmFsaWQgPSB0cnVl OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBVTklRVUUgb3B0X3VuaXF1 ZV9udWxsX3RyZWF0bWVudCAnKCcgY29sdW1uTGlzdCAnKScgb3B0X2NfaW5jbHVkZSBvcHRf ZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBVTklRVUUgb3B0X3VuaXF1ZV9u dWxsX3RyZWF0bWVudCAnKCcgY29sdW1uTGlzdCB3aXRob3V0X292ZXJsYXBzX2NsYXVzZSAn KScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQogCQkJ CUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0g bWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC00MTA1LDExICs0MTA2LDEyIEBAIENvbnN0cmFp bnRFbGVtOgogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQluLT5udWxsc19ub3RfZGlz dGluY3QgPSAhJDI7CiAJCQkJCW4tPmtleXMgPSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0g JDY7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkNzsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9 ICQ1OworCQkJCQluLT5pbmNsdWRpbmcgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4Owog CQkJCQluLT5pbmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0J CQkJCXByb2Nlc3NDQVNiaXRzKCQ5LCBAOSwgIlVOSVFVRSIsCisJCQkJCW4tPmluZGV4c3Bh Y2UgPSAkOTsKKwkJCQkJcHJvY2Vzc0NBU2JpdHMoJDEwLCBAMTAsICJVTklRVUUiLAogCQkJ CQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwgTlVMTCwKIAkJCQkJ CQkJICAgTlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtNDEz MCw3ICs0MTMyLDcgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nh bm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IFBSSU1BUlkgS0VZ ICcoJyBjb2x1bW5MaXN0ICcpJyBvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENv bnNUYWJsZVNwYWNlCisJCQl8IFBSSU1BUlkgS0VZICcoJyBjb2x1bW5MaXN0IHdpdGhvdXRf b3ZlcmxhcHNfY2xhdXNlICcpJyBvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENv bnNUYWJsZVNwYWNlCiAJCQkJQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJ CUNvbnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKQEAgLTQxMzgsMTEgKzQx NDAsMTIgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmNvbnR5cGUgPSBDT05TVFJfUFJJ TUFSWTsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJbi0+a2V5cyA9ICQ0OwotCQkJ CQluLT5pbmNsdWRpbmcgPSAkNjsKLQkJCQkJbi0+b3B0aW9ucyA9ICQ3OworCQkJCQluLT53 aXRob3V0X292ZXJsYXBzID0gJDU7CisJCQkJCW4tPmluY2x1ZGluZyA9ICQ3OworCQkJCQlu LT5vcHRpb25zID0gJDg7CiAJCQkJCW4tPmluZGV4bmFtZSA9IE5VTEw7Ci0JCQkJCW4tPmlu ZGV4c3BhY2UgPSAkODsKLQkJCQkJcHJvY2Vzc0NBU2JpdHMoJDksIEA5LCAiUFJJTUFSWSBL RVkiLAorCQkJCQluLT5pbmRleHNwYWNlID0gJDk7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQx MCwgQDEwLCAiUFJJTUFSWSBLRVkiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4t PmluaXRkZWZlcnJlZCwgTlVMTCwKIAkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwpAQCAtNDIyMCw2ICs0MjIzLDExIEBAIGNvbHVtbkxpc3Q6 CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVtbkVsZW0JCQkJeyAkJCA9IGxhcHBlbmQoJDEs ICQzKTsgfQogCQk7CiAKK3dpdGhvdXRfb3ZlcmxhcHNfY2xhdXNlOgorCQkJJywnIGNvbHVt bkVsZW0gV0lUSE9VVCBPVkVSTEFQUyB7ICQkID0gJDI7IH0KKwkJCXwgLypFTVBUWSovICAg ICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKIGNvbHVtbkVsZW06IENvbElkCiAJ CQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VTdHJpbmcoJDEpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKaW5kZXggNTVjMzE1ZjBlMi4uZTE5NTQxMGMyMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMjQsNiArMTI0LDggQEAgc3RhdGlj IExpc3QgKmdldF9vcGNsYXNzKE9pZCBvcGNsYXNzLCBPaWQgYWN0dWFsX2RhdGF0eXBlKTsK IHN0YXRpYyB2b2lkIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludHMoQ3JlYXRlU3RtdENvbnRl eHQgKmN4dCk7CiBzdGF0aWMgSW5kZXhTdG10ICp0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQo Q29uc3RyYWludCAqY29uc3RyYWludCwKIAkJCQkJCQkJCQkgICBDcmVhdGVTdG10Q29udGV4 dCAqY3h0KTsKK3N0YXRpYyBib29sIGZpbmROZXdPck9sZENvbHVtbihDcmVhdGVTdG10Q29u dGV4dCAqY3h0LCBjaGFyICpjb2xuYW1lLCBjaGFyICoqdHlwbmFtZSwKKwkJCQkJCQkgICBP aWQgKnR5cGlkKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUV4dGVuZGVkU3RhdGlzdGljcyhD cmVhdGVTdG10Q29udGV4dCAqY3h0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUZLQ29uc3Ry YWludHMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJICAgYm9vbCBza2lwVmFs aWRhdGlvbiwKQEAgLTE3MjUsNiArMTcyNyw3IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10 KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCWluZGV4LT51bmlx dWUgPSBpZHhyZWMtPmluZGlzdW5pcXVlOwogCWluZGV4LT5udWxsc19ub3RfZGlzdGluY3Qg PSBpZHhyZWMtPmluZG51bGxzbm90ZGlzdGluY3Q7CiAJaW5kZXgtPnByaW1hcnkgPSBpZHhy ZWMtPmluZGlzcHJpbWFyeTsKKwlpbmRleC0+aXN0ZW1wb3JhbCA9IChpZHhyZWMtPmluZGlz cHJpbWFyeSB8fCBpZHhyZWMtPmluZGlzdW5pcXVlKSAmJiBpZHhyZWMtPmluZGlzZXhjbHVz aW9uOwogCWluZGV4LT50cmFuc2Zvcm1lZCA9IHRydWU7CS8qIGRvbid0IG5lZWQgdHJhbnNm b3JtSW5kZXhTdG10ICovCiAJaW5kZXgtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAlpbmRleC0+ aWZfbm90X2V4aXN0cyA9IGZhbHNlOwpAQCAtMTc3NCw3ICsxNzc3LDkgQEAgZ2VuZXJhdGVD bG9uZWRJbmRleFN0bXQoUmFuZ2VWYXIgKmhlYXBSZWwsIFJlbGF0aW9uIHNvdXJjZV9pZHgs CiAJCQkJaW50CQkJbkVsZW1zOwogCQkJCWludAkJCWk7CiAKLQkJCQlBc3NlcnQoY29ucmVj LT5jb250eXBlID09IENPTlNUUkFJTlRfRVhDTFVTSU9OKTsKKwkJCQlBc3NlcnQoY29ucmVj LT5jb250eXBlID09IENPTlNUUkFJTlRfRVhDTFVTSU9OIHx8CisJCQkJCQkoaW5kZXgtPmlz dGVtcG9yYWwgJiYKKwkJCQkJCSAoY29ucmVjLT5jb250eXBlID09IENPTlNUUkFJTlRfUFJJ TUFSWSB8fCBjb25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklRVUUpKSk7CiAJCQkJ LyogRXh0cmFjdCBvcGVyYXRvciBPSURzIGZyb20gdGhlIHBnX2NvbnN0cmFpbnQgdHVwbGUg Ki8KIAkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCBodF9j b25zdHIsCiAJCQkJCQkJCQkJCSAgIEFudW1fcGdfY29uc3RyYWludF9jb25leGNsb3ApOwpA QCAtMjMxNCw2ICsyMzE5LDcgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFp bnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJfQogCWluZGV4LT5u dWxsc19ub3RfZGlzdGluY3QgPSBjb25zdHJhaW50LT5udWxsc19ub3RfZGlzdGluY3Q7CiAJ aW5kZXgtPmlzY29uc3RyYWludCA9IHRydWU7CisJaW5kZXgtPmlzdGVtcG9yYWwgPSBjb25z dHJhaW50LT53aXRob3V0X292ZXJsYXBzICE9IE5VTEw7CiAJaW5kZXgtPmRlZmVycmFibGUg PSBjb25zdHJhaW50LT5kZWZlcnJhYmxlOwogCWluZGV4LT5pbml0ZGVmZXJyZWQgPSBjb25z dHJhaW50LT5pbml0ZGVmZXJyZWQ7CiAKQEAgLTI0MDYsNiArMjQxMiwxMSBAQCB0cmFuc2Zv cm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENv bnRleHQgKmN4dCkKIAkJCQkJIGVycm1zZygiaW5kZXggXCIlc1wiIGlzIG5vdCB2YWxpZCIs IGluZGV4X25hbWUpLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBj b25zdHJhaW50LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBUb2RheSB3ZSBmb3JiaWQg bm9uLXVuaXF1ZSBpbmRleGVzLCBidXQgd2UgY291bGQgcGVybWl0IEdpU1QKKwkJICogaW5k ZXhlcyB3aG9zZSBsYXN0IGVudHJ5IGlzIGEgcmFuZ2UgdHlwZSBhbmQgdXNlIHRoYXQgdG8g Y3JlYXRlIGEKKwkJICogV0lUSE9VVCBPVkVSTEFQUyBjb25zdHJhaW50IChpLmUuIGEgdGVt cG9yYWwgY29uc3RyYWludCkuCisJCSAqLwogCQlpZiAoIWluZGV4X2Zvcm0tPmluZGlzdW5p cXVlKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCkBAIC0yNjgyLDYgKzI2OTMsNjUgQEAgdHJhbnNmb3JtSW5kZXhDb25z dHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQp CiAJCQkJbm90bnVsbGNtZHMgPSBsYXBwZW5kKG5vdG51bGxjbWRzLCBub3RudWxsY21kKTsK IAkJCX0KIAkJfQorCisJCS8qCisJCSAqIEFueXRoaW5nIGluIHdpdGhvdXRfb3ZlcmxhcHMg c2hvdWxkIGJlIGluY2x1ZGVkLAorCQkgKiBidXQgd2l0aCB0aGUgb3ZlcmxhcHMgb3BlcmF0 b3IgKCYmKSBpbnN0ZWFkIG9mIGVxdWFsaXR5LgorCQkgKi8KKwkJaWYgKGNvbnN0cmFpbnQt PndpdGhvdXRfb3ZlcmxhcHMgIT0gTlVMTCkgeworCQkJY2hhciAqd2l0aG91dF9vdmVybGFw c19zdHIgPSBzdHJWYWwoY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyk7CisJCQlJbmRl eEVsZW0gKmlwYXJhbSA9IG1ha2VOb2RlKEluZGV4RWxlbSk7CisJCQljaGFyICAgKnR5cG5h bWU7CisJCQlPaWQJCXR5cGlkOworCisJCQkvKgorCQkJICogSXRlcmF0ZSB0aHJvdWdoIHRo ZSB0YWJsZSdzIGNvbHVtbnMKKwkJCSAqIChsaWtlIGp1c3QgYSBsaXR0bGUgYml0IGFib3Zl KS4KKwkJCSAqIElmIHdlIGZpbmQgb25lIHdob3NlIG5hbWUgaXMgdGhlIHNhbWUgYXMgd2l0 aG91dF9vdmVybGFwcywKKwkJCSAqIHZhbGlkYXRlIHRoYXQgaXQncyBhIHJhbmdlIHR5cGUu CisJCQkgKgorCQkJICogT3RoZXJ3aXNlIHJlcG9ydCBhbiBlcnJvci4KKwkJCSAqLworCisJ CQlpZiAoZmluZE5ld09yT2xkQ29sdW1uKGN4dCwgd2l0aG91dF9vdmVybGFwc19zdHIsICZ0 eXBuYW1lLCAmdHlwaWQpKQorCQkJeworCQkJCWlmICghdHlwZV9pc19yYW5nZSh0eXBpZCkp CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCisJCQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBpbiBXSVRIT1VU IE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUiLAorCQkJCQkJCQkJd2l0aG91dF9vdmVy bGFwc19zdHIpKSk7CisJCQl9CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCQkgZXJybXNnKCJy YW5nZSBvciBQRVJJT0QgXCIlc1wiIGluIFdJVEhPVVQgT1ZFUkxBUFMgZG9lcyBub3QgZXhp c3QiLAorCQkJCQkJCQl3aXRob3V0X292ZXJsYXBzX3N0cikpKTsKKworCQkJaXBhcmFtLT5u YW1lID0gcHN0cmR1cCh3aXRob3V0X292ZXJsYXBzX3N0cik7CisJCQlpcGFyYW0tPmV4cHIg PSBOVUxMOworCQkJaXBhcmFtLT5pbmRleGNvbG5hbWUgPSBOVUxMOworCQkJaXBhcmFtLT5j b2xsYXRpb24gPSBOSUw7CisJCQlpcGFyYW0tPm9wY2xhc3MgPSBOSUw7CisJCQlpcGFyYW0t Pm9wY2xhc3NvcHRzID0gTklMOworCQkJaXBhcmFtLT5vcmRlcmluZyA9IFNPUlRCWV9ERUZB VUxUOworCQkJaXBhcmFtLT5udWxsc19vcmRlcmluZyA9IFNPUlRCWV9OVUxMU19ERUZBVUxU OworCQkJaW5kZXgtPmluZGV4UGFyYW1zID0gbGFwcGVuZChpbmRleC0+aW5kZXhQYXJhbXMs IGlwYXJhbSk7CisKKwkJCWluZGV4LT5hY2Nlc3NNZXRob2QgPSAiZ2lzdCI7CisJCQljb25z dHJhaW50LT5hY2Nlc3NfbWV0aG9kID0gImdpc3QiOworCisJCQlpZiAoY29uc3RyYWludC0+ Y29udHlwZSA9PSBDT05TVFJfUFJJTUFSWSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEZvcmNl IHRoZSBjb2x1bW4gdG8gTk9UIE5VTEwgc2luY2UgaXQgaXMgcGFydCBvZiB0aGUgcHJpbWFy eSBrZXkuCisJCQkJICovCisJCQkJQWx0ZXJUYWJsZUNtZCAqbm90bnVsbGNtZCA9IG1ha2VO b2RlKEFsdGVyVGFibGVDbWQpOworCisJCQkJbm90bnVsbGNtZC0+c3VidHlwZSA9IEFUX1Nl dEF0dE5vdE51bGw7CisJCQkJbm90bnVsbGNtZC0+bmFtZSA9IHBzdHJkdXAod2l0aG91dF9v dmVybGFwc19zdHIpOworCQkJCW5vdG51bGxjbWRzID0gbGFwcGVuZChub3RudWxsY21kcywg bm90bnVsbGNtZCk7CisJCQl9CisJCX0KIAl9CiAKIAkvKgpAQCAtMjgwMSw2ICsyODcxLDU4 IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBD cmVhdGVTdG10Q29udGV4dCAqY3h0KQogCXJldHVybiBpbmRleDsKIH0KIAorLyoKKyAqIFRy aWVzIHRvIGZpbmQgYSBjb2x1bW4gYnkgbmFtZSBhbW9uZyB0aGUgZXhpc3Rpbmcgb25lcyAo aWYgaXQncyBhbiBBTFRFUiBUQUJMRSkKKyAqIGFuZCB0aGUgbmV3IG9uZXMuIFNldHMgdHlw bmFtZSBhbmQgdHlwaWQgaWYgb25lIGlzIGZvdW5kLiBSZXR1cm5zIGZhbHNlIGlmIHdlCisg KiBjb3VsZG4ndCBmaW5kIGEgbWF0Y2guCisgKi8KK3N0YXRpYyBib29sCitmaW5kTmV3T3JP bGRDb2x1bW4oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgY2hhciAqY29sbmFtZSwgY2hhciAq KnR5cG5hbWUsIE9pZCAqdHlwaWQpCit7CisJLyogQ2hlY2sgdGhlIG5ldyBjb2x1bW5zIGZp cnN0IGluIGNhc2UgdGhlaXIgdHlwZSBpcyBjaGFuZ2luZy4gKi8KKworCUNvbHVtbkRlZiAg KmNvbHVtbiA9IE5VTEw7CisJTGlzdENlbGwgICAqY29sdW1uczsKKworCWZvcmVhY2goY29s dW1ucywgY3h0LT5jb2x1bW5zKQorCXsKKwkJY29sdW1uID0gbGZpcnN0X25vZGUoQ29sdW1u RGVmLCBjb2x1bW5zKTsKKwkJaWYgKHN0cmNtcChjb2x1bW4tPmNvbG5hbWUsIGNvbG5hbWUp ID09IDApCisJCXsKKwkJCSp0eXBpZCA9IHR5cGVuYW1lVHlwZUlkKE5VTEwsIGNvbHVtbi0+ dHlwZU5hbWUpOworCQkJKnR5cG5hbWUgPSBUeXBlTmFtZVRvU3RyaW5nKGNvbHVtbi0+dHlw ZU5hbWUpOworCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisKKwkvKiBMb29rIHVwIGNvbHVt bnMgb24gZXhpc3RpbmcgdGFibGUuICovCisKKwlpZiAoY3h0LT5pc2FsdGVyKQorCXsKKwkJ UmVsYXRpb24gcmVsID0gY3h0LT5yZWw7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgcmVsLT5y ZF9hdHQtPm5hdHRzOyBpKyspCisJCXsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBU dXBsZURlc2NBdHRyKHJlbC0+cmRfYXR0LCBpKTsKKwkJCWNvbnN0IGNoYXIgKmF0dG5hbWU7 CisKKwkJCWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCisJCQkJY29udGludWU7CisKKwkJCWF0 dG5hbWUgPSBOYW1lU3RyKGF0dHItPmF0dG5hbWUpOworCQkJaWYgKHN0cmNtcChhdHRuYW1l LCBjb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCVR5cGUgdHlwZSA9IHR5cGVpZFR5cGUoYXR0 ci0+YXR0dHlwaWQpOworCQkJCSp0eXBpZCA9IGF0dHItPmF0dHR5cGlkOworCQkJCSp0eXBu YW1lID0gcHN0cmR1cCh0eXBlVHlwZU5hbWUodHlwZSkpOworCQkJCVJlbGVhc2VTeXNDYWNo ZSh0eXBlKTsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBm YWxzZTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUV4dGVuZGVkU3RhdGlzdGljcwogICogICAg IEhhbmRsZSBleHRlbmRlZCBzdGF0aXN0aWMgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCmluZGV4IDY4ZjMwMTQ4NGUuLjdhYTViNjJhYjggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKQEAgLTMzOCw4ICszMzgsOCBAQCBzdGF0aWMgY2hhciAqZGVw YXJzZV9leHByZXNzaW9uX3ByZXR0eShOb2RlICpleHByLCBMaXN0ICpkcGNvbnRleHQsCiBz dGF0aWMgY2hhciAqcGdfZ2V0X3ZpZXdkZWZfd29ya2VyKE9pZCB2aWV3b2lkLAogCQkJCQkJ CQkgICBpbnQgcHJldHR5RmxhZ3MsIGludCB3cmFwQ29sdW1uKTsKIHN0YXRpYyBjaGFyICpw Z19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpOwotc3Rh dGljIGludAlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRl eF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CitzdGF0 aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4 X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAorCQkJCQkJCQkJCSBib29sIHdpdGhv dXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxl ZGVmX3dvcmtlcihPaWQgcnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFy ICpwZ19nZXRfaW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJ CQkJCQkJCQljb25zdCBPaWQgKmV4Y2x1ZGVPcHMsCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBw Z19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxs Q29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwg dHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlk ZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZi dWYpOworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5j b25yZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCAmYnVmKTsKIAogCQkJCS8qIGFk ZCBmb3JlaWduIHJlbGF0aW9uIG5hbWUgKi8KIAkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYs ICIpIFJFRkVSRU5DRVMgJXMoIiwKQEAgLTIyNTgsNyArMjI1OCw3IEBAIHBnX2dldF9jb25z dHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAog CQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJ CQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZmtleSk7CiAKLQkJCQlkZWNvbXBpbGVf Y29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlkLCAmYnVmKTsKKwkJ CQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlk LCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjM0NCw3ICsyMzQ0LDcgQEAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQs CiAJCQkJaWYgKCFpc251bGwpCiAJCQkJewogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZidWYsICIgKCIpOwotCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwg Y29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4 X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIEludmFsaWRPaWQsIGZhbHNlLCAmYnVm KTsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAkJCQl9CiAKQEAg LTIzNTcsNiArMjM1Nyw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29u c3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCU9pZAkJCWluZGV4SWQ7CiAJCQkJ aW50CQkJa2V5YXR0czsKIAkJCQlIZWFwVHVwbGUJaW5kdHVwOworCQkJCWJvb2wJCWlzbnVs bDsKIAogCQkJCS8qIFN0YXJ0IG9mZiB0aGUgY29uc3RyYWludCBkZWZpbml0aW9uICovCiAJ CQkJaWYgKGNvbkZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZKQpAQCAtMjM3 OSw3ICsyMzgwLDE0IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3Ry YWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5v dE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRf Y29ua2V5KTsKIAotCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5 KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCS8qCisJCQkJICogSWYgaXQg aGFzIGV4Y2x1c2lvbi1zdHlsZSBvcGVyYXRvciBPSURzCisJCQkJICogdGhlbiBpdCB1c2Vz IFdJVEhPVVQgT1ZFUkxBUFMuCisJCQkJICovCisJCQkJaW5kZXhJZCA9IGNvbkZvcm0tPmNv bmluZGlkOworCQkJCVN5c0NhY2hlR2V0QXR0cihDT05TVFJPSUQsIHR1cCwKKwkJCQkJCSAg QW51bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCwgJmlzbnVsbCk7CisJCQkJa2V5YXR0cyA9 IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwg aW5kZXhJZCwgIWlzbnVsbCwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigm YnVmLCAnKScpOwogCkBAIC0yNTc0LDggKzI1ODIsOCBAQCBwZ19nZXRfY29uc3RyYWludGRl Zl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKICAqIG9mIGtl eXMuCiAgKi8KIHN0YXRpYyBpbnQKLWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0 dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJIFN0cmluZ0luZm8g YnVmKQorZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhf YXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQsCisJCQkJCQkJIGJvb2wgd2l0aG91dE92 ZXJsYXBzLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQlu S2V5czsKQEAgLTI1ODgsMTEgKzI1OTYsMTQgQEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKIAlmb3IgKGogPSAw OyBqIDwgbktleXM7IGorKykKIAl7CiAJCWNoYXIJICAgKmNvbE5hbWU7CisJCWludAkJCWNv bGlkID0gRGF0dW1HZXRJbnQxNihrZXlzW2pdKTsKIAotCQljb2xOYW1lID0gZ2V0X2F0dG5h bWUocmVsSWQsIERhdHVtR2V0SW50MTYoa2V5c1tqXSksIGZhbHNlKTsKKwkJY29sTmFtZSA9 IGdldF9hdHRuYW1lKHJlbElkLCBjb2xpZCwgZmFsc2UpOwogCiAJCWlmIChqID09IDApCiAJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1l KSk7CisJCWVsc2UgaWYgKHdpdGhvdXRPdmVybGFwcyAmJiBqID09IG5LZXlzIC0gMSkKKwkJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyBXSVRIT1VUIE9WRVJMQVBTIiwgcXVvdGVf aWRlbnRpZmllcihjb2xOYW1lKSk7CiAJCWVsc2UKIAkJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiLCAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDcyMzRjYjNkYTYuLjc3YTViMjU4ODkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTUzNiw4ICs1NTM2LDkgQEAgUmVs YXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChSZWxhdGlvbiByZWxhdGlvbikKICAqIFJlbGF0 aW9uR2V0RXhjbHVzaW9uSW5mbyAtLSBnZXQgaW5mbyBhYm91dCBpbmRleCdzIGV4Y2x1c2lv biBjb25zdHJhaW50CiAgKgogICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgZm9yIGFu IGluZGV4IHRoYXQgaXMga25vd24gdG8gaGF2ZSBhbgotICogYXNzb2NpYXRlZCBleGNsdXNp b24gY29uc3RyYWludC4gIEl0IHJldHVybnMgYXJyYXlzIChwYWxsb2MnZCBpbiBjYWxsZXIn cwotICogY29udGV4dCkgb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvciBPSURzLCB0aGVpciB1 bmRlcmx5aW5nIGZ1bmN0aW9ucycKKyAqIGFzc29jaWF0ZWQgZXhjbHVzaW9uIGNvbnN0cmFp bnQgb3IgdGVtcG9yYWwgcHJpbWFyeSBrZXkvdW5pcXVlCisgKiBjb25zdHJhaW50LiBJdCBy ZXR1cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVyJ3MgY29udGV4dCkKKyAqIG9mIHRo ZSBleGNsdXNpb24gb3BlcmF0b3IgT0lEcywgdGhlaXIgdW5kZXJseWluZyBmdW5jdGlvbnMn CiAgKiBPSURzLCBhbmQgdGhlaXIgc3RyYXRlZ3kgbnVtYmVycyBpbiB0aGUgaW5kZXgncyBv cGNsYXNzZXMuICBXZSBjYWNoZQogICogYWxsIHRoaXMgaW5mb3JtYXRpb24gc2luY2UgaXQg cmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiB3b3JrIHRvIGdldC4KICAqLwpAQCAtNTYwMyw3 ICs1NjA0LDEwIEBAIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJl bGF0aW9uLAogCQlpbnQJCQluZWxlbTsKIAogCQkvKiBXZSB3YW50IHRoZSBleGNsdXNpb24g Y29uc3RyYWludCBvd25pbmcgdGhlIGluZGV4ICovCi0JCWlmIChjb25mb3JtLT5jb250eXBl ICE9IENPTlNUUkFJTlRfRVhDTFVTSU9OIHx8CisJCWlmICgoY29uZm9ybS0+Y29udHlwZSAh PSBDT05TVFJBSU5UX0VYQ0xVU0lPTiAmJgorCQkJCQkhKGNvbmZvcm0tPmNvbnRlbXBvcmFs ICYmICgKKwkJCQkJCQljb25mb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfUFJJTUFSWQor CQkJCQkJCXx8IGNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9VTklRVUUpKSkgfHwK IAkJCWNvbmZvcm0tPmNvbmluZGlkICE9IFJlbGF0aW9uR2V0UmVsaWQoaW5kZXhSZWxhdGlv bikpCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZjdiNjE3NjY5Mi4uZWZl OGQ3MmIzMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC02OTcyLDcgKzY5NzIsOCBAQCBnZXRJbmRl eGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMp CiAJCQkJaV90YWJsZXNwYWNlLAogCQkJCWlfaW5kcmVsb3B0aW9ucywKIAkJCQlpX2luZHN0 YXRjb2xzLAotCQkJCWlfaW5kc3RhdHZhbHM7CisJCQkJaV9pbmRzdGF0dmFscywKKwkJCQlp X3dpdGhvdXRvdmVybGFwczsKIAogCS8qCiAJICogV2Ugd2FudCB0byBwZXJmb3JtIGp1c3Qg b25lIHF1ZXJ5IGFnYWluc3QgcGdfaW5kZXguICBIb3dldmVyLCB3ZQpAQCAtNzA0NywxMCAr NzA0OCwxNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZv W10sIGludCBudW1UYWJsZXMpCiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAw MDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiaS5pbmRudWxs c25vdGRpc3RpbmN0ICIpOworCQkJCQkJCSAiaS5pbmRudWxsc25vdGRpc3RpbmN0LCAiKTsK IAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiZmFsc2Ug QVMgaW5kbnVsbHNub3RkaXN0aW5jdCAiKTsKKwkJCQkJCQkgImZhbHNlIEFTIGluZG51bGxz bm90ZGlzdGluY3QsICIpOworCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAw KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgImMuY29uZXhjbG9w IElTIE5PVCBOVUxMIEFTIHdpdGhvdXRvdmVybGFwcyAiKTsKKwllbHNlCisJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAibnVsbCBBUyB3aXRob3V0b3ZlcmxhcHMg Iik7CiAKIAkvKgogCSAqIFRoZSBwb2ludCBvZiB0aGUgbWVzc3ktbG9va2luZyBvdXRlciBq b2luIGlzIHRvIGZpbmQgYSBjb25zdHJhaW50IHRoYXQKQEAgLTcxMjUsNiArNzEzMyw3IEBA IGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51 bVRhYmxlcykKIAlpX2luZHJlbG9wdGlvbnMgPSBQUWZudW1iZXIocmVzLCAiaW5kcmVsb3B0 aW9ucyIpOwogCWlfaW5kc3RhdGNvbHMgPSBQUWZudW1iZXIocmVzLCAiaW5kc3RhdGNvbHMi KTsKIAlpX2luZHN0YXR2YWxzID0gUFFmbnVtYmVyKHJlcywgImluZHN0YXR2YWxzIik7CisJ aV93aXRob3V0b3ZlcmxhcHMgPSBQUWZudW1iZXIocmVzLCAid2l0aG91dG92ZXJsYXBzIik7 CiAKIAlpbmR4aW5mbyA9IChJbmR4SW5mbyAqKSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2Yo SW5keEluZm8pKTsKIApAQCAtNzIyNyw2ICs3MjM2LDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWNvbnN0 cmluZm8tPmNvbmRlZmVycmVkID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9jb25kZWZlcnJl ZCkpID09ICd0JzsKIAkJCQljb25zdHJpbmZvLT5jb25pc2xvY2FsID0gdHJ1ZTsKIAkJCQlj b25zdHJpbmZvLT5zZXBhcmF0ZSA9IHRydWU7CisJCQkJY29uc3RyaW5mby0+d2l0aG91dG92 ZXJsYXBzID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV93aXRob3V0b3ZlcmxhcHMpKSA9PSAn dCc7CiAKIAkJCQlpbmR4aW5mb1tqXS5pbmRleGNvbnN0cmFpbnQgPSBjb25zdHJpbmZvLT5k b2JqLmR1bXBJZDsKIAkJCX0KQEAgLTE2OTIyLDkgKzE2OTMyLDIyIEBAIGR1bXBDb25zdHJh aW50KEFyY2hpdmUgKmZvdXQsIGNvbnN0IENvbnN0cmFpbnRJbmZvICpjb25pbmZvKQogCQkJ CQlicmVhazsKIAkJCQlhdHRuYW1lID0gZ2V0QXR0ck5hbWUoaW5ka2V5LCB0YmluZm8pOwog Ci0JCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiVzJXMiLAotCQkJCQkJCQkgIChrID09IDAp ID8gIiIgOiAiLCAiLAotCQkJCQkJCQkgIGZtdElkKGF0dG5hbWUpKTsKKwkJCQlpZiAoayA9 PSAwKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiVzIiwKKwkJCQkJCQkJ CQlmbXRJZChhdHRuYW1lKSk7CisJCQkJfQorCQkJCWVsc2UgaWYgKGsgPT0gaW5keGluZm8t PmluZG5rZXlhdHRycyAtIDEgJiYKKwkJCQkJCWNvbmluZm8tPndpdGhvdXRvdmVybGFwcykK KwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIsICVzIFdJVEhPVVQgT1ZFUkxB UFMiLAorCQkJCQkJCQkJICBmbXRJZChhdHRuYW1lKSk7CisJCQkJfQorCQkJCWVsc2UKKwkJ CQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIsICVzIiwKKwkJCQkJCQkJCQlmbXRJ ZChhdHRuYW1lKSk7CisJCQkJfQogCQkJfQogCiAJCQlpZiAoaW5keGluZm8tPmluZG5rZXlh dHRycyA8IGluZHhpbmZvLT5pbmRuYXR0cnMpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA5MDM2YjEz ZjZhLi43NzNhMmRlMThiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTQ4OSw2ICs0ODksNyBAQCB0 eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAlib29sCQljb25kZWZlcnJlZDsJLyog dHJ1ZSBpZiBjb25zdHJhaW50IGlzIElOSVRJQUxMWSBERUZFUlJFRCAqLwogCWJvb2wJCWNv bmlzbG9jYWw7CQkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaGFzIGxvY2FsIGRlZmluaXRpb24g Ki8KIAlib29sCQlzZXBhcmF0ZTsJCS8qIHRydWUgaWYgbXVzdCBkdW1wIGFzIHNlcGFyYXRl IGl0ZW0gKi8KKwlib29sCQl3aXRob3V0b3ZlcmxhcHM7CS8qIHRydWUgaWYgdGhlIGxhc3Qg ZWxlbSBpcyBXSVRIT1VUIE9WRVJMQVBTICovCiB9IENvbnN0cmFpbnRJbmZvOwogCiB0eXBl ZGVmIHN0cnVjdCBfcHJvY0xhbmdJbmZvCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmlu ZGV4IDA3NThmZTVlYTAuLjIyYWE4N2QzZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsCkBAIC0xMDE1LDYgKzEwMTUsNTIgQEAgbXkgJXRlc3RzID0gKAogCQl9LAogCX0sCiAK KwknQUxURVIgVEFCTEUgT05MWSB0ZXN0X3RhYmxlX3RwayBBREQgQ09OU1RSQUlOVCAuLi4g UFJJTUFSWSBLRVkgKC4uLiwgLi4uIFdJVEhPVVQgT1ZFUkxBUFMpJyA9PiB7CisJCWNyZWF0 ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHBrICgKKwkJ CQkJCQljb2wxIGludDRyYW5nZSwKKwkJCQkJCQljb2wyIHRzdHpyYW5nZSwKKwkJCQkJCQlD T05TVFJBSU5UIHRlc3RfdGFibGVfdHBrX3BrZXkgUFJJTUFSWSBLRVkKKwkJCQkJCQkJKGNv bDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUykpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlc UUFMVEVSIFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHBrXEUgXG5eXHMrCisJ CQlcUUFERCBDT05TVFJBSU5UIHRlc3RfdGFibGVfdHBrX3BrZXkgUFJJTUFSWSBLRVkgKGNv bDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7CisJ CQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25f cG9zdF9kYXRhICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlID0+IDEsCisJCX0sCisJ CXVubGlrZSA9PiB7CisJCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKKwkJCWV4 Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX21lYXN1cmVtZW50 ICAgID0+IDEsCisJCX0sCisJfSwKKworCSdBTFRFUiBUQUJMRSBPTkxZIHRlc3RfdGFibGVf dHVxIEFERCBDT05TVFJBSU5UIC4uLiBVTklRVUUgKC4uLiwgLi4uIFdJVEhPVVQgT1ZFUkxB UFMpJyA9PiB7CisJCWNyZWF0ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRl c3RfdGFibGVfdHVxICgKKwkJCQkJCQljb2wxIGludDRyYW5nZSwKKwkJCQkJCQljb2wyIHRz dHpyYW5nZSwKKwkJCQkJCQlDT05TVFJBSU5UIHRlc3RfdGFibGVfdHVxX3VxIFVOSVFVRQor CQkJCQkJCQkoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKSk7JywKKwkJcmVnZXhwID0+ IHFyL14KKwkJCVxRQUxURVIgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZV90dXFc RSBcbl5ccysKKwkJCVxRQUREIENPTlNUUkFJTlQgdGVzdF90YWJsZV90dXFfdXEgVU5JUVVF IChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xFCisJCQkveG0sCisJCWxpa2UgPT4g eworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0 aW9uX3Bvc3RfZGF0YSAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZSA9PiAxLAorCQl9 LAorCQl1bmxpa2UgPT4geworCQkJb25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJ CQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJl bWVudCAgICA9PiAxLAorCQl9LAorCX0sCisKIAknQUxURVIgVEFCTEUgKHBhcnRpdGlvbmVk KSBBREQgQ09OU1RSQUlOVCAuLi4gRk9SRUlHTiBLRVknID0+IHsKIAkJY3JlYXRlX29yZGVy ID0+IDQsCiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90 YWJsZV9mayAoCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGJhYzk0YTMzOGMuLjRmYmZjMDc0NjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCkBAIC0yMzg0LDYgKzIzODQsMTAgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCWVsc2UKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLCAiLCBmYWxzZSBBUyBpbmRpc3JlcGxpZGVudCIpOwogCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmJ1ZiwgIiwgYzIucmVsdGFibGVzcGFjZSIpOworCQkJaWYgKHBzZXQu c3ZlcnNpb24gPj0gMTYwMDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIs IGNvbi5jb250ZW1wb3JhbCIpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZidWYsICIsIGZhbHNlIEFTIGNvbnRlbXBvcmFsIik7CiAJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkJCSAgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2Nh dGFsb2cucGdfY2xhc3MgYzIsIHBnX2NhdGFsb2cucGdfaW5kZXggaVxuIgogCQkJCQkJCSAg IiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjb24gT04gKGNvbnJlbGlk ID0gaS5pbmRyZWxpZCBBTkQgY29uaW5kaWQgPSBpLmluZGV4cmVsaWQgQU5EIGNvbnR5cGUg SU4gKCdwJywndScsJ3gnKSlcbiIKQEAgLTI0MDUsOCArMjQwOSwxMiBAQCBkZXNjcmliZU9u ZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsCiAJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVz dWx0LCBpLCAwKSk7CiAKLQkJCQkJLyogSWYgZXhjbHVzaW9uIGNvbnN0cmFpbnQsIHByaW50 IHRoZSBjb25zdHJhaW50ZGVmICovCi0JCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1 bHQsIGksIDcpLCAieCIpID09IDApCisJCQkJCS8qCisJCQkJCSAqIElmIGV4Y2x1c2lvbiBj b25zdHJhaW50IG9yIHRlbXBvcmFsIFBLL1VOSVFVRSBjb25zdHJhaW50LAorCQkJCQkgKiBw cmludCB0aGUgY29uc3RyYWludGRlZgorCQkJCQkgKi8KKwkJCQkJaWYgKHN0cmNtcChQUWdl dHZhbHVlKHJlc3VsdCwgaSwgNyksICJ4IikgPT0gMCB8fAorCQkJCQkJCXN0cmNtcChQUWdl dHZhbHVlKHJlc3VsdCwgaSwgMTIpLCAidCIpID09IDApCiAJCQkJCXsKIAkJCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsICIgJXMiLAogCQkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1 bHQsIGksIDYpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA0ZDhiYTgxZjkwLi5hNjA0NTQ2 ZjQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC05MSw2ICs5MSw3IEBAIGV4dGVybiBPaWQJ aW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICNkZWZpbmUJSU5ERVhfQ09O U1RSX0NSRUFURV9JTklUX0RFRkVSUkVECSgxIDw8IDIpCiAjZGVmaW5lCUlOREVYX0NPTlNU Ul9DUkVBVEVfVVBEQVRFX0lOREVYCSgxIDw8IDMpCiAjZGVmaW5lCUlOREVYX0NPTlNUUl9D UkVBVEVfUkVNT1ZFX09MRF9ERVBTCSgxIDw8IDQpCisjZGVmaW5lCUlOREVYX0NPTlNUUl9D UkVBVEVfVEVNUE9SQUwJCSgxIDw8IDUpCiAKIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVu dGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBP aWQgb2xkSW5kZXhJZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29u c3RyYWludC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5kZXgg OWI5ZDhmYWYzNS4uNzg2YTljYTkwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jb25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJh aW50LmgKQEAgLTEwNyw2ICsxMDcsMTIgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYs Q29uc3RyYWludFJlbGF0aW9uSWQpCiAJLyogSGFzIGEgbG9jYWwgZGVmaW5pdGlvbiBhbmQg Y2Fubm90IGJlIGluaGVyaXRlZCAqLwogCWJvb2wJCWNvbm5vaW5oZXJpdDsKIAorCS8qCisJ ICogRm9yIHByaW1hcnkgYW5kIGZvcmVpZ24ga2V5cywgc2lnbmlmaWVzIHRoZSBsYXN0IGNv bHVtbiBpcyBhIHJhbmdlCisJICogYW5kIHNob3VsZCB1c2Ugb3ZlcmxhcHMgaW5zdGVhZCBv ZiBlcXVhbHMuCisJICovCisJYm9vbAkJY29udGVtcG9yYWw7CisKICNpZmRlZiBDQVRBTE9H X1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCiAJ LyoKQEAgLTE0Niw3ICsxNTIsNyBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQsMjYwNixDb25z dHJhaW50UmVsYXRpb25JZCkKIAogCS8qCiAJICogSWYgYW4gZXhjbHVzaW9uIGNvbnN0cmFp bnQsIHRoZSBPSURzIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3JzIGZvcgotCSAqIGVhY2gg Y29sdW1uIG9mIHRoZSBjb25zdHJhaW50CisJICogZWFjaCBjb2x1bW4gb2YgdGhlIGNvbnN0 cmFpbnQuIEFsc28gc2V0IGZvciB0ZW1wb3JhbCBwcmltYXJ5IGtleXMuCiAJICovCiAJT2lk CQkJY29uZXhjbG9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCkBAIC0yMzYsNiAr MjQyLDcgQEAgZXh0ZXJuIE9pZAlDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAq Y29uc3RyYWludE5hbWUsCiAJCQkJCQkJCSAgYm9vbCBjb25Jc0xvY2FsLAogCQkJCQkJCQkg IGludCBjb25JbmhDb3VudCwKIAkJCQkJCQkJICBib29sIGNvbk5vSW5oZXJpdCwKKwkJCQkJ CQkJICBib29sIGNvblRlbXBvcmFsLAogCQkJCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpOwog CiBleHRlcm4gYm9vbCBDb25zdHJhaW50TmFtZUlzVXNlZChDb25zdHJhaW50Q2F0ZWdvcnkg Y29uQ2F0LCBPaWQgb2JqSWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9k ZWZyZW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDE3OWViOTkw MWYuLmYxMDg4NmY2Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJl bS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC00NCw3ICs0NCw4 IEBAIGV4dGVybiBjaGFyICpDaG9vc2VSZWxhdGlvbk5hbWUoY29uc3QgY2hhciAqbmFtZTEs IGNvbnN0IGNoYXIgKm5hbWUyLAogZXh0ZXJuIGJvb2wgQ2hlY2tJbmRleENvbXBhdGlibGUo T2lkIG9sZElkLAogCQkJCQkJCQkgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwKIAkJ CQkJCQkJIGNvbnN0IExpc3QgKmF0dHJpYnV0ZUxpc3QsCi0JCQkJCQkJCSBjb25zdCBMaXN0 ICpleGNsdXNpb25PcE5hbWVzKTsKKwkJCQkJCQkJIGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9w TmFtZXMsCisJCQkJCQkJCSBib29sIGlzdGVtcG9yYWwpOwogZXh0ZXJuIE9pZAlHZXREZWZh dWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKTsKIGV4dGVybiBPaWQJUmVzb2x2 ZU9wQ2xhc3MoY29uc3QgTGlzdCAqb3BjbGFzcywgT2lkIGF0dHJUeXBlLAogCQkJCQkJICAg Y29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwgT2lkIGFjY2Vzc01ldGhvZElkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZWY0YzcxNGI4Li4wNzQ3YjU0YjI2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yNjQxLDYgKzI2NDEsOSBAQCB0eXBlZGVmIHN0 cnVjdCBDb25zdHJhaW50CiAJT2lkCQkJb2xkX3BrdGFibGVfb2lkOwkvKiBwZ19jb25zdHJh aW50LmNvbmZyZWxpZCBvZiBteSBmb3JtZXIKIAkJCQkJCQkJCSAqIHNlbGYgKi8KIAorCS8q IEZpZWxkcyB1c2VkIGZvciB0ZW1wb3JhbCBQUklNQVJZIEtFWSBhbmQgRk9SRUlHTiBLRVkg Y29uc3RyYWludHM6ICovCisJTm9kZQkgICAqd2l0aG91dF9vdmVybGFwczsgLyogU3RyaW5n IG5vZGUgbmFtaW5nIHJhbmdlIGNvbHVtbiAqLworCiAJLyogRmllbGRzIHVzZWQgZm9yIGNv bnN0cmFpbnRzIHRoYXQgYWxsb3cgYSBOT1QgVkFMSUQgc3BlY2lmaWNhdGlvbiAqLwogCWJv b2wJCXNraXBfdmFsaWRhdGlvbjsJLyogc2tpcCB2YWxpZGF0aW9uIG9mIGV4aXN0aW5nIHJv d3M/ICovCiAJYm9vbAkJaW5pdGlhbGx5X3ZhbGlkOwkvKiBtYXJrIHRoZSBuZXcgY29uc3Ry YWludCBhcyB2YWxpZD8gKi8KQEAgLTMyNDIsNiArMzI0NSw3IEBAIHR5cGVkZWYgc3RydWN0 IEluZGV4U3RtdAogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1l bnQgZm9yIFVOSVFVRSBjb25zdHJhaW50cyAqLwogCWJvb2wJCXByaW1hcnk7CQkvKiBpcyBp bmRleCBhIHByaW1hcnkga2V5PyAqLwogCWJvb2wJCWlzY29uc3RyYWludDsJLyogaXMgaXQg Zm9yIGEgcGtleS91bmlxdWUgY29uc3RyYWludD8gKi8KKwlib29sCQlpc3RlbXBvcmFsOwkJ LyogaXMgaXQgZm9yIGEgdGVtcG9yYWwgcGtleT8gKi8KIAlib29sCQlkZWZlcnJhYmxlOwkJ LyogaXMgdGhlIGNvbnN0cmFpbnQgREVGRVJSQUJMRT8gKi8KIAlib29sCQlpbml0ZGVmZXJy ZWQ7CS8qIGlzIHRoZSBjb25zdHJhaW50IElOSVRJQUxMWSBERUZFUlJFRD8gKi8KIAlib29s CQl0cmFuc2Zvcm1lZDsJLyogdHJ1ZSB3aGVuIHRyYW5zZm9ybUluZGV4U3RtdCBpcyBmaW5p c2hlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0 X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWUxMjZk ZjA3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQKQEAgLTAsMCArMSwzNTkgQEAKKy0tIFRlc3RzIGZvciBXSVRI T1VUIE9WRVJMQVBTLgorLS0KKy0tIFdlIGxlYXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0 byB0ZXN0IHBnX2R1bXAgZXRjOgorLS0gdGVtcG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAor LS0gdGVtcG9yYWxfZmtfcm5nMnJuZy4KKy0tCistLSB0ZXN0IGlucHV0IHBhcnNlcgorLS0K Ky0tIFBLIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcm5nICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIldJVEhPVVQiCitMSU5F IDM6ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQg V0lUSE9VVCBPVi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIFBLIHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9E IHRoYXQgaXNuJ3QgdGhlcmU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBJ TlRFR0VSLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIHJhbmdlIG9yIFBFUklP RCAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMgZG9lcyBub3QgZXhpc3QKKy0tIFBL IHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAo CisJaWQgSU5URUdFUiwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMgbm90 IGEgcmFuZ2UgdHlwZQorLS0gUEsgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSByYW5nZToKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCS0tIFNpbmNlIHdlIGNhbid0IGRlcGVuZCBv biBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBhbiBpbnQ0cmFuZ2UgaW5zdGVh ZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJlZ3Jlc3Npb24gdGVzdCB1c2Vz IHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nCisgICAgICAgICAgICAg IFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nIgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJh bmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmdf cGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKworU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKyAgICAgICAgICAgIHBnX2dldF9jb25z dHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAw LCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9y bmdfcGsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhk ZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nX3BrIE9OIHRlbXBv cmFsX3JuZyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCisoMSByb3cpCisKKy0tIFBLIHdp dGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAoaWQxLCBp ZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMgor ICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMiIKKyAgQ29sdW1uICB8 ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEg ICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgaWQyICAgICAg fCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgdHNy YW5nZSAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBv cmFsX3JuZzJfcGsiIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisgICAgICAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFBSSU1BUlkg S0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKwor U0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nMl9wayBPTiB0ZW1wb3Jh bF9ybmcyIFVTSU5HIGdpc3QgKGlkMSwgaWQyLCB2YWxpZF9hdCkKKygxIHJvdykKKworRFJP UCBUQUJMRSB0ZW1wb3JhbF9ybmcyOworLS0gUEsgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBl OgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5nZSAoc3VidHlwZT10ZXh0LCBjb2xs YXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX3JuZzIgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJf cGs7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsK Ky0tIFVOSVFVRSB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJXSVRIT1VUIgorTElO RSAzOiAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAodmFsaWRfYXQgV0lU SE9VVCBPVkVSTEEuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIFVOSVFVRSB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklP RCB0aGF0IGlzbid0IHRoZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlk IElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICByYW5nZSBvciBQRVJJT0Qg InZhbGlkX2F0IiBpbiBXSVRIT1VUIE9WRVJMQVBTIGRvZXMgbm90IGV4aXN0CistLSBVTklR VUUgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n MiAoCisJaWQgSU5URUdFUiwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfcm5nMl91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgaW4gV0lUSE9VVCBPVkVSTEFQUyBpcyBub3Qg YSByYW5nZSB0eXBlCistLSBVTklRVUUgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSByYW5nZToK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBkZXBl bmQgb24gaGF2aW5nIGJ0cmVlX2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdlIGlu c3RlYWQgb2YgYW4gaW50LgorCS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRlc3Qg dXNlcyB0aGUgc2FtZSB0cmljay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMgorICAgICAgICAgICAg IFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMiIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRy YW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgdmFsaWRfYXQgfCB0c3JhbmdlICAg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfcm5n Ml91cSIgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKworU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bm5hbWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CisgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFp bnRkZWYgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykK KworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENS RUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nMl91cSBPTiB0ZW1wb3JhbF9ybmcyIFVT SU5HIGdpc3QgKGlkLCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0gVU5JUVVFIHdpdGggdHdv IGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAor CWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzMKKyAgICAgICAgICAg ICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZzMiCisgIENvbHVtbiAgfCAgIFR5cGUgICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQxICAgICAgfCBpbnQ0 cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGlkMiAgICAgIHwgaW50NHJhbmdl IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmczX3Vx IiBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCitTRUxF Q1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUg Y29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKKyAgICAgICAgICAgICBwZ19nZXRfY29u c3RyYWludGRlZiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlk LCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3Jh bF9ybmczX3VxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dl dF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1w b3JhbF9ybmczX3VxIE9OIHRlbXBvcmFsX3JuZzMgVVNJTkcgZ2lzdCAoaWQxLCBpZDIsIHZh bGlkX2F0KQorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CistLQorLS0g dGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KK0RST1AgVEFCTEUgdGVtcG9y YWxfcm5nOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpOworLS0gUEsgd2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3Np YmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVt cG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtFWSBVU0lORyBJ TkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRVJST1I6ICAiaWR4X3RlbXBvcmFsM191cSIgaXMg bm90IGEgdW5pcXVlIGluZGV4CitMSU5FIDI6ICBBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNf cGsKKyAgICAgICAgICAgICBeCitERVRBSUw6ICBDYW5ub3QgY3JlYXRlIGEgcHJpbWFyeSBr ZXkgb3IgdW5pcXVlIGNvbnN0cmFpbnQgdXNpbmcgc3VjaCBhbiBpbmRleC4KK0RST1AgVEFC TEUgdGVtcG9yYWwzOworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3NzaWJs ZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBv cmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWwz CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIFVTSU5HIElOREVYIGlk eF90ZW1wb3JhbDNfdXE7CitFUlJPUjogICJpZHhfdGVtcG9yYWwzX3VxIiBpcyBub3QgYSB1 bmlxdWUgaW5kZXgKK0xJTkUgMjogIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorICAg ICAgICAgICAgIF4KK0RFVEFJTDogIENhbm5vdCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1 bmlxdWUgY29uc3RyYWludCB1c2luZyBzdWNoIGFuIGluZGV4LgorRFJPUCBUQUJMRSB0ZW1w b3JhbDM7CistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGlt ZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlCispOworQUxURVIg VEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBj b2x1bW4gYW5kIFVOSVFVRSBjb25zdHJhaW50IGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbDNfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsK K0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cworLS0KKy0t IG9rYXk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAzLTAzJywgJzIwMTgtMDQt MDQnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIsMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgTlVMTCkpOwor LS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEs MV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitFUlJPUjogIGNv bmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVt cG9yYWxfcm5nX3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSkg Y29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJU dWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSku CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTIChOVUxMLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1u ICJpZCIgb2YgcmVsYXRpb24gInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgbm90LW51bGwgY29u c3RyYWludAorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKG51bGwsIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikpLgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgTlVMTCk7CitFUlJPUjog IG51bGwgdmFsdWUgaW4gY29sdW1uICJ2YWxpZF9hdCIgb2YgcmVsYXRpb24gInRlbXBvcmFs X3JuZyIgdmlvbGF0ZXMgbm90LW51bGwgY29uc3RyYWludAorREVUQUlMOiAgRmFpbGluZyBy b3cgY29udGFpbnMgKFszLDQpLCBudWxsKS4KKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBi b3RoIGEgUEsgYW5kIGEgVU5JUVVFIGNvbnN0cmFpbnQKKy0tCitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIGlk MiBpbnQ4cmFuZ2UsCisgIG5hbWUgVEVYVCwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbDNfdW5pcSBVTklRVUUgKGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBu YW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcy MDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQorOworRFJPUCBU QUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBjaGFuZ2luZyB0aGUgUEsncyBkZXBlbmRl bmNpZXMKKy0tCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVt cG9yYWwzIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBEUk9QIE5PVCBOVUxMOworRVJST1I6ICBj b2x1bW4gInZhbGlkX2F0IiBpcyBpbiBhIHByaW1hcnkga2V5CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpy YW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbDMgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1OworQUxURVIg VEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxFIHRl bXBvcmFsMzsKKy0tCistLSB0ZXN0IFBBUlRJVElPTiBCWSBmb3IgcmFuZ2VzCistLQorLS0g dGVtcG9yYWwgUFJJTUFSWSBLRVk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4 dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQp OworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBh cnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10n LCAnWzQsNF0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29u ZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEn KSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ3RocmVlJyk7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAg ICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFsw Mi0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0w MS0yMDEwKSB8IHRocmVlCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5h bWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbMDEtMDEtMjAwMCwwMi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAs MDMtMDEtMjAwMCkgfCBvbmUKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdHAyIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg bmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsz LDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorKDEgcm93KQorCitEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworLS0gdGVtcG9yYWwgVU5JUVVFOgorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp IFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIsMl0n KTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAg IHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMi0wMS0y MDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBb Myw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygzIHJvd3MpCisKK1NF TEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25l CisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8 IHRocmVlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA0ZGY5ZDg1MDNiLi42NmI3NWZh MTJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTI4LDcgKzI4LDcg QEAgdGVzdDogc3RyaW5ncyBtZDUgbnVtZXJvbG9neSBwb2ludCBsc2VnIGxpbmUgYm94IHBh dGggcG9seWdvbiBjaXJjbGUgZGF0ZSB0aW1lIHQKICMgZ2VvbWV0cnkgZGVwZW5kcyBvbiBw b2ludCwgbHNlZywgbGluZSwgYm94LCBwYXRoLCBwb2x5Z29uLCBjaXJjbGUKICMgaG9yb2xv Z3kgZGVwZW5kcyBvbiBkYXRlLCB0aW1lLCB0aW1ldHosIHRpbWVzdGFtcCwgdGltZXN0YW1w dHosIGludGVydmFsCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRz dHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50 cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjCit0ZXN0OiBnZW9tZXRyeSBob3JvbG9n eSB0c3R5cGVzIHJlZ2V4IHR5cGVfc2FuaXR5IG9wcl9zYW5pdHkgbWlzY19zYW5pdHkgY29t bWVudHMgZXhwcmVzc2lvbnMgdW5pY29kZSB4aWQgbXZjYyB3aXRob3V0X292ZXJsYXBzCiAK ICMgLS0tLS0tLS0tLQogIyBMb2FkIGh1Z2UgYW1vdW50cyBvZiBkYXRhCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjNjMzIzNjYxOGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMCwwICsxLDI2MiBA QAorLS0gVGVzdHMgZm9yIFdJVEhPVVQgT1ZFUkxBUFMuCistLQorLS0gV2UgbGVhdmUgYmVo aW5kIHNldmVyYWwgdGFibGVzIHRvIHRlc3QgcGdfZHVtcCBldGM6CistLSB0ZW1wb3JhbF9y bmcsIHRlbXBvcmFsX3JuZzIsCistLSB0ZW1wb3JhbF9ma19ybmcycm5nLgorCistLQorLS0g dGVzdCBpbnB1dCBwYXJzZXIKKy0tCisKKy0tIFBLIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJ VEhPVVQgT1ZFUkxBUFM6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkg KHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBQSyB3aXRoIGEgcmFuZ2Ug Y29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nICgKKwlpZCBJTlRFR0VSLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFBL IHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n ICgKKwlpZCBJTlRFR0VSLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKKworLS0gUEsgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSByYW5nZToKKworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZyAoCisJLS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmlu ZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFu IGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNh bWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBv cmFsX3JuZ19wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVl KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsn OworCistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFS WSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRl bXBvcmFsX3JuZzIKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOworU0VMRUNU IHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CitEUk9QIFRBQkxFIHRlbXBv cmFsX3JuZzI7CisKKworLS0gUEsgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlOgorQ1JFQVRF IFRZUEUgdGV4dHJhbmdlMiBBUyByYW5nZSAoc3VidHlwZT10ZXh0LCBjb2xsYXRpb249IkMi KTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdGV4dHJhbmdlMiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX3JuZzIgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGs7CitEUk9Q IFRBQkxFIHRlbXBvcmFsX3JuZzI7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsKKworLS0gVU5J UVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CisKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9ybmcyICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0 aGVyZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIElOVEVHRVIsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46 CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZCBJTlRFR0VSLAorCXZhbGlk X2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBvbmUgY29s dW1uIHBsdXMgYSByYW5nZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCS0t IFNpbmNlIHdlIGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0t IHVzZSBhbiBpbnQ0cmFuZ2UgaW5zdGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5 cGVzIHJlZ3Jlc3Npb24gdGVzdCB1c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3Jh bF9ybmcyCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3VxJzsKK1NFTEVDVCBwZ19n ZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfdXEnOworCistLSBVTklRVUUgd2l0aCB0d28g Y29sdW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJ aWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfcm5nM191cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlk LCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3Jh bF9ybmczX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKworLS0KKy0tIHRlc3Qg QUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCisKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpOworCistLSBQSyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2li bGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1w b3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs MworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZIFVTSU5HIElO REVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5J UVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3NzaWJsZSk6CitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFU RSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBvcmFsMyBVU0lORyBnaXN0IChpZCwg dmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWwzX3VxCisJVU5JUVVFIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9Q IFRBQkxFIHRlbXBvcmFsMzsKKworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgdGhlIFBLIGF0 IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNy YW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisK Ky0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIFVOSVFVRSBjb25zdHJhaW50IGF0IHRoZSBzYW1l IHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5nZSwKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBQ SyBpbnNlcnRzCistLQorCistLSBva2F5OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAx OC0wMy0wMycsICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsIE5VTEwpKTsKKworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTIChOVUxMLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzMsM10nLCBOVUxMKTsKKworLS0KKy0tIHRlc3QgYSByYW5nZSB3 aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29uc3RyYWludAorLS0KKworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsMyAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJhbmdl LAorICBpZDIgaW50OHJhbmdlLAorICBuYW1lIFRFWFQsCisgIENPTlNUUkFJTlQgdGVtcG9y YWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisg IENPTlNUUkFJTlQgdGVtcG9yYWwzX3VuaXEgVU5JUVVFIChpZDIsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQs IGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCisgICgnWzIsMl0nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKKzsK K0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBjaGFuZ2luZyB0aGUgUEsn cyBkZXBlbmRlbmNpZXMKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKK0FM VEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgRFJPUCBOT1QgTlVM TDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0 c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIodmFsaWRf YXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBSRU5BTUUgQ09MVU1OIHZhbGlkX2F0IFRP IHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRf dGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBQQVJUSVRJT04g QlkgZm9yIHJhbmdlcworLS0KKworLS0gdGVtcG9yYWwgUFJJTUFSWSBLRVk6CitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0 aW9uZWRfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24g T0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJd Jyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBGT1IgVkFMVUVTIElOICgnWzMsM10nLCAnWzQsNF0nKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAx LTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcy MDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVlJyk7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVD VCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00gdHAy IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQ7CisKKy0tIHRlbXBvcmFsIFVOSVFVRToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFt ZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQp OworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBh cnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10n LCAnWzQsNF0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29u ZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEn KSwgJ29uZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ3RocmVlJyk7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK K0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7Ci0tIAoyLjI1LjEKCg== --------------G957IccwHqpC3R9IYdyZoS1g Content-Type: text/x-patch; charset=UTF-8; name="v16-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v16-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSBmODQ1ODE4M2Y3MTVkNzViYTQyNmViNzUwZDAwOTQxMzJjYzVmYjg4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNiAyLzVdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwg IDQyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCA3NzcgKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jICAgICAgICAgICB8IDM0MiArKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAyNCArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9yZWdyZXNz L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8IDQ2MSArKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgNDYyICsr KysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAxODMxIGluc2VydGlvbnMoKyksIDM0NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCBhZDVi ZjIxNDUzLi4yOGNiYmZiOWFhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK QEAgLTgxLDcgKzgxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9S QVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVF IFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4g V0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmlu ZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVy dmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVY Q0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0 aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBb IFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVw bGFjZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVO Q0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywg UEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZh bDwvcmVwbGFjZWFibGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9E IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVw bGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1B VENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xhc3M9InBhcmFtZXRl ciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNl YWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZ IERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTU2LDggKzExNTYsOCBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3Fs LWNyZWF0ZXRhYmxlLXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPlJF RkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBs YWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48 L3JlcGxhY2VhYmxlPiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBb IE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxf YWN0aW9uPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwv dGVybT4KIAotICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSAp Ci0gICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFi bGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRlcm0+PGxpdGVyYWw+ Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApCisgICAg UkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3Jl cGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVt bjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkgXQogICAg IFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVw bGFjZWFibGU+IF0KICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBE QVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248 L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPgpAQCAtMTE2OCwxMSArMTE2OCwyOSBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEg Zm9yZWlnbiBrZXkgY29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBn cm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5 CiAgICAgICBjb250YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJl bmNlZAotICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRh YmxlLiAgSWYgdGhlIDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93 IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLgorICAgICAgSWYgdGhlIDxyZXBsYWNlYWJsZQog ICAgICAgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gbGlzdCBp cyBvbWl0dGVkLCB0aGUKICAgICAgIHByaW1hcnkga2V5IG9mIHRoZSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPgogICAgICAgaXMgdXNl ZC4gIFRoZSByZWZlcmVuY2VkIGNvbHVtbnMgbXVzdCBiZSB0aGUgY29sdW1ucyBvZiBhIG5v bi1kZWZlcnJhYmxlCi0gICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29uc3RyYWludCBp biB0aGUgcmVmZXJlbmNlZCB0YWJsZS4gIFRoZSB1c2VyCisgICAgICB1bmlxdWUgb3IgcHJp bWFyeSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgPC9w YXJhPgorCisgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtl ZCB3aXRoIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICBpdCBtdXN0IGJlIGEg cGVyaW9kIG9yIHJhbmdlIGNvbHVtbiwgYW5kIHRoZSByZWZlcmVuY2VkIHRhYmxlCisgICAg ICBtdXN0IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgIFRoZSBub24tPGxp dGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5vcm1hbGx5Cisg ICAgICAoYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0pLAorICAgICAg YnV0IHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVtbiBpcyBub3QgY29tcGFy ZWQgZm9yIGVxdWFsaXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29uc3RyYWludCBpcyBjb25z aWRlcmVkIHNhdGlzZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5jZWQgdGFibGUgaGFzIG1h dGNoaW5nIHJlY29yZHMgd2hvc2UgY29tYmluZWQgcmFuZ2VzIGNvbXBsZXRlbHkgY292ZXIK KyAgICAgIHRoZSByZWZlcmVuY2luZyByZWNvcmQuCisgICAgICBJbiBvdGhlciB3b3Jkcywg dGhlIHJlZmVyZW5jZSBtdXN0IGhhdmUgYSByZWZlcmVudCBmb3IgaXRzIGVudGlyZSBkdXJh dGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIHVzZXIKICAg ICAgIG11c3QgaGF2ZSA8bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBwZXJtaXNzaW9u IG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlCiAgICAgICAoZWl0aGVyIHRoZSB3aG9sZSB0YWJs ZSwgb3IgdGhlIHNwZWNpZmljIHJlZmVyZW5jZWQgY29sdW1ucykuICBUaGUKICAgICAgIGFk ZGl0aW9uIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCByZXF1aXJlcyBhCkBAIC0xMjQ0 LDcgKzEyNjIsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDxw YXJhPgogICAgICAgICAgIERlbGV0ZSBhbnkgcm93cyByZWZlcmVuY2luZyB0aGUgZGVsZXRl ZCByb3csIG9yIHVwZGF0ZSB0aGUKICAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlZmVyZW5j aW5nIGNvbHVtbihzKSB0byB0aGUgbmV3IHZhbHVlcyBvZiB0aGUKLSAgICAgICAgICByZWZl cmVuY2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICByZWZlcmVuY2VkIGNv bHVtbnMsIHJlc3BlY3RpdmVseS4gSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwKKyAgICAg ICAgICB0aGUgZGVsZXRlIHdpbGwgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRl cmFsPiBzZW1hbnRpY3MKKyAgICAgICAgICB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0 aGUgYm91bmRzIG9mIHRoZSByZWZlcmVuY2VkIHJvdworICAgICAgICAgIGJlaW5nIGRlbGV0 ZWQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92 YXJsaXN0ZW50cnk+CkBAIC0xMjU3LDYgKzEyNzgsMTIgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICAgICAgICByZWZlcmVuY2luZyBjb2x1bW5zLCB0byBudWxsLiBBIHN1 YnNldCBvZiBjb2x1bW5zIGNhbiBvbmx5IGJlCiAgICAgICAgICAgc3BlY2lmaWVkIGZvciA8 bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICA8L3BhcmE+ CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBr ZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9SCisgICAgICAgICAgUE9SVElP TiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUgZWZmZWN0IHRvIHRo ZSBib3VuZHMKKyAgICAgICAgICBvZiB0aGUgcmVmZXJlbmNlZCByb3cuCisgICAgICAgICA8 L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAK QEAgLTEyNjksNiArMTI5Niw5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg ICAgICAgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xp dGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICAgKFRoZXJlIG11c3QgYmUgYSByb3cgaW4gdGhl IHJlZmVyZW5jZWQgdGFibGUgbWF0Y2hpbmcgdGhlIGRlZmF1bHQKICAgICAgICAgICB2YWx1 ZXMsIGlmIHRoZXkgYXJlIG5vdCBudWxsLCBvciB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbC4p CisgICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxs IHVzZSA8bGl0ZXJhbD5GT1IgUE9SVElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1h bnRpY3MgdG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBvZiB0aGUKKyAg ICAgICAgICByZWZlcmVuY2VkIHJvdy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggYmEyYTg5MTRlNC4uZWQwNjJkMWU0YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKQEAgLTM4MCwxNyArMzgwLDIwIEBAIHN0YXRpYyBpbnQJdHJhbnNmb3Jt Q29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogCQkJCQkJCQkJaW50 MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzKTsKIHN0YXRpYyBpbnQJdHJhbnNmb3JtRmtl eUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkJ CQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCisJCQkJCQkJCQkgICBOb2RlICoqcGtfcGVyaW9k LAogCQkJCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJ CQkJICAgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVyaW9kYXR0dHlwaWRzLAogCQkJ CQkJCQkJICAgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIE9pZAl0cmFuc2Zvcm1Ga2V5Q2hl Y2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkJCWludCBudW1hdHRycywgaW50MTYg KmF0dG51bXMsCisJCQkJCQkJCQlib29sIGlzX3RlbXBvcmFsLCBpbnQxNiBwZXJpb2RhdHRu dW0sCiAJCQkJCQkJCQlPaWQgKm9wY2xhc3Nlcyk7CiBzdGF0aWMgdm9pZCBjaGVja0ZrZXlQ ZXJtaXNzaW9ucyhSZWxhdGlvbiByZWwsIGludDE2ICphdHRudW1zLCBpbnQgbmF0dHMpOwog c3RhdGljIENvZXJjaW9uUGF0aFR5cGUgZmluZEZrZXlDYXN0KE9pZCB0YXJnZXRUeXBlSWQs IE9pZCBzb3VyY2VUeXBlSWQsCiAJCQkJCQkJCQkgT2lkICpmdW5jaWQpOwogc3RhdGljIHZv aWQgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQkJCQkJ CQkJCSBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBrcmVsLAotCQkJCQkJCQkJCSBPaWQgcGtp bmRPaWQsIE9pZCBjb25zdHJhaW50T2lkKTsKKwkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBP aWQgY29uc3RyYWludE9pZCwgYm9vbCB0ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCBBVENvbnRy b2xsZXIoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwKIAkJCQkJCSBSZWxhdGlvbiByZWws IExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKQEAgLTUwMCw3ICs1MDMsOCBA QCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3 cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYQogCQkJCQkJCQkJCQlPaWQgKnBmZXFvcGVy YXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJ CQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJ CQkJCQlib29sIG9sZF9jaGVja19vaywKLQkJCQkJCQkJCQkJT2lkIHBhcmVudERlbFRyaWdn ZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCQkJT2lkIHBhcmVudERlbFRy aWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJCQkJCQlib29sIGlzX3RlbXBv cmFsKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51 bWZrcywgY29uc3QgaW50MTYgKmZrYXR0bnVtcywKIAkJCQkJCQkJCQkgaW50IG51bWZrc2V0 Y29scywgY29uc3QgaW50MTYgKmZrc2V0Y29sc2F0dG51bXMsCiAJCQkJCQkJCQkJIExpc3Qg KmZrc2V0Y29scyk7CkBAIC01MTAsNyArNTE0LDkgQEAgc3RhdGljIHZvaWQgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LAogCQkJCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9p ZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2 ICpma2RlbHNldGNvbHMsCiAJCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywgTE9DS01PREUg bG9ja21vZGUsCi0JCQkJCQkJCQlPaWQgcGFyZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVw ZFRyaWdnZXIpOworCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRV cGRUcmlnZ2VyLAorCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCk7CisKIHN0YXRpYyB2b2lk IENsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBh cmVudFJlbCwKIAkJCQkJCQkJCSAgIFJlbGF0aW9uIHBhcnRpdGlvblJlbCk7CiBzdGF0aWMg dm9pZCBDbG9uZUZrUmVmZXJlbmNlZChSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBh cnRpdGlvblJlbCk7CkBAIC01NDIsNiArNTQ4LDEyIEBAIHN0YXRpYyB2b2lkIEdldEZvcmVp Z25LZXlDaGVja1RyaWdnZXJzKFJlbGF0aW9uIHRyaWdyZWwsCiAJCQkJCQkJCQkgICBPaWQg Y29ub2lkLCBPaWQgY29uZnJlbGlkLCBPaWQgY29ucmVsaWQsCiAJCQkJCQkJCQkgICBPaWQg Kmluc2VydFRyaWdnZXJPaWQsCiAJCQkJCQkJCQkgICBPaWQgKnVwZGF0ZVRyaWdnZXJPaWQp Oworc3RhdGljIHZvaWQgRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsCisJCQkJCUFsdGVyZWRUYWJsZUluZm8gKnRhYiwgaW50IGksIGludDE2 ICpma2F0dG51bSwKKwkJCQkJYm9vbCAqb2xkX2NoZWNrX29rLCBMaXN0Q2VsbCAqKm9sZF9w ZmVxb3BfaXRlbSwKKwkJCQkJT2lkIHBrdHlwZSwgT2lkIGZrdHlwZSwgT2lkIG9wY2xhc3Ms CisJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGJvb2wgZm9yX292ZXJsYXBzLAorCQkJCQlPaWQg KnBmZXFvcE91dCwgT2lkICpwcGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0KTsKIHN0YXRpYyB2 b2lkIEFURXhlY0Ryb3BDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29u c3RyTmFtZSwKIAkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgYm9vbCByZWN1cnNl LAogCQkJCQkJCQkgYm9vbCBtaXNzaW5nX29rLCBMT0NLTU9ERSBsb2NrbW9kZSk7CkBAIC01 ODIyLDcgKzU4MzQsOCBAQCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNl dHJlZSwgTGlzdCAqKndxdWV1ZSwgTE9DS01PREUgbG9ja21vZGUsCiAKIAkJCQl2YWxpZGF0 ZUZvcmVpZ25LZXlDb25zdHJhaW50KGZrY29uc3RyYWludC0+Y29ubmFtZSwgcmVsLCByZWZy ZWwsCiAJCQkJCQkJCQkJCSBjb24tPnJlZmluZGlkLAotCQkJCQkJCQkJCQkgY29uLT5jb25p ZCk7CisJCQkJCQkJCQkJCSBjb24tPmNvbmlkLAorCQkJCQkJCQkJCQkgY29uLT5jb250ZW1w b3JhbCk7CiAKIAkJCQkvKgogCQkJCSAqIE5vIG5lZWQgdG8gbWFyayB0aGUgY29uc3RyYWlu dCByb3cgYXMgdmFsaWRhdGVkLCB3ZSBkaWQKQEAgLTk0MzgsNiArOTQ1MSwxMSBAQCBBVEFk ZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCU9pZAkJCXBwZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tF WVNdID0gezB9OwogCU9pZAkJCWZmZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0gezB9 OwogCWludDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNdID0gezB9OworCWJvb2wJ CWlzX3RlbXBvcmFsID0gKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpOworCWlu dDE2CQlwa3BlcmlvZGF0dG51bXNbMV0gPSB7MH07CisJaW50MTYJCWZrcGVyaW9kYXR0bnVt c1sxXSA9IHswfTsKKwlPaWQJCQlwa3BlcmlvZHR5cG9pZHNbMV0gPSB7MH07CisJT2lkCQkJ ZmtwZXJpb2R0eXBvaWRzWzFdID0gezB9OwogCWludAkJCWk7CiAJaW50CQkJbnVtZmtzLAog CQkJCW51bXBrcywKQEAgLTk1MzIsNiArOTU1MCwxMCBAQCBBVEFkZEZvcmVpZ25LZXlDb25z dHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCW51bWZrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVs aWQocmVsKSwKIAkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPmZrX2F0dHJzLAogCQkJCQkJCQkJ IGZrYXR0bnVtLCBma3R5cG9pZCk7CisJaWYgKGlzX3RlbXBvcmFsKQorCQl0cmFuc2Zvcm1D b2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJCQkJCQkJICBsaXN0X21h a2UxKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKSwKKwkJCQkJCQkgIGZrcGVyaW9kYXR0bnVt cywgZmtwZXJpb2R0eXBvaWRzKTsKIAogCW51bWZrZGVsc2V0Y29scyA9IHRyYW5zZm9ybUNv bHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCQkJICBma2Nv bnN0cmFpbnQtPmZrX2RlbF9zZXRfY29scywKQEAgLTk1NTAsNyArOTU3Miw5IEBAIEFUQWRk Rm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsCiAJewogCQludW1wa3MgPSB0cmFuc2Zvcm1Ga2V5R2V0UHJp bWFyeUtleShwa3JlbCwgJmluZGV4T2lkLAogCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5w a19hdHRycywKKwkJCQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfcGVyaW9kLAogCQkJCQkJ CQkJCQlwa2F0dG51bSwgcGt0eXBvaWQsCisJCQkJCQkJCQkJCXBrcGVyaW9kYXR0bnVtcywg cGtwZXJpb2R0eXBvaWRzLAogCQkJCQkJCQkJCQlvcGNsYXNzZXMpOwogCX0KIAllbHNlCkBA IC05NTU4LDggKzk1ODIsMTQgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbnVtcGtz ID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChwa3JlbCksCiAJ CQkJCQkJCQkJIGZrY29uc3RyYWludC0+cGtfYXR0cnMsCiAJCQkJCQkJCQkJIHBrYXR0bnVt LCBwa3R5cG9pZCk7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCXRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAorCQkJCQkJCQkJbGlzdF9tYWtlMShm a2NvbnN0cmFpbnQtPnBrX3BlcmlvZCksCisJCQkJCQkJCQlwa3BlcmlvZGF0dG51bXMsIHBr cGVyaW9kdHlwb2lkcyk7CisKIAkJLyogTG9vayBmb3IgYW4gaW5kZXggbWF0Y2hpbmcgdGhl IGNvbHVtbiBsaXN0ICovCiAJCWluZGV4T2lkID0gdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMo cGtyZWwsIG51bXBrcywgcGthdHRudW0sCisJCQkJCQkJCQkJICAgaXNfdGVtcG9yYWwsIHBr cGVyaW9kYXR0bnVtc1swXSwKIAkJCQkJCQkJCQkgICBvcGNsYXNzZXMpOwogCX0KIApAQCAt OTYxOCwxODcgKzk2NDgsMjcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAogCWZvciAo aSA9IDA7IGkgPCBudW1wa3M7IGkrKykKIAl7Ci0JCU9pZAkJCXBrdHlwZSA9IHBrdHlwb2lk W2ldOwotCQlPaWQJCQlma3R5cGUgPSBma3R5cG9pZFtpXTsKLQkJT2lkCQkJZmt0eXBlZDsK LQkJSGVhcFR1cGxlCWNsYV9odDsKLQkJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7Ci0JCU9p ZAkJCWFtaWQ7Ci0JCU9pZAkJCW9wZmFtaWx5OwotCQlPaWQJCQlvcGNpbnR5cGU7Ci0JCU9p ZAkJCXBmZXFvcDsKLQkJT2lkCQkJcHBlcW9wOwotCQlPaWQJCQlmZmVxb3A7Ci0JCWludDE2 CQllcXN0cmF0ZWd5OwotCQlPaWQJCQlwZmVxb3BfcmlnaHQ7Ci0KLQkJLyogV2UgbmVlZCBz ZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KLQkJY2xhX2h0 ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNzZXNb aV0pKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYV9odCkpCi0JCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3Nlc1tpXSk7 Ci0JCWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsKLQkJ YW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsKLQkJb3BmYW1pbHkgPSBjbGFfdHVwLT5vcGNm YW1pbHk7Ci0JCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKLQkJUmVsZWFzZVN5 c0NhY2hlKGNsYV9odCk7Ci0KLQkJLyoKLQkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJy ZW50bHkgdGhpcyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgotCQkgKiBpbmRleCBB TXMgc3VwcG9ydCB1bmlxdWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIg dHlwZXMKLQkJICogb2YgdW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRl cm1pbmUgd2hpY2ggb3BlcmF0b3IKLQkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5 LiAgKElzIGl0IHJlYXNvbmFibGUgdG8gaW5zaXN0IHRoYXQKLQkJICogZXZlcnkgc3VjaCBp bmRleCBBTSB1c2UgYnRyZWUncyBudW1iZXIgZm9yIGVxdWFsaXR5PykKLQkJICovCi0JCWlm IChhbWlkICE9IEJUUkVFX0FNX09JRCkKLQkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBp bmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24ga2V5cyIpOwotCQllcXN0cmF0ZWd5 ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwotCi0JCS8qCi0JCSAqIFRoZXJlIGhhZCBiZXR0 ZXIgYmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCi0JCSAq IFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29ucy4KLQkJICovCi0JCXBwZXFv cCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBl LAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCi0JCWlmICghT2lkSXNWYWxpZChwcGVxb3Ap KQotCQkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFt aWx5ICV1IiwKLQkJCQkgZXFzdHJhdGVneSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFt aWx5KTsKLQotCQkvKgotCQkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQg dGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKLQkJICogd2Ugc2hvdWxkIGxvb2sg dGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCi0JCSAqLwotCQlma3R5cGVkID0gZ2V0QmFzZVR5 cGUoZmt0eXBlKTsKLQotCQlwZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5 LCBvcGNpbnR5cGUsIGZrdHlwZWQsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCWlmIChP aWRJc1ZhbGlkKHBmZXFvcCkpCi0JCXsKLQkJCXBmZXFvcF9yaWdodCA9IGZrdHlwZWQ7Ci0J CQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5 cGVkLAotCQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQkJCXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7 Ci0JCQlmZmVxb3AgPSBJbnZhbGlkT2lkOwotCQl9Ci0KLQkJaWYgKCEoT2lkSXNWYWxpZChw ZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCi0JCXsKLQkJCS8qCi0JCQkgKiBPdGhl cndpc2UsIGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJvbSB0aGUgRksgdHlwZSB0byB0 aGUKLQkJCSAqIG9wY2ludHlwZSwgYW5kIGlmIGZvdW5kLCB1c2UgdGhlIHByaW1hcnkgZXF1 YWxpdHkgb3BlcmF0b3IuCi0JCQkgKiBUaGlzIGlzIGEgYml0IHRyaWNreSBiZWNhdXNlIG9w Y2ludHlwZSBtaWdodCBiZSBhIHBvbHltb3JwaGljCi0JCQkgKiB0eXBlIHN1Y2ggYXMgQU5Z QVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRlc3QgaXMKLQkJCSAqIHdo ZXRoZXIgdGhlIHR3byBhY3R1YWwgY29sdW1uIHR5cGVzIGNhbiBiZSBjb25jdXJyZW50bHkg Y2FzdCB0bwotCQkJICogdGhhdCB0eXBlLiAgKE90aGVyd2lzZSwgd2UnZCBmYWlsIHRvIHJl amVjdCBjb21iaW5hdGlvbnMgc3VjaAotCQkJICogYXMgaW50W10gYW5kIHBvaW50W10uKQot CQkJICovCi0JCQlPaWQJCQlpbnB1dF90eXBlaWRzWzJdOwotCQkJT2lkCQkJdGFyZ2V0X3R5 cGVpZHNbMl07Ci0KLQkJCWlucHV0X3R5cGVpZHNbMF0gPSBwa3R5cGU7Ci0JCQlpbnB1dF90 eXBlaWRzWzFdID0gZmt0eXBlOwotCQkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNpbnR5cGU7 Ci0JCQl0YXJnZXRfdHlwZWlkc1sxXSA9IG9wY2ludHlwZTsKLQkJCWlmIChjYW5fY29lcmNl X3R5cGUoMiwgaW5wdXRfdHlwZWlkcywgdGFyZ2V0X3R5cGVpZHMsCi0JCQkJCQkJCUNPRVJD SU9OX0lNUExJQ0lUKSkKLQkJCXsKLQkJCQlwZmVxb3AgPSBmZmVxb3AgPSBwcGVxb3A7Ci0J CQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOwotCQkJfQotCQl9Ci0KLQkJaWYgKCEoT2lk SXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCi0JCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJ IGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIgY2Fubm90IGJlIGltcGxl bWVudGVkIiwKLQkJCQkJCQlma2NvbnN0cmFpbnQtPmNvbm5hbWUpLAotCQkJCQkgZXJyZGV0 YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCi0JCQkJCQkJICAgImFyZSBv ZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4iLAotCQkJCQkJCSAgIHN0clZhbChs aXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgc3RyVmFs KGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtfYXR0cnMsIGkpKSwKLQkJCQkJCQkgICBmb3Jt YXRfdHlwZV9iZShma3R5cGUpLAotCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkp KSk7Ci0KLQkJaWYgKG9sZF9jaGVja19vaykKLQkJewotCQkJLyoKLQkJCSAqIFdoZW4gYSBw ZmVxb3AgY2hhbmdlcywgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIFdlIGNvdWxkCi0J CQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0 bGUgY29tcGxleGl0eQotCQkJICogd2l0aG91dCBhbnkgY29uY3JldGUgYmVuZWZpdCBmb3Ig Y29yZSB0eXBlcy4gIFdlIG5lZWQgbm90Ci0JCQkgKiBhc3Nlc3MgcHBlcW9wIG9yIGZmZXFv cCwgd2hpY2ggUklfSW5pdGlhbF9DaGVjaygpIGRvZXMgbm90IHVzZS4KLQkJCSAqLwotCQkJ b2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKG9sZF9wZmVxb3BfaXRlbSkp OwotCQkJb2xkX3BmZXFvcF9pdGVtID0gbG5leHQoZmtjb25zdHJhaW50LT5vbGRfY29ucGZl cW9wLAotCQkJCQkJCQkJb2xkX3BmZXFvcF9pdGVtKTsKLQkJfQotCQlpZiAob2xkX2NoZWNr X29rKQotCQl7Ci0JCQlPaWQJCQlvbGRfZmt0eXBlOwotCQkJT2lkCQkJbmV3X2ZrdHlwZTsK LQkJCUNvZXJjaW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOwotCQkJQ29lcmNpb25QYXRoVHlw ZSBuZXdfcGF0aHR5cGU7Ci0JCQlPaWQJCQlvbGRfY2FzdGZ1bmM7Ci0JCQlPaWQJCQluZXdf Y2FzdGZ1bmM7Ci0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0 YWItPm9sZERlc2MsCi0JCQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOwotCi0JCQkv KgotCQkJICogSWRlbnRpZnkgY29lcmNpb24gcGF0aHdheXMgZnJvbSBlYWNoIG9mIHRoZSBv bGQgYW5kIG5ldyBGSy1zaWRlCi0JCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChm b3JlaWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFvcC4KLQkJCSAqIFdlIG1heSBhc3N1 bWUgdGhhdCBwZ19jb25zdHJhaW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCi0JCQkgKi8K LQkJCW9sZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKLQkJCW5ld19ma3R5cGUgPSBma3R5 cGU7Ci0JCQlvbGRfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBvbGRf Zmt0eXBlLAotCQkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOwotCQkJbmV3X3BhdGh0eXBlID0g ZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgbmV3X2ZrdHlwZSwKLQkJCQkJCQkJCQkmbmV3 X2Nhc3RmdW5jKTsKLQotCQkJLyoKLQkJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3Qg ZnJvbSB0aGUgRksgY29sdW1uIHRvIGl0cyBwZmVxb3AKLQkJCSAqIG9wZXJhbmQsIHJldmFs aWRhdGUgdGhlIGNvbnN0cmFpbnQuICBGb3IgdGhpcyBldmFsdWF0aW9uLCBhCi0JCQkgKiBi aW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAg V2hpbGUKLQkJCSAqIHR5cGUgaW1wbGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQg Y2FzdHMgd2l0aCBhbiBleWUKLQkJCSAqIHRvd2FyZCBjb25zaXN0ZW5jeSBvZiBvcGVyYXRp b25zIGxpa2UgZXF1YWxpdHksIHdlIGNhbm5vdAotCQkJICogYXNzdW1lIGhlcmUgdGhhdCB0 aGV5IGhhdmUgZG9uZSBzby4KLQkJCSAqCi0JCQkgKiBBIGZ1bmN0aW9uIHdpdGggYSBwb2x5 bW9ycGhpYyBhcmd1bWVudCBjb3VsZCBjaGFuZ2UgYmVoYXZpb3IKLQkJCSAqIGFyYml0cmFy aWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwK LQkJCSAqIHdoZW4gdGhlIGNhc3QgZGVzdGluYXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9u bHkgYXZvaWQKLQkJCSAqIHJldmFsaWRhdGlvbiBpZiB0aGUgaW5wdXQgdHlwZSBoYXMgbm90 IGNoYW5nZWQgYXQgYWxsLiAgR2l2ZW4KLQkJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBl cyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAotCQkJICogcHJldmVu dHMgbm8gd291bGQtYmUgb3B0aW1pemF0aW9ucy4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgY2Fz dCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4K LQkJCSAqIHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRoZSB1 bmlxdWUgaW5kZXguCi0JCQkgKiBOZWNlc3NhcmlseSwgdGhlIHByaW1hcnkga2V5IGNvbHVt biBtdXN0IHRoZW4gYmUgb2YgdGhlIGRvbWFpbgotCQkJICogdHlwZS4gIFNpbmNlIHRoZSBj b25zdHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCi0JCQkgKiB0 aGUgZm9yZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUg YW5kIGluCi0JCQkgKiB0dXJuIGNvbmZvcm0gdG8gdGhlIGRvbWFpbi4gIENvbnNlcXVlbnRs eSwgd2UgbmVlZCBub3QgdHJlYXQKLQkJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCi0J CQkgKgotCQkJICogU2luY2Ugd2UgcmVxdWlyZSB0aGF0IGFsbCBjb2xsYXRpb25zIHNoYXJl IHRoZSBzYW1lIG5vdGlvbiBvZgotCQkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJl Y2F1c2UgdGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQotCQkJICogZXF1YWxpdHkpLCB3ZSBk b24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJlLgotCQkJICoKLQkJCSAqIFdlIG5lZWQgbm90 IGRpcmVjdGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQotCQkJ ICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5k ZXggY29sdW1uLAotCQkJICogYW5kIHJpX3RyaWdnZXJzLmMgd2lsbCBvbmx5IGRlYWwgd2l0 aCBQSyBkYXR1bXMgaW4gdGVybXMgb2YKLQkJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdp bmcgdGhlIG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgotCQkJICovCi0JCQlvbGRf Y2hlY2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgotCQkJCQkJCW5l d19jYXN0ZnVuYyA9PSBvbGRfY2FzdGZ1bmMgJiYKLQkJCQkJCQkoIUlzUG9seW1vcnBoaWNU eXBlKHBmZXFvcF9yaWdodCkgfHwKLQkJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0eXBl KSk7Ci0JCX0KKwkJRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlma2NvbnN0cmFp bnQsIHRhYiwgaSwgZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3Bf aXRlbSwKKwkJCQlwa3R5cG9pZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwKKwkJ CQlpc190ZW1wb3JhbCwgZmFsc2UsCisJCQkJJnBmZXFvcGVyYXRvcnNbaV0sICZwcGVxb3Bl cmF0b3JzW2ldLCAmZmZlcW9wZXJhdG9yc1tpXSk7CisJfQorCWlmIChpc190ZW1wb3JhbCkg eworCQlwa2F0dG51bVtudW1wa3NdID0gcGtwZXJpb2RhdHRudW1zWzBdOworCQlwa3R5cG9p ZFtudW1wa3NdID0gcGtwZXJpb2R0eXBvaWRzWzBdOworCQlma2F0dG51bVtudW1wa3NdID0g ZmtwZXJpb2RhdHRudW1zWzBdOworCQlma3R5cG9pZFtudW1wa3NdID0gZmtwZXJpb2R0eXBv aWRzWzBdOwogCi0JCXBmZXFvcGVyYXRvcnNbaV0gPSBwZmVxb3A7Ci0JCXBwZXFvcGVyYXRv cnNbaV0gPSBwcGVxb3A7Ci0JCWZmZXFvcGVyYXRvcnNbaV0gPSBmZmVxb3A7CisJCUZpbmRG S0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIsIG51bXBrcywg ZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQlw a3BlcmlvZHR5cG9pZHNbMF0sIGZrcGVyaW9kdHlwb2lkc1swXSwgb3BjbGFzc2VzW251bXBr c10sCisJCQkJaXNfdGVtcG9yYWwsIHRydWUsCisJCQkJJnBmZXFvcGVyYXRvcnNbbnVtcGtz XSwgJnBwZXFvcGVyYXRvcnNbbnVtcGtzXSwgJmZmZXFvcGVyYXRvcnNbbnVtcGtzXSk7CisJ CW51bWZrcyArPSAxOworCQludW1wa3MgKz0gMTsKIAl9CiAKIAkvKgpAQCAtOTgxNyw3ICs5 Njg3LDggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSBudW1ma2RlbHNl dGNvbHMsCiAJCQkJCQkJCQkgZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJIG9sZF9jaGVja19v aywKLQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCSBJbnZh bGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJIGlzX3RlbXBvcmFsKTsKIAogCS8qIE5v dyBoYW5kbGUgdGhlIHJlZmVyZW5jaW5nIHNpZGUuICovCiAJYWRkRmtSZWN1cnNlUmVmZXJl bmNpbmcod3F1ZXVlLCBma2NvbnN0cmFpbnQsIHJlbCwgcGtyZWwsCkBAIC05ODMzLDcgKzk3 MDQsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCWZrZGVsc2V0Y29scywK IAkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJCQkJCQkJbG9ja21vZGUsCi0JCQkJCQkJSW52YWxp ZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJ CQkJCQlpc190ZW1wb3JhbCk7CiAKIAkvKgogCSAqIERvbmUuICBDbG9zZSBwayB0YWJsZSwg YnV0IGtlZXAgbG9jayB1bnRpbCB3ZSd2ZSBjb21taXR0ZWQuCkBAIC05OTE4LDcgKzk3OTAs OCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQg KmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkgICBPaWQgKnBwZXFvcGVyYXRv cnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJICAgaW50IG51bWZrZGVsc2V0Y29scywg aW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJICAgYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJ CSAgIE9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJ ICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkg ICBib29sIGlzX3RlbXBvcmFsKQogewogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAlPaWQJ CQljb25zdHJPaWQ7CkBAIC0xMDAwNCw3ICs5ODc3LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJl bmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9u IHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJ ICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9pbmhlcml0 LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFs ICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJ CQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAKIAlPYmplY3RBZGRyZXNzU2V0KGFk ZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25zdHJPaWQpOwpAQCAtMTAwODAsNyAr OTk1Myw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgIHBmZXFvcGVy YXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCSAgIG51bWZr ZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkgICBvbGRfY2hlY2tfb2ssCi0J CQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJ CQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBp c190ZW1wb3JhbCk7CiAKIAkJCS8qIERvbmUgLS0gY2xlYW4gdXAgKGJ1dCBrZWVwIHRoZSBs b2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKQEAgLTEwMTM4LDcg KzEwMDEyLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQlPaWQgKnBmZXFv cGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJ CQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCWJv b2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCU9pZCBwYXJlbnRJ bnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJCU9pZCBwYXJlbnRJbnNU cmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwp CiB7CiAJT2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQl1cGRhdGVUcmlnZ2VyT2lkOwpA QCAtMTAxODYsNiArMTAwNjEsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoq d3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCW5l d2Nvbi0+cmVmcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHBrcmVsKTsKIAkJCW5ld2Nvbi0+ cmVmaW5kaWQgPSBpbmRleE9pZDsKIAkJCW5ld2Nvbi0+Y29uaWQgPSBwYXJlbnRDb25zdHI7 CisJCQluZXdjb24tPmNvbnRlbXBvcmFsID0gZmtjb25zdHJhaW50LT5ma19wZXJpb2QgIT0g TlVMTDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChOb2RlICopIGZrY29uc3RyYWludDsKIAogCQkJ dGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsK QEAgLTEwMzAzLDcgKzEwMTc5LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJ CQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKLQkJCQkJ CQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFs LAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0x MDMzNCw3ICsxMDIxMCw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVl dWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJ b2xkX2NoZWNrX29rLAogCQkJCQkJCQkJbG9ja21vZGUsCiAJCQkJCQkJCQlpbnNlcnRUcmln Z2VyT2lkLAotCQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJCQl1cGRhdGVU cmlnZ2VyT2lkLAorCQkJCQkJCQkJaXNfdGVtcG9yYWwpOwogCiAJCQl0YWJsZV9jbG9zZShw YXJ0aXRpb24sIE5vTG9jayk7CiAJCX0KQEAgLTEwNTcwLDcgKzEwNDQ3LDggQEAgQ2xvbmVG a1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwp CiAJCQkJCQkJICAgY29uZmRlbHNldGNvbHMsCiAJCQkJCQkJICAgdHJ1ZSwKIAkJCQkJCQkg ICBkZWxldGVUcmlnZ2VyT2lkLAotCQkJCQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJ CQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJCQkJICAgY29uc3RyRm9ybS0+Y29udGVt cG9yYWwpOwogCiAJCXRhYmxlX2Nsb3NlKGZrUmVsLCBOb0xvY2spOwogCQlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOwpAQCAtMTA4MDksNyArMTA2ODcsNyBAQCBDbG9uZUZrUmVmZXJlbmNp bmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVs KQogCQkJCQkJCQkgIGZhbHNlLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCSAgMSwJLyogaW5o Y291bnQgKi8KIAkJCQkJCQkJICBmYWxzZSwJLyogY29uTm9Jbmhlcml0ICovCi0JCQkJCQkJ CSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCSAgY29uc3RyRm9ybS0+Y29u dGVtcG9yYWwsCS8qIGNvblRlbXBvcmFsICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyog U2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAq LwpAQCAtMTA4NDMsMTMgKzEwNzIxLDI0NSBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJ CQlmYWxzZSwJLyogbm8gb2xkIGNoZWNrIGV4aXN0cyAqLwogCQkJCQkJCQlBY2Nlc3NFeGNs dXNpdmVMb2NrLAogCQkJCQkJCQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQl1cGRhdGVU cmlnZ2VyT2lkKTsKKwkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJY29uc3Ry Rm9ybS0+Y29udGVtcG9yYWwpOwogCQl0YWJsZV9jbG9zZShwa3JlbCwgTm9Mb2NrKTsKIAl9 CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3Rh dGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25z dHJhaW50LAorCQlBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCWludCBpLAorCQlpbnQxNiAq ZmthdHRudW0sCisJCWJvb2wgKm9sZF9jaGVja19vaywKKwkJTGlzdENlbGwgKipvbGRfcGZl cW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQli b29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVybGFwcywKKwkJT2lkICpwZmVxb3BPdXQs IE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCkKK3sKKwlPaWQJCQlma3R5cGVkOwor CUhlYXBUdXBsZQljbGFfaHQ7CisJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7CisJT2lkCQkJ YW1pZDsKKwlPaWQJCQlvcGZhbWlseTsKKwlPaWQJCQlvcGNpbnR5cGU7CisJT2lkCQkJcGZl cW9wOworCU9pZAkJCXBwZXFvcDsKKwlPaWQJCQlmZmVxb3A7CisJaW50MTYJCWVxc3RyYXRl Z3k7CisJT2lkCQkJcGZlcW9wX3JpZ2h0OworCisJLyogV2UgbmVlZCBzZXZlcmFsIGZpZWxk cyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KKwljbGFfaHQgPSBTZWFyY2hTeXND YWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9wY2xhc3MpKTsKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzKTsKKwljbGFfdHVwID0gKEZvcm1fcGdfb3Bj bGFzcykgR0VUU1RSVUNUKGNsYV9odCk7CisJYW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsK KwlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKKwlvcGNpbnR5cGUgPSBjbGFfdHVw LT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5c0NhY2hlKGNsYV9odCk7CisKKwlpZiAoaXNfdGVt cG9yYWwpCisJeworCQlpZiAoYW1pZCAhPSBHSVNUX0FNX09JRCkKKwkJCWVsb2coRVJST1Is ICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWdu IGtleXMiKTsKKwkJLyoKKwkJICogRm9yIHRoZSBub24tb3ZlcmxhcHMgcGFydHMsIHdlIHdh bnQgZWl0aGVyIFJURXF1YWxTdHJhdGVneU51bWJlciAod2l0aG91dCBidHJlZV9naXN0KQor CQkgKiBvciBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIgKHdpdGggYnRyZWVfZ2lzdCkuIFdlJ2xs IHRyeSB0aGUgbGF0dGVyIGZpcnN0LgorCQkgKi8KKwkJZXFzdHJhdGVneSA9IGZvcl9vdmVy bGFwcyA/IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyIDogQlRFcXVhbFN0cmF0ZWd5TnVtYmVy OworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJl bnRseSB0aGlzIGNhbiBuZXZlciBmYWlsIHNpbmNlIG5vIG90aGVyCisJCSAqIGluZGV4IEFN cyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0 eXBlcworCQkgKiBvZiB1bmlxdWUgaW5kZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVy bWluZSB3aGljaCBvcGVyYXRvcgorCQkgKiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHku ICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNpc3QgdGhhdAorCQkgKiBldmVyeSBzdWNoIGlu ZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBmb3IgZXF1YWxpdHk/KQorCQkgKi8KKwkJaWYg KGFtaWQgIT0gQlRSRUVfQU1fT0lEKQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGlu ZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9yZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kg PSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJfQorCisJLyoKKwkgKiBUaGVyZSBoYWQgYmV0 dGVyIGJlIGEgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgorCSAq IFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29ucy4KKwkgKi8KKwlwcGVxb3Ag PSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwK KwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCisJLyogRmFsbCBiYWNrIHRvIFJURXF1YWxTdHJh dGVneU51bWJlciBmb3IgdGVtcG9yYWwgb3ZlcmxhcHMgKi8KKwlpZiAoaXNfdGVtcG9yYWwg JiYgIWZvcl9vdmVybGFwcyAmJiAhT2lkSXNWYWxpZChwcGVxb3ApKQorCXsKKwkJZXFzdHJh dGVneSA9IFJURXF1YWxTdHJhdGVneU51bWJlcjsKKwkJcHBlcW9wID0gZ2V0X29wZmFtaWx5 X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsCisJCQkJCQkJCQkgZXFz dHJhdGVneSk7CisJfQorCisKKwlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKKwkJZWxvZyhF UlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFtaWx5ICV1IiwKKwkJ CSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOworCisJLyoK KwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQgdGFrZSBleGFjdGx5IHRo ZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21h aW4gaGVyZS4KKwkgKi8KKwlma3R5cGVkID0gZ2V0QmFzZVR5cGUoZmt0eXBlKTsKKworCXBm ZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBl ZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkpCisJ eworCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOworCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlf bWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5cGVkLAorCQkJCQkJCQkJIGVxc3RyYXRl Z3kpOworCX0KKwllbHNlCisJeworCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCXBm ZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7CisJCWZmZXFvcCA9IEludmFsaWRPaWQ7CisJfQor CisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJ eworCQkvKgorCQkgKiBPdGhlcndpc2UsIGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJv bSB0aGUgRksgdHlwZSB0byB0aGUKKwkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVz ZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KKwkJICogVGhpcyBpcyBhIGJpdCB0 cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYworCQkgKiB0 eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRl c3QgaXMKKwkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJl IGNvbmN1cnJlbnRseSBjYXN0IHRvCisJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdl J2QgZmFpbCB0byByZWplY3QgY29tYmluYXRpb25zIHN1Y2gKKwkJICogYXMgaW50W10gYW5k IHBvaW50W10uKQorCQkgKi8KKwkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKKwkJT2lkCQkJ dGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJaW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKKwkJ aW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsKKwkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNp bnR5cGU7CisJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBlOworCQlpZiAoY2FuX2Nv ZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAorCQkJCQkJCUNP RVJDSU9OX0lNUExJQ0lUKSkKKwkJeworCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOwor CQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOworCQl9CisJfQorCisJaWYgKCEoT2lkSXNW YWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJeworCQljaGFyICpma2F0 dHJfbmFtZTsKKwkJY2hhciAqcGthdHRyX25hbWU7CisKKwkJaWYgKGZvcl9vdmVybGFwcykK KwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5ma19wZXJpb2Qp OworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5wa19wZXJpb2QpOwor CQl9CisJCWVsc2UKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtj b25zdHJhaW50LT5ma19hdHRycywgaSkpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwobGlz dF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkpOworCQl9CisKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkg ZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiBjYW5ub3QgYmUgaW1wbGVt ZW50ZWQiLAorCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKKwkJCQkgZXJyZGV0YWls KCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCisJCQkJCQkgICAiYXJlIG9mIGlu Y29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCisJCQkJCQkgICBma2F0dHJfbmFtZSwK KwkJCQkJCSAgIHBrYXR0cl9uYW1lLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0eXBl KSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkpKSk7CisJfQorCisJaWYgKCpv bGRfY2hlY2tfb2spCisJeworCQkvKgorCQkgKiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMsIHJl dmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAorCQkgKiBwZXJtaXQgaW50cmEt b3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQorCQkg KiB3aXRob3V0IGFueSBjb25jcmV0ZSBiZW5lZml0IGZvciBjb3JlIHR5cGVzLiAgV2UgbmVl ZCBub3QKKwkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNoIFJJX0luaXRpYWxf Q2hlY2soKSBkb2VzIG5vdCB1c2UuCisJCSAqLworCQkqb2xkX2NoZWNrX29rID0gKHBmZXFv cCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZlcW9wX2l0ZW0pKTsKKwkJKm9sZF9wZmVxb3BfaXRl bSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKKwkJCQkJCQkJKm9sZF9w ZmVxb3BfaXRlbSk7CisJfQorCWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJT2lkCQkJb2xk X2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2ZrdHlwZTsKKwkJQ29lcmNpb25QYXRoVHlwZSBvbGRf cGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0eXBlOworCQlPaWQJCQlv bGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5ld19jYXN0ZnVuYzsKKwkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAorCQkJCQkJCQkJCQkgICBm a2F0dG51bVtpXSAtIDEpOworCisJCS8qCisJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3 YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQorCQkgKiBjb2x1bW4g dHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFv cC4KKwkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlzIG5v dCBjaGFuZ2luZy4KKwkJICovCisJCW9sZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKKwkJ bmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBm ZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKKwkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOworCQlu ZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBlLAor CQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7CisKKwkJLyoKKwkJICogVXBvbiBhIGNoYW5nZSB0 byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1bW4gdG8gaXRzIHBmZXFvcAorCQkgKiBvcGVy YW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwg YQorCQkgKiBiaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3Qg YXQgYWxsLiAgV2hpbGUKKwkJICogdHlwZSBpbXBsZW1lbnRvcnMgc2hvdWxkIGRlc2lnbiBp bXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQorCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Yg b3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKKwkJICogYXNzdW1lIGhlcmUg dGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KKwkJICoKKwkJICogQSBmdW5jdGlvbiB3aXRoIGEg cG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCisJCSAqIGFyYml0 cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9y ZSwKKwkJICogd2hlbiB0aGUgY2FzdCBkZXN0aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywgd2Ug b25seSBhdm9pZAorCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5v dCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCisJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBl cyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAorCQkgKiBwcmV2ZW50 cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25zLgorCQkgKgorCQkgKiBJZiB0aGUgY2FzdCBj b252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4KKwkJ ICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJlIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1 ZSBpbmRleC4KKwkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVz dCB0aGVuIGJlIG9mIHRoZSBkb21haW4KKwkJICogdHlwZS4gIFNpbmNlIHRoZSBjb25zdHJh aW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCisJCSAqIHRoZSBmb3Jl aWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qgb24gdGhlIHByaW1hcnkgc2lkZSBhbmQgaW4K KwkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5l ZWQgbm90IHRyZWF0CisJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCisJCSAqCisJCSAq IFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBu b3Rpb24gb2YKKwkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4dGVx IHJlZHVjZXMgdG8gYml0d2lzZQorCQkgKiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUg Y29sbGF0aW9uIGhlcmUuCisJCSAqCisJCSAqIFdlIG5lZWQgbm90IGRpcmVjdGx5IGNvbnNp ZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQorCQkgKiBiaW5hcnkgY29lcmNp YmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCisJCSAq IGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRl cm1zIG9mCisJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlwZSBh bHNvIGNoYW5nZXMgcGZlcW9wLgorCQkgKi8KKwkJKm9sZF9jaGVja19vayA9IChuZXdfcGF0 aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCisJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nh c3RmdW5jICYmCisJCQkJCQkoIUlzUG9seW1vcnBoaWNUeXBlKHBmZXFvcF9yaWdodCkgfHwK KwkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9ma3R5cGUpKTsKKworCX0KKworCSpwZmVxb3BP dXQgPSBwZmVxb3A7CisJKnBwZXFvcE91dCA9IHBwZXFvcDsKKwkqZmZlcW9wT3V0ID0gZmZl cW9wOworfQorCiAvKgogICogV2hlbiB0aGUgcGFyZW50IG9mIGEgcGFydGl0aW9uIHJlY2Vp dmVzIFt0aGUgcmVmZXJlbmNpbmcgc2lkZSBvZl0gYSBmb3JlaWduCiAgKiBrZXksIHdlIG11 c3QgcHJvcGFnYXRlIHRoYXQgZm9yZWlnbiBrZXkgdG8gdGhlIHBhcnRpdGlvbi4gIEhvd2V2 ZXIsIHRoZQpAQCAtMTEzNDcsNyArMTE0NTcsMTEgQEAgQVRFeGVjQWx0ZXJDb25zdHJSZWN1 cnNlKENvbnN0cmFpbnQgKmNtZGNvbiwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3Jl bCwKIAkJCWlmICh0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfTk9BQ1RJT05fREVMICYm CiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX05PQUNUSU9OX1VQRCAmJgogCQkJ CXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19JTlMgJiYKLQkJCQl0Z2Zvcm0t PnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hFQ0tfVVBEKQorCQkJCXRnZm9ybS0+dGdmb2lkICE9 IEZfUklfRktFWV9DSEVDS19VUEQgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9G S0VZX05PQUNUSU9OX0RFTCAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlf Tk9BQ1RJT05fVVBEICYmCisJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9UUklfRktFWV9DSEVD S19JTlMgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9GS0VZX0NIRUNLX1VQRCkK IAkJCQljb250aW51ZTsKIAogCQkJdGdDb3B5VHVwbGUgPSBoZWFwX2NvcHl0dXBsZSh0Z3R1 cGxlKTsKQEAgLTExNTk1LDcgKzExNzA5LDYgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50 KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAlyZXR1 cm4gYWRkcmVzczsKIH0KIAotCiAvKgogICogdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QgLSB0 cmFuc2Zvcm0gbGlzdCBvZiBjb2x1bW4gbmFtZXMKICAqCkBAIC0xMTY2Myw3ICsxMTc3Niw5 IEBAIHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwK IHN0YXRpYyBpbnQKIHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVs LCBPaWQgKmluZGV4T2lkLAogCQkJCQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAorCQkJCQkJ ICAgTm9kZSAqKnBrX3BlcmlvZCwKIAkJCQkJCSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0 dHR5cGlkcywKKwkJCQkJCSAgIGludDE2ICpwZXJpb2RhdHRudW1zLCBPaWQgKnBlcmlvZGF0 dHR5cGlkcywKIAkJCQkJCSAgIE9pZCAqb3BjbGFzc2VzKQogewogCUxpc3QJICAgKmluZGV4 b2lkbGlzdDsKQEAgLTExNzI4LDM2ICsxMTg0Myw1NSBAQCB0cmFuc2Zvcm1Ga2V5R2V0UHJp bWFyeUtleShSZWxhdGlvbiBwa3JlbCwgT2lkICppbmRleE9pZCwKIAogCS8qCiAJICogTm93 IGJ1aWxkIHRoZSBsaXN0IG9mIFBLIGF0dHJpYnV0ZXMgZnJvbSB0aGUgaW5ka2V5IGRlZmlu aXRpb24gKHdlCi0JICogYXNzdW1lIGEgcHJpbWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVz c2lvbmFsIGVsZW1lbnRzKQorCSAqIGFzc3VtZSBhIHByaW1hcnkga2V5IGNhbm5vdCBoYXZl IGV4cHJlc3Npb25hbCBlbGVtZW50cywgdW5sZXNzIGl0CisJICogaGFzIGEgUEVSSU9EKQog CSAqLwogCSphdHRuYW1lbGlzdCA9IE5JTDsKIAlmb3IgKGkgPSAwOyBpIDwgaW5kZXhTdHJ1 Y3QtPmluZG5rZXlhdHRzOyBpKyspCiAJewogCQlpbnQJCQlwa2F0dG5vID0gaW5kZXhTdHJ1 Y3QtPmluZGtleS52YWx1ZXNbaV07CiAKLQkJYXR0bnVtc1tpXSA9IHBrYXR0bm87Ci0JCWF0 dHR5cGlkc1tpXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7Ci0JCW9wY2xhc3Nl c1tpXSA9IGluZGNsYXNzLT52YWx1ZXNbaV07Ci0JCSphdHRuYW1lbGlzdCA9IGxhcHBlbmQo KmF0dG5hbWVsaXN0LAotCQkJCQkJCSAgIG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKCph dHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKSk7CisJCWlmIChpID09IGluZGV4U3Ry dWN0LT5pbmRua2V5YXR0cyAtIDEgJiYgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKQor CQl7CisJCQkvKiB3ZSBoYXZlIGEgcmFuZ2UgKi8KKwkJCS8qIFRoZSBjYWxsZXIgd2lsbCBz ZXQgYXR0bnVtc1tpXSAqLworCQkJcGVyaW9kYXR0bnVtc1swXSA9IHBrYXR0bm87CisJCQlw ZXJpb2RhdHR0eXBpZHNbMF0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJ b3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKworCQkJQXNzZXJ0KCpwa19w ZXJpb2QgPT0gTlVMTCk7CisJCQkqcGtfcGVyaW9kID0gKE5vZGUgKikgbWFrZVN0cmluZyhw c3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpOworCQl9 CisJCWVsc2UKKwkJeworCQkJYXR0bnVtc1tpXSA9IHBrYXR0bm87CisJCQlhdHR0eXBpZHNb aV0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0g aW5kY2xhc3MtPnZhbHVlc1tpXTsKKwkJCSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5h bWVsaXN0LAorCQkJCQkJCQkgIG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1B dHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKSk7CisJCX0KIAl9CiAKIAlSZWxlYXNlU3lzQ2Fj aGUoaW5kZXhUdXBsZSk7CiAKLQlyZXR1cm4gaTsKKwlpZiAoaW5kZXhTdHJ1Y3QtPmluZGlz ZXhjbHVzaW9uKSByZXR1cm4gaSAtIDE7CisJZWxzZSByZXR1cm4gaTsKIH0KIAogLyoKICAq IHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzIC0KICAqCiAgKglNYWtlIHN1cmUgdGhhdCB0aGUg YXR0cmlidXRlcyBvZiBhIHJlZmVyZW5jZWQgdGFibGUgYmVsb25nIHRvIGEgdW5pcXVlCi0g Kgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFpbnQuICBSZXR1cm4gdGhlIE9JRCBvZiB0aGUg aW5kZXggc3VwcG9ydGluZwotICoJdGhlIGNvbnN0cmFpbnQsIGFzIHdlbGwgYXMgdGhlIG9w Y2xhc3NlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGluZGV4CisgKgkob3IgcHJpbWFyeSBrZXkp IGNvbnN0cmFpbnQuICBPciBpZiB0aGlzIGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkKKyAq CXRoZSBwcmltYXJ5IGtleSBzaG91bGQgYmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgaW5z dGVhZC4KKyAqCVJldHVybiB0aGUgT0lEIG9mIHRoZSBpbmRleCBzdXBwb3J0aW5nIHRoZSBj b25zdHJhaW50LAorICoJYXMgd2VsbCBhcyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0 aCB0aGUgaW5kZXgKICAqCWNvbHVtbnMuCiAgKi8KIHN0YXRpYyBPaWQKIHRyYW5zZm9ybUZr ZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJaW50IG51bWF0dHJzLCBpbnQx NiAqYXR0bnVtcywKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGludDE2IHBlcmlvZGF0dG51 bSwKIAkJCQkJCU9pZCAqb3BjbGFzc2VzKSAvKiBvdXRwdXQgcGFyYW1ldGVyICovCiB7CiAJ T2lkCQkJaW5kZXhvaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTE3ODQsNiArMTE5MTgsMTAgQEAg dHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAogCQkJCQkJIGVycm1zZygiZm9yZWln biBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNh dGVzIikpKTsKIAkJfQorCQlpZiAoaXNfdGVtcG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBwZXJp b2RhdHRudW0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfRk9SRUlHTl9LRVkpLAorCQkJCQkgZXJybXNnKCJmb3JlaWduIGtleSByZWZlcmVu Y2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMiKSkpOwogCX0K IAogCS8qCkBAIC0xMTgwNSwxMiArMTE5NDMsMTYgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0 cnMoUmVsYXRpb24gcGtyZWwsCiAJCWluZGV4U3RydWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdF VFNUUlVDVChpbmRleFR1cGxlKTsKIAogCQkvKgotCQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0 IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVuaXF1ZSBhbmQgbm90IGEKLQkJICogcGFy dGlhbCBpbmRleDsgZm9yZ2V0IGl0IGlmIHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRv by4gSW52YWxpZAotCQkgKiBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4KKwkJICogTXVzdCBo YXZlIHRoZSByaWdodCBudW1iZXIgb2YgY29sdW1uczsgbXVzdCBiZSB1bmlxdWUKKwkJICog KG9yIGlmIHRlbXBvcmFsIHRoZW4gZXhjbHVzaW9uIGluc3RlYWQpIGFuZCBub3QgYQorCQkg KiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFueSBleHByZXNzaW9u cywgdG9vLgorCQkgKiBJbnZhbGlkIGluZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgogCQkgKi8K LQkJaWYgKGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgotCQkJaW5k ZXhTdHJ1Y3QtPmluZGlzdW5pcXVlICYmCisJCWlmICgoaXNfdGVtcG9yYWwKKwkJCSAgPyAo aW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51bWF0dHJzICsgMSAmJgorCQkJCSBpbmRl eFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCisJCQkgIDogKGluZGV4U3RydWN0LT5pbmRua2V5 YXR0cyA9PSBudW1hdHRycyAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpKSAm JgogCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGlu ZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0 aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAt MTE4NDgsNiArMTE5OTAsMTkgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24g cGtyZWwsCiAJCQkJaWYgKCFmb3VuZCkKIAkJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91 bmQgJiYgaXNfdGVtcG9yYWwpCisJCQl7CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQlmb3Ig KGogPSAwOyBqIDwgbnVtYXR0cnMgKyAxOyBqKyspCisJCQkJeworCQkJCQlpZiAocGVyaW9k YXR0bnVtID09IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2pdKQorCQkJCQl7CisJCQkJ CQlvcGNsYXNzZXNbbnVtYXR0cnNdID0gaW5kY2xhc3MtPnZhbHVlc1tqXTsKKwkJCQkJCWZv dW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQogCiAJCQkv KgogCQkJICogUmVmdXNlIHRvIHVzZSBhIGRlZmVycmFibGUgdW5pcXVlL3ByaW1hcnkga2V5 LiAgVGhpcyBpcyBwZXIgU1FMCkBAIC0xMTk1Nyw3ICsxMjExMiw4IEBAIHZhbGlkYXRlRm9y ZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVs LAogCQkJCQkJCSBSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkgT2lkIHBraW5kT2lkLAotCQkJ CQkJCSBPaWQgY29uc3RyYWludE9pZCkKKwkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJ CQkJCQkJIGJvb2wgdGVtcG9yYWwpCiB7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFi bGVTY2FuRGVzYyBzY2FuOwpAQCAtMTE5ODYsOCArMTIxNDIsMTAgQEAgdmFsaWRhdGVGb3Jl aWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCS8qCiAJICogU2VlIGlmIHdlIGNh biBkbyBpdCB3aXRoIGEgc2luZ2xlIExFRlQgSk9JTiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0 CiAJICogaW5kaWNhdGVzIHdlIG11c3QgcHJvY2VlZCB3aXRoIHRoZSBmaXJlLXRoZS10cmln Z2VyIG1ldGhvZC4KKwkgKiBXZSBjYW4ndCBkbyBhIExFRlQgSk9JTiBmb3IgdGVtcG9yYWwg RktzIHlldCwKKwkgKiBidXQgd2UgY2FuIG9uY2Ugd2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0 IGpvaW5zLgogCSAqLwotCWlmIChSSV9Jbml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVs KSkKKwlpZiAoIXRlbXBvcmFsICYmIFJJX0luaXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwgcGty ZWwpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMTIwNTYsNiArMTIyMTQsNyBAQCBDcmVhdGVG S0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQg KmZrY29uc3RyYWludCwKIHsKIAlPYmplY3RBZGRyZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0 ZVRyaWdTdG10ICpma190cmlnZ2VyOworCWJvb2wgaXNfdGVtcG9yYWwgPSBma2NvbnN0cmFp bnQtPmZrX3BlcmlvZDsKIAogCS8qCiAJICogTm90ZTogZm9yIGEgc2VsZi1yZWZlcmVudGlh bCBGSyAocmVmZXJlbmNpbmcgYW5kIHJlZmVyZW5jZWQgdGFibGVzIGFyZQpAQCAtMTIwNzUs MTIgKzEyMjM0LDE4IEBAIENyZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lk IHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAogCS8qIEVpdGhlciBPTiBJ TlNFUlQgb3IgT04gVVBEQVRFICovCiAJaWYgKG9uX2luc2VydCkKIAl7Ci0JCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CisJ CWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlRSSV9GS2V5X2NoZWNrX2lucyIpOworCQllbHNlCisJCQlma190cmlnZ2VyLT5m dW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX2lucyIpOwogCQlma190 cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfSU5TRVJUOwogCX0KIAllbHNlCiAJewot CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNr X3VwZCIpOworCQlpZiAoaXNfdGVtcG9yYWwpCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9jaGVja191cGQiKTsKKwkJZWxzZQorCQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja191cGQi KTsKIAkJZmtfdHJpZ2dlci0+ZXZlbnRzID0gVFJJR0dFUl9UWVBFX1VQREFURTsKIAl9CiAK QEAgLTEyMTM4LDM3ICsxMjMwMyw2OCBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dl cnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgog CWZrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRp b25SZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNo IChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+Zmtf cGVyaW9kICE9IE5VTEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoK LQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7 Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZl cnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfbm9hY3Rpb25fZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f UkVTVFJJQ1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7Ci0JCQlicmVhazsK LQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwot CQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNj YWRlX2RlbCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6 Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5p bml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVt RnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZL Q09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9 IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190 cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRf ZGVsIik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5m a19kZWxfYWN0aW9uKTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMg Ki8KKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJCWNh c2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJ CQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190 cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9DQVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoK KwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkJCSBlcnJtc2coImFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWdu IGtleXMiKSkpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0 cmFpbnQtPmZrX2RlbF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7 CisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKQorCQl7CisJCQljYXNl IEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJ YnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi UklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJ CQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfc2V0bnVsbF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwi KTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5m a19kZWxfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0g Q3JlYXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxPaWQsCkBAIC0xMjE5OCwz NyArMTIzOTQsNjggQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9u IHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHIKIAlma190cmlnZ2Vy LT53aGVuQ2xhdXNlID0gTlVMTDsKIAlma190cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9IE5J TDsKIAlma190cmlnZ2VyLT5jb25zdHJyZWwgPSBOVUxMOwotCXN3aXRjaCAoZmtjb25zdHJh aW50LT5ma191cGRfYWN0aW9uKQorCWlmIChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBO VUxMKQogCXsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046Ci0JCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOwotCQkJZmtfdHJp Z2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7Ci0JCQlm a190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9u X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgot CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktD T05TVFJfQUNUSU9OX0NBU0NBREU6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFs c2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsK LQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgotCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJS SV9GS2V5X3NldG51bGxfdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fU0VUREVGQVVMVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0X3VwZCIpOwotCQkJ YnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFj dGlvbiB0eXBlOiAlZCIsCi0JCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlv bik7Ci0JCQlicmVhazsKKwkJLyogVGVtcG9yYWwgZm9yZWlnbiBrZXlzICovCisJCXN3aXRj aCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25z dHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZr Y29uc3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0g U3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X25vYWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOwor CQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3Jlc3RyaWN0X3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Q0FTQ0FERToKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQljYXNlIEZL Q09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNn KCJhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsK KwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191 cGRfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2gg KGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3Ry YWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2Nv bnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVz dHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVND QURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CisJ CQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Nl dG51bGxfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRE RUZBVUxUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBkIik7CisJCQkJYnJl YWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0 aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlv bik7CisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAl0cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdn ZXIoZmtfdHJpZ2dlciwgTlVMTCwgcmVmUmVsT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggM2Vh NGFjYjc0ZC4uN2QyMjMxOWQ0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01MjMsMTEgKzUyMywx MiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CVRhYmxlRWxl bWVudCBUeXBlZFRhYmxlRWxlbWVudCBDb25zdHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50 CiAldHlwZSA8bm9kZT4JY29sdW1uRGVmIGNvbHVtbk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+ CWRlZl9lbGVtIHJlbG9wdGlvbl9lbGVtIG9sZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2Vs ZW0KLSV0eXBlIDxub2RlPglkZWZfYXJnIGNvbHVtbkVsZW0gd2l0aG91dF9vdmVybGFwc19j bGF1c2UKKyV0eXBlIDxub2RlPglkZWZfYXJnIGNvbHVtbkVsZW0gd2l0aG91dF9vdmVybGFw c19jbGF1c2Ugb3B0aW9uYWxQZXJpb2ROYW1lCiAJCQkJd2hlcmVfY2xhdXNlIHdoZXJlX29y X2N1cnJlbnRfY2xhdXNlCiAJCQkJYV9leHByIGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBp bmRpcmVjdGlvbl9lbCBvcHRfc2xpY2VfYm91bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBo YXZpbmdfY2xhdXNlIGZ1bmNfdGFibGUgeG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdo ZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcKKyV0eXBlIDxsaXN0PglvcHRfY29sdW1uX2Fu ZF9wZXJpb2RfbGlzdAogJXR5cGUgPGxpc3Q+CXJvd3Nmcm9tX2l0ZW0gcm93c2Zyb21fbGlz dCBvcHRfY29sX2RlZl9saXN0CiAldHlwZSA8Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkKICV0 eXBlIDxsaXN0PglFeGNsdXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50 RWxlbQpAQCAtNzQ1LDcgKzc0Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ T1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAogCVBBUkFM TEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09S RAotCVBMQUNJTkcgUExBTlMgUE9MSUNZCisJUEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZ CiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBB UkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBS T0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCkBAIC00MTg2LDIxICs0MTg3LDIzIEBA IENvbnN0cmFpbnRFbGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkk JCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlz dCAnKScgUkVGRVJFTkNFUyBxdWFsaWZpZWRfbmFtZQotCQkJCW9wdF9jb2x1bW5fbGlzdCBr ZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKKwkJCXwgRk9S RUlHTiBLRVkgJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJyBSRUZFUkVO Q0VTIHF1YWxpZmllZF9uYW1lCisJCQkJb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xpc3Qga2V5 X21hdGNoIGtleV9hY3Rpb25zIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJ CQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CiAKIAkJCQkJbi0+Y29u dHlwZSA9IENPTlNUUl9GT1JFSUdOOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwotCQkJCQlu LT5wa3RhYmxlID0gJDc7CisJCQkJCW4tPnBrdGFibGUgPSAkODsKIAkJCQkJbi0+ZmtfYXR0 cnMgPSAkNDsKLQkJCQkJbi0+cGtfYXR0cnMgPSAkODsKLQkJCQkJbi0+ZmtfbWF0Y2h0eXBl ID0gJDk7Ci0JCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDEwKS0+dXBkYXRlQWN0aW9uLT5h Y3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDEwKS0+ZGVsZXRlQWN0aW9uLT5h Y3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTApLT5kZWxldGVBY3Rpb24t PmNvbHM7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQxMSwgQDExLCAiRk9SRUlHTiBLRVkiLAor CQkJCQluLT5ma19wZXJpb2QgPSAkNTsKKwkJCQkJbi0+cGtfYXR0cnMgPSBsaW5pdGlhbCgk OSk7CisJCQkJCW4tPnBrX3BlcmlvZCA9IGxzZWNvbmQoJDkpOworCQkJCQluLT5ma19tYXRj aHR5cGUgPSAkMTA7CisJCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDExKS0+dXBkYXRlQWN0 aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDExKS0+ZGVsZXRlQWN0 aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTEpLT5kZWxldGVB Y3Rpb24tPmNvbHM7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQxMiwgQDEyLCAiRk9SRUlHTiBL RVkiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwKIAkJ CQkJCQkJICAgJm4tPnNraXBfdmFsaWRhdGlvbiwgTlVMTCwKIAkJCQkJCQkJICAgeXlzY2Fu bmVyKTsKQEAgLTQyMjgsNiArNDIzMSwxNiBAQCB3aXRob3V0X292ZXJsYXBzX2NsYXVzZToK IAkJCXwgLypFTVBUWSovICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KIAk7CiAKK29w dGlvbmFsUGVyaW9kTmFtZToKKwkJCScsJyBQRVJJT0QgY29sdW1uRWxlbSB7ICQkID0gJDM7 IH0KKwkJCXwgLypFTVBUWSovICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisK K29wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0OgorCQkJJygnIGNvbHVtbkxpc3Qgb3B0aW9u YWxQZXJpb2ROYW1lICcpJwkJCXsgJCQgPSBsaXN0X21ha2UyKCQyLCAkMyk7IH0KKwkJCXwg LypFTVBUWSovCQkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMihOSUwsIE5VTEwpOyB9CisJCTsK KwogY29sdW1uRWxlbTogQ29sSWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0 cmluZygkMSk7CkBAIC0xNzUxNSw2ICsxNzUyOCw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJ CQl8IE9OTFkKIAkJCXwgT1IKIAkJCXwgT1JERVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJ TkcKIAkJCXwgUFJJTUFSWQogCQkJfCBSRUZFUkVOQ0VTCkBAIC0xNzgyNCw2ICsxNzgzOCw3 IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcK IAkJCXwgUEFTU1dPUkQKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMK IAkJCXwgUE9MSUNZCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJp Z2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDY5 NDVkOTliM2QuLmFiYTBlNjJkZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vy cy5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24u aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIu aCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgpAQCAtNDgsNiArNDksNyBAQAog I2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5 cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgi CiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCkBAIC0xMTgsNiArMTIwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUklfQ29uc3RyYWludEluZm8KIAlpbnQxNgkJY29uZmRlbHNldGNvbHNb UklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIGNvbHMgdG8gc2V0IG9uCiAJCQkJCQkJ CQkJCQkgKiBkZWxldGUgKi8KIAljaGFyCQljb25mbWF0Y2h0eXBlOwkvKiBmb3JlaWduIGtl eSdzIG1hdGNoIHR5cGUgKi8KKwlib29sCQl0ZW1wb3JhbDsJCS8qIGlmIHRoZSBmb3JlaWdu IGtleSBpcyB0ZW1wb3JhbCAqLwogCWludAkJCW5rZXlzOwkJCS8qIG51bWJlciBvZiBrZXkg Y29sdW1ucyAqLwogCWludDE2CQlwa19hdHRudW1zW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0 bnVtcyBvZiByZWZlcmVuY2VkIGNvbHMgKi8KIAlpbnQxNgkJZmtfYXR0bnVtc1tSSV9NQVhf TlVNS0VZU107IC8qIGF0dG51bXMgb2YgcmVmZXJlbmNpbmcgY29scyAqLwpAQCAtMjAwLDgg KzIwMyw5IEBAIHN0YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0dXBEZXNjLCBU dXBsZVRhYmxlU2xvdCAqc2xvdCwKIHN0YXRpYyB2b2lkIHJpX0J1aWxkUXVlcnlLZXkoUklf UXVlcnlLZXkgKmtleSwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5m bywKIAkJCQkJCQkgaW50MzIgY29uc3RyX3F1ZXJ5bm8pOwotc3RhdGljIGJvb2wgcmlfS2V5 c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFi bGVTbG90ICpuZXdzbG90LAorc3RhdGljIGJvb2wgcmlfS2V5c1N0YWJsZShSZWxhdGlvbiBy ZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwK IAkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19w ayk7CitzdGF0aWMgYm9vbCByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2soYm9vbCByZWxf aXNfcGssIERhdHVtIG9sZHZhbHVlLCBEYXR1bSBuZXd2YWx1ZSk7CiBzdGF0aWMgYm9vbCBy aV9BdHRyaWJ1dGVzRXF1YWwoT2lkIGVxX29wciwgT2lkIHR5cGVpZCwKIAkJCQkJCQkgICBE YXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwogCkBAIC0zNjEsMjYgKzM2NSw1OCBA QCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAogCQkvKiAtLS0tLS0t LS0tCiAJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKLQkJICoJU0VMRUNUIDEgRlJP TSBbT05MWV0gPHBrdGFibGU+IHggV0hFUkUgcGthdHQxID0gJDEgW0FORCAuLi5dCi0JCSAq CQkgICBGT1IgS0VZIFNIQVJFIE9GIHgKKwkJICoJU0VMRUNUIDEKKwkJICoJRlJPTSBbT05M WV0gPHBrdGFibGU+IHggV0hFUkUgcGthdHQxID0gJDEgW0FORCAuLi5dCisJCSAqCUZPUiBL RVkgU0hBUkUgT0YgeAogCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJz IGFyZSB0aG9zZSBvZiB0aGUKIAkJICogY29ycmVzcG9uZGluZyBGSyBhdHRyaWJ1dGVzLgor CQkgKgorCQkgKiBCdXQgZm9yIHRlbXBvcmFsIEZLcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQor CQkgKiB0aGUgRksncyByYW5nZSBpcyBjb21wbGV0ZWx5IGNvdmVyZWQuCisJCSAqIFNvIHdl IHVzZSB0aGlzIHF1ZXJ5IGluc3RlYWQ6CisJCSAqICBTRUxFQ1QgMQorCQkgKglGUk9NCSgK KwkJICoJCVNFTEVDVCBwa3BlcmlvZGF0dCBBUyByCisJCSAqCQlGUk9NICAgW09OTFldIHBr dGFibGUgeAorCQkgKgkJV0hFUkUgIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKgkJQU5E ICAgIHBrcGVyaW9kYXR0ICYmICRuCisJCSAqCQlGT1IgS0VZIFNIQVJFIE9GIHgKKwkJICoJ KSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJhbmdlX2FnZyh4MS5yKQorCQkgKiBOb3RlIGlm IEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3MgR1JPVVAgQlkgYW5kIEhBVklORworCQkgKiB3 ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBsZXIuCiAJCSAqIC0tLS0tLS0tLS0KIAkJICov CiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJk X3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDog Ik9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQlh cHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJ CQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJ eworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCVJJQXR0TmFtZShwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQkJYXBwZW5kU3Ry aW5nSW5mbygmcXVlcnlidWYsCisJCQkJCSJTRUxFQ1QgMSBGUk9NIChTRUxFQ1QgJXMgQVMg ciBGUk9NICVzJXMgeCIsCisJCQkJCWF0dG5hbWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJ CX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVD VCAxIEZST00gJXMlcyB4IiwKKwkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQog CQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5u a2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwg cmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUo ZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkCXBrX3R5cGU7CisJCQlP aWQJZmtfdHlwZTsKIAorCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+ cGtfYXR0bnVtc1tpXSk7CiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0 dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKworCQkJZmtfdHlwZSA9 IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKIAkJCXNwcmlu dGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVy eWJ1ZiwgcXVlcnlzZXAsCiAJCQkJCQkJYXR0bmFtZSwgcGtfdHlwZSwKQEAgLTM5MCw2ICs0 MjYsOCBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCXF1ZXJ5 b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVl cnlidWYsICIgRk9SIEtFWSBTSEFSRSBPRiB4Iik7CisJCWlmIChyaWluZm8tPnRlbXBvcmFs KQorCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIpIHgxIEhBVklORyAkJWQgPEAg cGdfY2F0YWxvZy5yYW5nZV9hZ2coeDEucikiLCByaWluZm8tPm5rZXlzKTsKIAogCQkvKiBQ cmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCiAJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1 ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKQEAgLTQ5NywyMSArNTM1 LDQ5IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtf cmVsLAogCQkgKgkJICAgRk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBlIGlkJ3Mg Zm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBQSyBhdHRyaWJ1 dGVzIHRoZW1zZWx2ZXMuCisJCSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5lZWQgdG8g bWFrZSBzdXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292ZXJlZC4K KwkJICogU28gd2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVDVCAxCisJ CSAqICBGUk9NICAgICgKKwkJICoJICBTRUxFQ1QgcGtwZXJpb2RhdHQgQVMgcgorCQkgKgkg IEZST00gICBbT05MWV0gcGt0YWJsZSB4CisJCSAqCSAgV0hFUkUgIHBrYXR0MSA9ICQxIFtB TkQgLi4uXQorCQkgKgkgIEFORCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkgKgkgIEZPUiBL RVkgU0hBUkUgT0YgeAorCQkgKiAgKSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJhbmdlX2Fn Zyh4MS5yKQorCQkgKiBOb3RlIGlmIEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3MgR1JPVVAg QlkgYW5kIEhBVklORworCQkgKiB3ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBsZXIuCiAJ CSAqIC0tLS0tLS0tLS0KIAkJICovCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJ CXBrX29ubHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGty ZWxuYW1lLCBwa19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVD VCAxIEZST00gJXMlcyB4IiwKLQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOworCQlpZiAo cmlpbmZvLT50ZW1wb3JhbCkKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJQXR0 TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsK KworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCisJCQkJCSJTRUxFQ1QgMSBGUk9N IChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMgeCIsCisJCQkJCWF0dG5hbWUsIHBrX29ubHks IHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKKwkJCQkJcGtfb25seSwgcGtyZWxu YW1lKTsKKwkJfQorCiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQgaSA9IDA7 IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0 dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCQlwa190eXBl OwogCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W2ldKTsKIAkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFtZShwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwg IiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2Vw LAogCQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUsCkBAIC01MjEsNiArNTg3LDggQEAgcmlfQ2hl Y2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJCQlxdWVy eW9pZHNbaV0gPSBwa190eXBlOwogCQl9CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1 ZXJ5YnVmLCAiIEZPUiBLRVkgU0hBUkUgT0YgeCIpOworCQlpZiAocmlpbmZvLT50ZW1wb3Jh bCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkIDxA IHBnX2NhdGFsb2cucmFuZ2VfYWdnKHgxLnIpIiwgcmlpbmZvLT5ua2V5cyk7CiAKIAkJLyog UHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwogCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhx dWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzLCBxdWVyeW9pZHMsCkBAIC02OTUsMTAgKzc2 MywxNiBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9f YWN0aW9uKQogCQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwg cmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBl KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBS SUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwotCQkJT2lkCQkJcGtf Y29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsK LQkJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+Zmtf YXR0bnVtc1tpXSk7CisJCQlPaWQJCXBrX3R5cGU7CisJCQlPaWQJCWZrX3R5cGU7CisJCQlP aWQJCXBrX2NvbGw7CisJCQlPaWQJCWZrX2NvbGw7CisKKwkJCXBrX3R5cGUgPSBSSUF0dFR5 cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJcGtfY29sbCA9IFJJQXR0 Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKworCQkJZmtfdHlw ZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlma19j b2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwog CiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCBy aWluZm8tPmZrX2F0dG51bXNbaV0pKTsKQEAgLTEyMTMsNiArMTI4NywxMjYgQEAgcmlfc2V0 KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkK IAl9CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX2lucyAtCisgKgor ICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IGluc2VydCBldmVu dCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2No ZWNrX2lucyhQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlz IGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4K KwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVja19pbnMiLCBS SV9UUklHVFlQRV9JTlNFUlQpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggVVBEQVRF IGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZj aW5mby0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlfY2hl Y2tfdXBkIC0KKyAqCisgKglDaGVjayB0ZW1wb3JhbCBmb3JlaWduIGtleSBleGlzdGVuY2Ug YXQgdXBkYXRlIGV2ZW50IG9uIEZLIHRhYmxlLgorICogLS0tLS0tLS0tLQorICovCitEYXR1 bQorVFJJX0ZLZXlfY2hlY2tfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LgorCSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5 X2NoZWNrX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKgorCSAqIFNoYXJlIGNv ZGUgd2l0aCBJTlNFUlQgY2FzZS4KKwkgKi8KKwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJp Z2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisg KiBUUklfRktleV9ub2FjdGlvbl9kZWwgLQorICoKKyAqCUdpdmUgYW4gZXJyb3IgYW5kIHJv bGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqCWRlbGV0ZSBoYXMg cmVzdWx0ZWQgaW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHRlbXBvcmFsCisgKglyZWZl cmVudGlhbCBpbnRlZ3JpdHkgY29uc3RyYWludC4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0 dW0KK1RSSV9GS2V5X25vYWN0aW9uX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJ ICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdo dCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJ X0ZLZXlfbm9hY3Rpb25fZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qCisJICog U2hhcmUgY29kZSB3aXRoIFJFU1RSSUNUL1VQREFURSBjYXNlcy4KKwkgKi8KKwlyZXR1cm4g cmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9 CisKKy8qCisgKiBUUklfRktleV9yZXN0cmljdF9kZWwgLQorICoKKyAqIFJlc3RyaWN0IGRl bGV0ZSBmcm9tIFBLIHRhYmxlIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5 LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRp YWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICogdGhlIGRlbGV0ZSBpcyBwZXJmb3Jt ZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25s eSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQ b3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dl ciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9yZXN0 cmljdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMg YSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLwor CXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF9kZWwiLCBSSV9U UklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9VUERB VEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2lu Zm8tPmNvbnRleHQsIGZhbHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X25vYWN0aW9uX3Vw ZCAtCisgKgorICogR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBjdXJyZW50IHRy YW5zYWN0aW9uIGlmIHRoZQorICogdXBkYXRlIGhhcyByZXN1bHRlZCBpbiBhIHZpb2xhdGlv biBvZiB0aGUgZ2l2ZW4gcmVmZXJlbnRpYWwKKyAqIGludGVncml0eSBjb25zdHJhaW50Lgor ICovCitEYXR1bQorVFJJX0ZLZXlfbm9hY3Rpb25fdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSBy aWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJ X0ZLZXlfbm9hY3Rpb25fdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJl IGNvZGUgd2l0aCBSRVNUUklDVC9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3Ry aWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgor ICogVFJJX0ZLZXlfcmVzdHJpY3RfdXBkIC0KKyAqCisgKiBSZXN0cmljdCB1cGRhdGUgb2Yg UEsgdG8gcm93cyB1bnJlZmVyZW5jZWQgYnkgZm9yZWlnbiBrZXkuCisgKgorICogVGhlIFNR TCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQgdGhpcyByZWZlcmVudGlhbCBhY3Rpb24gb2NjdXIg ZXhhY3RseSB3aGVuCisgKiB0aGUgdXBkYXRlIGlzIHBlcmZvcm1lZCwgcmF0aGVyIHRoYW4g YWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8gYmUKKyAqIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0 d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJFU1RSSUNUIi4gIEluIFBvc3RncmVzCisgKiB3ZSBz dGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBhbiBBRlRFUiB0cmlnZ2VyLCBidXQgaXQncyBub24t ZGVmZXJyYWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3Jlc3RyaWN0X3VwZChQR19GVU5D VElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIg Y2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2Vy KGZjaW5mbywgIlRSSV9GS2V5X3Jlc3RyaWN0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7 CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggTk8gQUNUSU9OL0RFTEVURSBjYXNlcy4gKi8KKwly ZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFs c2UpOworfQogCiAvKgogICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQpAQCAt MTI0MSw3ICsxNDM1LDcgQEAgUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dl ciAqdHJpZ2dlciwgUmVsYXRpb24gcGtfcmVsLAogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBJ ZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5l ZWRlZCAqLwotCWlmIChuZXdzbG90ICYmIHJpX0tleXNFcXVhbChwa19yZWwsIG9sZHNsb3Qs IG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCisJaWYgKG5ld3Nsb3QgJiYgcmlfS2V5c1N0YWJs ZShwa19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCiAJCXJldHVybiBm YWxzZTsKIAogCS8qIEVsc2Ugd2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpAQCAt MTM0MCw3ICsxNTM0LDcgQEAgUklfRktleV9ma191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dl ciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLAogCQlyZXR1cm4gdHJ1ZTsKIAogCS8qIElm IGFsbCBvbGQgYW5kIG5ldyBrZXkgdmFsdWVzIGFyZSBlcXVhbCwgbm8gY2hlY2sgaXMgbmVl ZGVkICovCi0JaWYgKHJpX0tleXNFcXVhbChma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJp aW5mbywgZmFsc2UpKQorCWlmIChyaV9LZXlzU3RhYmxlKGZrX3JlbCwgb2xkc2xvdCwgbmV3 c2xvdCwgcmlpbmZvLCBmYWxzZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIEVsc2Ugd2Ug bmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpAQCAtMTQ4OCwxNSArMTY4MiwxNyBAQCBS SV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVs YXRpb24gcGtfcmVsKQogCXNlcCA9ICIoIjsKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5m by0+bmtleXM7IGkrKykKIAl7Ci0JCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVs LCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwotCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBl KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKLQkJT2lkCQkJcGtfY29sbCA9IFJJ QXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJ ZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KTsKKwkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQlPaWQJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+Zmtf YXR0bnVtc1tpXSk7CisJCU9pZAlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCBy aWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlPaWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQlxdW90ZU9uZU5hbWUocGth dHRuYW1lICsgMywKIAkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tpXSkpOworCiAJCXF1b3RlT25lTmFtZShma2F0dG5hbWUgKyAzLAogCQkJCQkgUklBdHRO YW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisKIAkJcmlfR2VuZXJhdGVR dWFsKCZxdWVyeWJ1Ziwgc2VwLAogCQkJCQkJcGthdHRuYW1lLCBwa190eXBlLAogCQkJCQkJ cmlpbmZvLT5wZl9lcV9vcHJzW2ldLApAQCAtMjEzNyw2ICsyMzMzLDcgQEAgcmlfTG9hZENv bnN0cmFpbnRJbmZvKE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5mbyA9IChSSV9Db25zdHJh aW50SW5mbyAqKSBoYXNoX3NlYXJjaChyaV9jb25zdHJhaW50X2NhY2hlLAogCQkJCQkJCQkJ CQkgICAmY29uc3RyYWludE9pZCwKIAkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwgJmZvdW5k KTsKKwogCWlmICghZm91bmQpCiAJCXJpaW5mby0+dmFsaWQgPSBmYWxzZTsKIAllbHNlIGlm IChyaWluZm8tPnZhbGlkKQpAQCAtMjE3MSw2ICsyMzY4LDcgQEAgcmlfTG9hZENvbnN0cmFp bnRJbmZvKE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5mby0+Y29uZnVwZHR5cGUgPSBjb25G b3JtLT5jb25mdXBkdHlwZTsKIAlyaWluZm8tPmNvbmZkZWx0eXBlID0gY29uRm9ybS0+Y29u ZmRlbHR5cGU7CiAJcmlpbmZvLT5jb25mbWF0Y2h0eXBlID0gY29uRm9ybS0+Y29uZm1hdGNo dHlwZTsKKwlyaWluZm8tPnRlbXBvcmFsID0gY29uRm9ybS0+Y29udGVtcG9yYWw7CiAKIAlE ZWNvbnN0cnVjdEZrQ29uc3RyYWludFJvdyh0dXAsCiAJCQkJCQkJICAgJnJpaW5mby0+bmtl eXMsCkBAIC0yNzkxLDkgKzI5ODksMTIgQEAgcmlfSGFzaFByZXBhcmVkUGxhbihSSV9RdWVy eUtleSAqa2V5LCBTUElQbGFuUHRyIHBsYW4pCiAKIAogLyoKLSAqIHJpX0tleXNFcXVhbCAt CisgKiByaV9LZXlzU3RhYmxlIC0KICAqCi0gKiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBp biBPTEQgYW5kIE5FVyBhcmUgZXF1YWwuCisgKiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBp biBPTEQgYW5kIE5FVyBhcmUgImVxdWl2YWxlbnQiOgorICogRm9yIG5vcm1hbCBGS3Mgd2Ug Y2hlY2sgZm9yIGVxdWFsaXR5LgorICogRm9yIHRlbXBvcmFsIEZLcyB3ZSBjaGVjayB0aGF0 IHRoZSBQSyBzaWRlIGlzIGEgc3VwZXJzZXQgb2YgaXRzIG9sZCB2YWx1ZSwKKyAqIG9yIHRo ZSBGSyBzaWRlIGlzIGEgc3Vic2V0LgogICoKICAqIE5vdGU6IGF0IHNvbWUgcG9pbnQgd2Ug bWlnaHQgd2lzaCB0byByZWRlZmluZSB0aGlzIGFzIGNoZWNraW5nIGZvcgogICogIklTIE5P VCBESVNUSU5DVCIgcmF0aGVyIHRoYW4gIj0iLCB0aGF0IGlzLCBhbGxvdyB0d28gbnVsbHMg dG8gYmUKQEAgLTI4MDEsNyArMzAwMiw3IEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVl cnlLZXkgKmtleSwgU1BJUGxhblB0ciBwbGFuKQogICogcHJldmlvdXNseSBmb3VuZCBhdCBs ZWFzdCBvbmUgb2YgdGhlIHJvd3MgdG8gY29udGFpbiBubyBudWxscy4KICAqLwogc3RhdGlj IGJvb2wKLXJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRz bG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKK3JpX0tleXNTdGFibGUoUmVsYXRpb24g cmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3Qs CiAJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGsp CiB7CiAJY29uc3QgaW50MTYgKmF0dG51bXM7CkBAIC0yODM0LDM1ICszMDM1LDg2IEBAIHJp X0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBs ZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAogCQlpZiAocmVsX2lzX3BrKQogCQl7Ci0JCQkvKgot CQkJICogSWYgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFBLIHRhYmxlLCB0aGVuIGRvIGEgYnl0 ZXdpc2UKLQkJCSAqIGNvbXBhcmlzb24uICBXZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2Vz IGlmIHRoZSB2YWx1ZSBpcwotCQkJICogY2hhbmdlZCB0byBvbmUgdGhhdCAibG9va3MiIGRp ZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcwotCQkJICogZXF1YWwgdXNpbmcgdGhlIGVx dWFsaXR5IG9wZXJhdG9yLiAgVGhpcyBvbmx5IG1ha2VzIGEKLQkJCSAqIGRpZmZlcmVuY2Ug Zm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0Ci0J CQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsgdGhlIHNhbWUuCi0JCQkgKi8KLQkJCUZvcm1f cGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIob2xkc2xvdC0+dHRzX3R1cGxlRGVz Y3JpcHRvciwgYXR0bnVtc1tpXSAtIDEpOworCQkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYg aSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJCQlpZiAocmlfUmFuZ2VBdHRyaWJ1 dGVOZWVkc0NoZWNrKHRydWUsIG9sZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBm YWxzZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIHdlIGFyZSBs b29raW5nIGF0IHRoZSBQSyB0YWJsZSwgdGhlbiBkbyBhIGJ5dGV3aXNlCisJCQkJICogY29t cGFyaXNvbi4gIFdlIG11c3QgcHJvcGFnYXRlIFBLIGNoYW5nZXMgaWYgdGhlIHZhbHVlIGlz CisJCQkJICogY2hhbmdlZCB0byBvbmUgdGhhdCAibG9va3MiIGRpZmZlcmVudCBidXQgd291 bGQgY29tcGFyZSBhcworCQkJCSAqIGVxdWFsIHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVyYXRv ci4gIFRoaXMgb25seSBtYWtlcyBhCisJCQkJICogZGlmZmVyZW5jZSBmb3IgT04gVVBEQVRF IENBU0NBREUsIGJ1dCBmb3IgY29uc2lzdGVuY3kgd2UgdHJlYXQKKwkJCQkgKiBhbGwgY2hh bmdlcyB0byB0aGUgUEsgdGhlIHNhbWUuCisJCQkJICovCisJCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihvbGRzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLCBh dHRudW1zW2ldIC0gMSk7CiAKLQkJCWlmICghZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5l d3ZhbHVlLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCi0JCQkJcmV0dXJuIGZhbHNl OworCQkJCWlmICghZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0 dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KIAkJfQog CQllbHNlCiAJCXsKLQkJCS8qCi0JCQkgKiBGb3IgdGhlIEZLIHRhYmxlLCBjb21wYXJlIHdp dGggdGhlIGFwcHJvcHJpYXRlIGVxdWFsaXR5Ci0JCQkgKiBvcGVyYXRvci4gIENoYW5nZXMg dGhhdCBjb21wYXJlIGVxdWFsIHdpbGwgc3RpbGwgc2F0aXNmeSB0aGUKLQkJCSAqIGNvbnN0 cmFpbnQgYWZ0ZXIgdGhlIHVwZGF0ZS4KLQkJCSAqLwotCQkJaWYgKCFyaV9BdHRyaWJ1dGVz RXF1YWwocmlpbmZvLT5mZl9lcV9vcHJzW2ldLCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ld KSwKLQkJCQkJCQkJCW9sZHZhbHVlLCBuZXd2YWx1ZSkpCi0JCQkJcmV0dXJuIGZhbHNlOwor CQkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJ CXsKKwkJCQlpZiAocmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGZhbHNlLCBvbGR2YWx1 ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQllbHNlCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBGb3IgdGhlIEZLIHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFw cHJvcHJpYXRlIGVxdWFsaXR5CisJCQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29t cGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCisJCQkJICogY29uc3RyYWludCBh ZnRlciB0aGUgdXBkYXRlLgorCQkJCSAqLworCQkJCWlmICghcmlfQXR0cmlidXRlc0VxdWFs KHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVtc1tpXSksCisJ CQkJCQkJCQkJb2xkdmFsdWUsIG5ld3ZhbHVlKSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJ fQogCQl9CiAJfQogCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiByaV9SYW5nZUF0dHJp YnV0ZU5lZWRzQ2hlY2sgLQorICoKKyAqIENvbXBhcmUgb2xkIGFuZCBuZXcgdmFsdWVzLCBh bmQgcmV0dXJuIHRydWUgaWYgd2UgbmVlZCB0byBjaGVjayB0aGUgRksuCisgKgorICogTkI6 IHdlIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgbmVpdGhlciB2YWx1ZSBpcyBudWxsLgor ICovCitzdGF0aWMgYm9vbAorcmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wgcmVs X2lzX3BrLCBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpCit7CisJUmFuZ2VUeXBl ICpvbGRyYW5nZSwgKm5ld3JhbmdlOworCU9pZCBvbGRybmd0eXBlLCBuZXdybmd0eXBlOwor CVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworCW9sZHJhbmdlID0gRGF0dW1HZXRSYW5n ZVR5cGVQKG9sZHZhbHVlKTsKKwluZXdyYW5nZSA9IERhdHVtR2V0UmFuZ2VUeXBlUChuZXd2 YWx1ZSk7CisJb2xkcm5ndHlwZSA9IFJhbmdlVHlwZUdldE9pZChvbGRyYW5nZSk7CisJbmV3 cm5ndHlwZSA9IFJhbmdlVHlwZUdldE9pZChuZXdyYW5nZSk7CisKKwlpZiAob2xkcm5ndHlw ZSAhPSBuZXdybmd0eXBlKQorCQllbG9nKEVSUk9SLCAicmFuZ2UgdHlwZXMgYXJlIGluY29u c2lzdGVudCIpOworCisJdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShvbGRybmd0eXBl LCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisJaWYgKHR5cGNhY2hlLT5ybmdlbGVtdHlwZSA9 PSBOVUxMKQorCQllbG9nKEVSUk9SLCAidHlwZSAldSBpcyBub3QgYSByYW5nZSB0eXBlIiwg b2xkcm5ndHlwZSk7CisKKwlpZiAocmVsX2lzX3BrKQorCQkvKiBJZiB0aGUgUEsncyByYW5n ZSBzaHJ1bmssIGEgY29uZmxpY3QgaXMgcG9zc2libGUuICovCisJCXJldHVybiAhcmFuZ2Vf ZXFfaW50ZXJuYWwodHlwY2FjaGUsIG9sZHJhbmdlLCBuZXdyYW5nZSkgJiYKKwkJCSFyYW5n ZV9jb250YWluc19pbnRlcm5hbCh0eXBjYWNoZSwgbmV3cmFuZ2UsIG9sZHJhbmdlKTsKKwll bHNlCisJCS8qIElmIHRoZSBGSydzIHJhbmdlIGdyZXcsIGEgY29uZmxpY3QgaXMgcG9zc2li bGUuICovCisJCXJldHVybiAhcmFuZ2VfZXFfaW50ZXJuYWwodHlwY2FjaGUsIG9sZHJhbmdl LCBuZXdyYW5nZSkgJiYKKwkJCXJhbmdlX2NvbnRhaW5zX2ludGVybmFsKHR5cGNhY2hlLCBu ZXdyYW5nZSwgb2xkcmFuZ2UpOworfQogCiAvKgogICogcmlfQXR0cmlidXRlc0VxdWFsIC0K QEAgLTMwMjEsMTAgKzMyNzMsMTYgQEAgUklfRktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9p ZCkKIAkJY2FzZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZ X05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBEOgorCQljYXNl IEZfVFJJX0ZLRVlfUkVTVFJJQ1RfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1Rf VVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMOgorCQljYXNlIEZfVFJJX0ZL RVlfTk9BQ1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfUEs7CiAKIAkJY2FzZSBG X1JJX0ZLRVlfQ0hFQ0tfSU5TOgogCQljYXNlIEZfUklfRktFWV9DSEVDS19VUEQ6CisJCWNh c2UgRl9UUklfRktFWV9DSEVDS19JTlM6CisJCWNhc2UgRl9UUklfRktFWV9DSEVDS19VUEQ6 CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9GSzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwppbmRleCA3YWE1YjYyYWI4Li45OWJiZTZkOTdlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIGNoYXIgKnBnX2dl dF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29pZCwKIAkJCQkJCQkJICAgaW50IHByZXR0eUZs YWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZf d29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKIHN0YXRpYyBpbnQJZGVjb21waWxl X2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJ ZCwgT2lkIGluZGV4SWQsCi0JCQkJCQkJCQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBTdHJp bmdJbmZvIGJ1Zik7CisJCQkJCQkJCQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBib29sIHdp dGhQZXJpb2QsIFN0cmluZ0luZm8gYnVmKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRl Zl93b3JrZXIoT2lkIHJ1bGVvaWQsIGludCBwcmV0dHlGbGFncyk7CiBzdGF0aWMgY2hhciAq cGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihPaWQgaW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJ CQkJCQkJY29uc3QgT2lkICpleGNsdWRlT3BzLApAQCAtMjI0Nyw3ICsyMjQ3LDEwIEBAIHBn X2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxD b21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0 dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCWRl Y29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29u Rm9ybS0+Y29uaW5kaWQsIGZhbHNlLCAmYnVmKTsKKwkJCQkvKiBJZiBpdCBpcyBhIHRlbXBv cmFsIGZvcmVpZ24ga2V5IHRoZW4gaXQgdXNlcyBQRVJJT0QuICovCisJCQkJZGVjb21waWxl X2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLAorCQkJCQkJCQkJ CQkgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLAorCQkJCQkJCQkJCQkgY29uRm9ybS0+Y29u dGVtcG9yYWwsICZidWYpOwogCiAJCQkJLyogYWRkIGZvcmVpZ24gcmVsYXRpb24gbmFtZSAq LwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikgUkVGRVJFTkNFUyAlcygiLApAQCAt MjI1OCw3ICsyMjYxLDkgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25z dHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRy Tm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWlu dF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBj b25Gb3JtLT5jb25mcmVsaWQsIGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CisJ CQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxp ZCwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwKKwkJCQkJCQkJCQkJ IGNvbkZvcm0tPmNvbnRlbXBvcmFsLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKCZidWYsICcpJyk7CiAKQEAgLTIzNDQsNyArMjM0OSw3IEBAIHBnX2dldF9jb25zdHJh aW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJ CWlmICghaXNudWxsKQogCQkJCXsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVm LCAiICgiKTsKLQkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZv cm0tPmNvbnJlbGlkLCBJbnZhbGlkT2lkLCBmYWxzZSwgJmJ1Zik7CisJCQkJCWRlY29tcGls ZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgSW52YWxpZE9p ZCwgZmFsc2UsIGZhbHNlLCAmYnVmKTsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1 ZiwgJyknKTsKIAkJCQl9CiAKQEAgLTIzODcsNyArMjM5Miw3IEBAIHBnX2dldF9jb25zdHJh aW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJ CWluZGV4SWQgPSBjb25Gb3JtLT5jb25pbmRpZDsKIAkJCQlTeXNDYWNoZUdldEF0dHIoQ09O U1RST0lELCB0dXAsCiAJCQkJCQkgIEFudW1fcGdfY29uc3RyYWludF9jb25leGNsb3AsICZp c251bGwpOwotCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZh bCwgY29uRm9ybS0+Y29ucmVsaWQsIGluZGV4SWQsICFpc251bGwsICZidWYpOworCQkJCWtl eWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29u cmVsaWQsIGluZGV4SWQsICFpc251bGwsIGZhbHNlLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTI1ODMsNyArMjU4OCw3IEBAIHBnX2dl dF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21t YW5kLAogICovCiBzdGF0aWMgaW50CiBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERh dHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLCBPaWQgaW5kZXhJZCwKLQkJCQkJ CQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8gYnVmKQorCQkJCQkJCSBib29s IHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRoUGVyaW9kLCBTdHJpbmdJbmZvIGJ1ZikKIHsK IAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQluS2V5czsKQEAgLTI2MDQsNiArMjYwOSw4IEBA IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5 LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlIGlmICh3aXRob3V0T3Zl cmxhcHMgJiYgaiA9PSBuS2V5cyAtIDEpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwg JXMgV0lUSE9VVCBPVkVSTEFQUyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQll bHNlIGlmICh3aXRoUGVyaW9kICYmIGogPT0gbktleXMgLSAxKQorCQkJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIsIFBFUklPRCAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwog CQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlm aWVyKGNvbE5hbWUpKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmlu ZGV4IDc4NmE5Y2E5MDQuLjdjYTA1MzRiNDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29u c3RyYWludC5oCkBAIC0xMjcsMTkgKzEyNywxOSBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQs MjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkKIAlpbnQxNgkJY29uZmtleVsxXTsKIAogCS8q Ci0JICogSWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIFBLID0gRksgZXF1YWxp dHkgb3BlcmF0b3JzIGZvciBlYWNoCisJICogSWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMg b2YgdGhlIFBLID0gRksgY29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIGVhY2gKIAkgKiBjb2x1 bW4gb2YgdGhlIGNvbnN0cmFpbnQKIAkgKi8KIAlPaWQJCQljb25wZmVxb3BbMV0gQktJX0xP T0tVUChwZ19vcGVyYXRvcik7CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBP SURzIG9mIHRoZSBQSyA9IFBLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElm IGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IFBLIGNvbXBhcmlzb24gb3Bl cmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9mIHRoZSBjb25zdHJhaW50IChpLmUuLCBl cXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jZWQgY29sdW1ucykKIAkgKi8KIAlPaWQJCQljb25w cGVxb3BbMV0gQktJX0xPT0tVUChwZ19vcGVyYXRvcik7CiAKIAkvKgotCSAqIElmIGEgZm9y ZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBm b3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9IEZL IGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9mIHRoZSBjb25z dHJhaW50IChpLmUuLCBlcXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMpCiAJ ICovCiAJT2lkCQkJY29uZmZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwpAQCAt MTgwLDcgKzE4MCw3IEBAIERFQ0xBUkVfSU5ERVgocGdfY29uc3RyYWludF9jb25wYXJlbnRp ZF9pbmRleCwgMjU3OSwgQ29uc3RyYWludFBhcmVudEluZGV4SWQsIHBnCiAKIC8qIGNvbmtl eSBjYW4gY29udGFpbiB6ZXJvIChJbnZhbGlkQXR0ck51bWJlcikgaWYgYSB3aG9sZS1yb3cg VmFyIGlzIHVzZWQgKi8KIERFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlfT1BUKChjb25yZWxp ZCwgY29ua2V5KSwgcGdfYXR0cmlidXRlLCAoYXR0cmVsaWQsIGF0dG51bSkpOwotREVDTEFS RV9BUlJBWV9GT1JFSUdOX0tFWSgoY29uZnJlbGlkLCBjb25ma2V5KSwgcGdfYXR0cmlidXRl LCAoYXR0cmVsaWQsIGF0dG51bSkpOworREVDTEFSRV9BUlJBWV9GT1JFSUdOX0tFWV9PUFQo KGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0p KTsKIAogI2lmZGVmIEVYUE9TRV9UT19DTElFTlRfQ09ERQogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCA5ODA1YmM2MTE4Li4zMTMyNDY4YTljIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTM5NDIsNiArMzk0MiwzMCBAQAogICBwcm9yZXR0eXBlID0+ICd0 cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnUklfRktleV9ub2Fj dGlvbl91cGQnIH0sCiAKKyMgVGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IGNvbnN0 cmFpbnQgdHJpZ2dlcnMKK3sgb2lkID0+ICc2MTIyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJl ZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHBy b25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX2lucycsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJv cmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4g J1RSSV9GS2V5X2NoZWNrX2lucycgfSwKK3sgb2lkID0+ICc2MTIzJywgZGVzY3IgPT4gJ3Rl bXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNF UycsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3ZvbGF0aWxlID0+ ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBw cm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2MTI2JywgZGVz Y3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgUkVTVFJJ Q1QnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9yZXN0cmljdF9kZWwnLCBwcm92b2xhdGls ZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAn JywKKyAgcHJvc3JjID0+ICdUUklfRktleV9yZXN0cmljdF9kZWwnIH0sCit7IG9pZCA9PiAn NjEyNycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBE QVRFIFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJywg cHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJn dHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJyB9LAor eyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdy aXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2Fj dGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdn ZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlv bl9kZWwnIH0sCit7IG9pZCA9PiAnNjEzMycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVu dGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIE5PIEFDVElPTicsCisgIHByb25hbWUgPT4gJ1RS SV9GS2V5X25vYWN0aW9uX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9G S2V5X25vYWN0aW9uX3VwZCcgfSwKKwogeyBvaWQgPT4gJzE2NjYnLAogICBwcm9uYW1lID0+ ICd2YXJiaXRlcScsIHByb2xlYWtwcm9vZiA9PiAndCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wn LAogICBwcm9hcmd0eXBlcyA9PiAndmFyYml0IHZhcmJpdCcsIHByb3NyYyA9PiAnYml0ZXEn IH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMDc0N2I1NGIyNi4uNDc5YjVmZmEz NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjYzMiw3ICsyNjMyLDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCS8qIEZpZWxkcyB1c2VkIGZvciBGT1JFSUdOIEtF WSBjb25zdHJhaW50czogKi8KIAlSYW5nZVZhciAgICpwa3RhYmxlOwkJLyogUHJpbWFyeSBr ZXkgdGFibGUgKi8KIAlMaXN0CSAgICpma19hdHRyczsJCS8qIEF0dHJpYnV0ZXMgb2YgZm9y ZWlnbiBrZXkgKi8KKwlOb2RlCSAgICpma19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1p bmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwogCUxpc3QJICAgKnBrX2F0dHJzOwkJLyog Q29ycmVzcG9uZGluZyBhdHRycyBpbiBQSyB0YWJsZSAqLworCU5vZGUJICAgKnBrX3Blcmlv ZDsJCS8qIFN0cmluZyBub2RlIG5hbWluZyBQZXJpb2Qgb3IgcmFuZ2UgY29sdW1uICovCiAJ Y2hhcgkJZmtfbWF0Y2h0eXBlOwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1QTEUgKi8KIAljaGFy CQlma191cGRfYWN0aW9uOwkvKiBPTiBVUERBVEUgYWN0aW9uICovCiAJY2hhcgkJZmtfZGVs X2FjdGlvbjsJLyogT04gREVMRVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4 IDU5ODRkY2ZhNGIuLmNjZjViZjhhYTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMyNiw2 ICszMjYsNyBAQCBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9O LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5n IiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQorUEdfS0VZV09SRCgicGVyaW9kIiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgicGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDVlMTI2ZGYwNzEuLjE3NDk5 NDVlNzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292 ZXJsYXBzLm91dApAQCAtMzU3LDMgKzM1Nyw0NjQgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogKDEgcm93KQogCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkOworLS0KKy0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCistLQorLS0gY2FuJ3Qg ZHJvcCBhIHJhbmdlIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsMyAoaWQsIFBFUklPRCB2YWxpZF9h dCkKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitF UlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3JhbDMg YmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgY29uc3RyYWlu dCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIG9uIHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcg ZGVwZW5kcyBvbiBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzCitISU5UOiAg VXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9v LgorQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7 CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGNvbnN0cmFpbnQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5nCitEUk9QIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IEZP UkVJR04gS0VZLCByYW5nZSByZWZlcmVuY2VzIHJhbmdlCistLQorLS0gQ2FuJ3QgY3JlYXRl IGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfcGsyIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfZmtfcm5nMnJuZ19mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlM OiAgS2V5IGNvbHVtbnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21w YXRpYmxlIHR5cGVzOiBpbnQ0cmFuZ2UgYW5kIHRzcmFuZ2UuCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBF UklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7Cist LSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcK Kyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSBzaG91bGQgZmFpbCBi ZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlk LCBQRVJJT0QgaWQpCispOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVt bnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IEFMVEVS IFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CistLSB3aXRo IGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1u IHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZ UEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVw cGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFs aWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVy YW5nZSBhbmQgdHNyYW5nZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB TFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIo dmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1 bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBp ZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qg bm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkK Ky0tCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWls OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBv ciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBL ZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4g dGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOwor LS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhp ZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBp bnNlcnRzCistLQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsK Ky0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEs MV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIp LCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBp dCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwx XScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1 cGRhdGVzCistLQorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0n OworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9 ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFs X2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShb MSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAw IDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERB VEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBp ZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQp PShbOCw5KSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCist LSBBTFRFUiBGSyBERUZFUlJBQkxFCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUworICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSksCisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAg ICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1 XScpOworICBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFM TFkgREVGRVJSRUQ7CisgIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwg aGVyZS4KK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBO TyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhl IG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w MS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRh dGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVu Y2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFu Z2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVu IGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRl IHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVh biB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04g REVMRVRFIFJFU1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNl IHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVm ZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0g Y2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVw ZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9S OiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJs ZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQg dGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJ Q1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBh IFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlz IHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3Ro IGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RF TEVURSBvcHRpb25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FT Q0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04g REVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAgYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb OCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScp OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFy ZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFU RSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0 cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElO ICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDEx XScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4 XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0w Mi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0d28nKTsKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0Qg dmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZr cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZB TFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywg J1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0n LCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CistLSBwYXJ0aXRp b25lZCBGSyBjaGlsZCBpbnNlcnRzCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDEtMDEtMDEnLCAnMjAwMi0wMS0wMScpLCAnWzIsMl0nKSwKKyAgKCdbMiwyXScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpOworLS0gc2hvdWxk IGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMTAtMDItMTUn KSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRma3Ax IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o WzEsMiksIFswMS0wMS0yMDEwLDAyLTE1LTIwMTApKSBpcyBub3QgcHJlc2VudCBpbiB0YWJs ZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIi4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKK0VSUk9SOiAgaW5zZXJ0IG9y IHVwZGF0ZSBvbiB0YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkg KHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMyw0KSwgWzAxLTAxLTIwMDAsMDItMTUtMjAwMCkp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgor LS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTMnKSBXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBtb3ZlIGEgcm93IGZy b20gdGhlIGZpcnN0IHBhcnRpdGlvbiB0byB0aGUgc2Vjb25kCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0nIFdIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0aGUgc2Vjb25kIHBhcnRpdGlvbiB0byB0aGUg Zmlyc3QKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9 ICdbMSwxXScgV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wNC0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VS Uk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJh aW50ICJ0ZmtwMV9wa2V5IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwg WzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAo aWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDAwLDA0LTAxLTIwMDApKS4KKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAn KSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgor LS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNs ZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCB1cGRhdGVzIFJFU1RSSUNUCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScp CisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMg c3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRp dGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ii4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitFUlJP UjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERF TEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBk YXRlcyBTRVQgREVGQVVMVAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFd JywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr CisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxU IE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRl bGV0ZXMgU0VUIERFRkFVTFQKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCAzYzMyMzY2MThj Li4xM2NlNzMxM2M1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0 X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJs YXBzLnNxbApAQCAtMjYwLDMgKzI2MCw0NjUgQEAgU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLQorLS0g dGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCisKKy0tIGNhbid0IGRyb3AgYSByYW5nZSByZWZl cmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworQUxURVIgVEFC TEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9y YWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitEUk9QIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgRk9S RUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCisKKy0tIENhbid0IGNyZWF0 ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQg aW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0 KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKworLS0gd2l0aCBpbmZl cnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOworRFJPUCBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworCistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9m IGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0Qg aWQpCispOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0K KworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAo aWQsIFBFUklPRCB2YWxpZF9hdCk7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJl ZmVyZW5jZWQgdGFibGUsIGFuZCB3cm9uZyBjb2x1bW4gdHlwZToKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maywKKwlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJTkcgZGF0 ZXJhbmdlKGxvd2VyKHZhbGlkX2F0KTo6ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRlKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCUFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzcmFuZ2UgVVNJ TkcgdHNyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CisKKy0tIHdp dGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZzsKKworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBs aWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CisKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJl YWR5CistLQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3Vs ZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBva2F5IGFn YWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nOworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRl ZgorLS0KKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisKKy0t CistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAy JywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAx JyksICdbMSwxXScpOworCistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorCitV UERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQg ZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQ REFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJF IGlkID0gJ1sxLDFdJzsKKworLS0gQUxURVIgRksgREVGRVJSQUJMRQorCitCRUdJTjsKKyAg SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUworICAgICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSksCisgICAgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMKKyAgICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworICBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisgICAgQUxURVIgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisg ICAgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CisKKyAgREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsgLS1zaG91bGQgbm90IGZhaWwgeWV0Lgor Q09NTUlUOyAtLSBzaG91bGQgZmFpbCBoZXJlLgorCistLQorLS0gdGVzdCBGSyBwYXJlbnQg dXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMg YmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7Cist LSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlk IGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcg dGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5n IEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsK Ky0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBp c24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2Nl ZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0 aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQ REFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScs ICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQg ZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQor V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUg UEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg cGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04K Ky0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJp YyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVs ZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJl bmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgt MDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJl ZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBL IGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVs ZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJl bmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgt MDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJl ZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBL IGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCist LSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVND QURFOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5 XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwgT04g VVBEQVRFIFNFVCBOVUxMOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZB VUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFu Z2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sx MiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQg J1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworCist LSBGSyBiZXR3ZWVuIHBhcnRpdGlvbmVkIHRhYmxlcworCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJh bmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3Ju Z19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBB UlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNd JywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJM RSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVT IElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdb MTIsMTJdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT CisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAn b25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0w MScpLCAnb25lJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAndHdvJyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispIFBB UlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFd JywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NS RUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgs OF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CisKKy0tIHBhcnRpdGlvbmVkIEZLIGNoaWxk IGluc2VydHMKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAy LTE1JyksICdbMSwxXScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAxLTAxLTAxJywg JzIwMDItMDEtMDEnKSwgJ1syLDJdJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdb MywzXScsIGRhdGVyYW5nZSgnMjAxMC0wMS0wMScsICcyMDEwLTAyLTE1JyksICdbMSwxXScp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMK KyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdb MywzXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCB1cGRhdGVzCisKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTEzJykgV0hFUkUgaWQgPSAnWzIsMl0nOworLS0g bW92ZSBhIHJvdyBmcm9tIHRoZSBmaXJzdCBwYXJ0aXRpb24gdG8gdGhlIHNlY29uZAorVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1s0LDRdJyBX SEVSRSBpZCA9ICdbMSwxXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIHNlY29uZCBwYXJ0 aXRpb24gdG8gdGhlIGZpcnN0CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBTRVQgaWQgPSAnWzEsMV0nIFdIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIHNob3VsZCBm YWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDQtMDEnKSBXSEVSRSBpZCA9 ICdbMSwxXSc7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElP TgorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUs NV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIw MTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBw YXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgn WzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKKy0tIHNob3VsZCBmYWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAor CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScs ICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJF IGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1 XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykK KyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCisKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1 JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5n ZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKwor LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorCitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCisKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04g REVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKworLS0gcGFydGl0aW9uZWQg RksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50 IHVwZGF0ZXMgU0VUIERFRkFVTFQKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdb LTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBE RUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFy ZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7 Ci0tIAoyLjI1LjEKCg== --------------G957IccwHqpC3R9IYdyZoS1g Content-Type: text/x-patch; charset=UTF-8; name="v16-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v16-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSBkMTYxNmRmZGE3YjE5NDMzMGY1YWEwOTU0OGIwY2I5Mzc5OWFhNjUxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNiAzLzVdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwg ICAgICAgICAgICAgICAgICB8ICA0NiArKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21s ICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDQ5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMjIyICsrKysrKysrLQogc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCArLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgMjE0ICsrKysr KysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwg IDQ3ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAgICAgICAg fCAgMTAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMgICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgICAg ICAgICAgfCAgNDAgKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyAgICAg ICAgICAgICAgICB8ICA1NiArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVz LmMgICAgICAgICAgICB8ICA0MiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdn ZXJzLmMgICAgICAgICAgIHwgIDc0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMgICAgICAgICAgIHwgIDUyICsrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDQ0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNSArCiBzcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3Bh cnNlci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1 ZGUvdXRpbHMvcGVyaW9kLmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9pbmNs dWRlL3V0aWxzL3JhbmdldHlwZXMuaCAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA0MzEgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAg ICAgfCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mu b3V0IHwgIDMyICsrCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dCAgICAgfCAxMjkgKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9u X29mLnNxbCAgICAgICB8IDM0MCArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgNzcgKysrLQogNDcgZmlsZXMgY2hh bmdlZCwgMjE1NyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvZGVsZXRlLnNnbWwKaW5kZXggMWI4MWI0ZTdkNy4uYzA5MDNlYzM2MSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2RlbGV0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlv bgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KIERFTEVU RSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0Yg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRf dGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmRfdGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KICAgICBb IFdIRVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxh Y2VhYmxlPiB8IFdIRVJFIENVUlJFTlQgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmN1cnNvcl9uYW1lPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgUkVUVVJOSU5HICogfCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X2V4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0 X25hbWU8L3JlcGxhY2VhYmxlPiBdIFssIC4uLl0gXQpAQCAtNTQsNiArNTUsMTUgQEAgREVM RVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgIGNpcmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4K IAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBoYXMgYSA8bGluayBsaW5rZW5kPSJkZGwt cGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5yYW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRl cmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5b3UgbWF5IHN1cHBseSBhCisgICA8bGl0 ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciBkZWxldGUg d2lsbCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVy dmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFuIGV4dGVuZHMgb3V0c2lkZQorICAg dGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMsIHRoZW4gbmV3 IHJvd3Mgc3Bhbm5pbmcgdGhlICJjdXQKKyAgIG9mZiIgZHVyYXRpb24gd2lsbCBiZSBpbnNl cnRlZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlcy4KKyAgPC9wYXJhPgorCiAgIDxwYXJh PgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xhdXNl IGNhdXNlcyA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CiAgICB0byBjb21wdXRlIGFuZCBy ZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgZGVsZXRlZC4KQEAg LTExNiw2ICsxMjYsNDIgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9u YW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1p bmcgYSB0ZW1wb3JhbCBkZWxldGUuIFRoaXMKKyAgICAgIG11c3QgbWF0Y2ggdGhlIHJhbmdl IG9yIHBlcmlvZCB1c2VkIGluIHRoZSB0YWJsZSdzIHRlbXBvcmFsIHByaW1hcnkga2V5Lgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVzdCB0aW1lIChpbmNsdXNpdmUpIHRvIGNo YW5nZSBpbiBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVl IG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25h bWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZh bHVlIDxsaXRlcmFsPk1JTlZBTFVFPC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3 aG9zZQorICAgICAgYmVnaW5uaW5nIGlzIHVuYm91bmRlZC4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIGRl bGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5 cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQg bWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1BWFZBTFVF PC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3aG9zZQorICAgICAgZW5kIGlzIHVu Ym91bmRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxp c3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwKaW5kZXggMmFiMjRiMDUyMy4uMDY5Y2IzY2E1 YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwg ZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAu Li5dIF0KIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JU SU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2Rf bmFtZTwvcmVwbGFjZWFibGU+IEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgU0VUIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBE RUZBVUxUIH0gfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gWyBST1cgXSAoIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8 IERFRkFVTFQgfSBbLCAuLi5dICkgfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3ViLVNFTEVDVDwvcmVwbGFjZWFibGU+ ICkKQEAgLTUxLDYgKzUyLDE2IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgIGNp cmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBo YXMgYSA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5y YW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5 b3UgbWF5IHN1cHBseSBhCisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4g Y2xhdXNlLCBhbmQgeW91ciB1cGRhdGUgd2lsbCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0 IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBz cGFuIGV4dGVuZHMgb3V0c2lkZQorICAgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiBib3VuZHMsIHRoZW4gaXQgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gZml0CisgICB3 aXRoaW4gdGhlIGJvdW5kcywgYW5kIG5ldyByb3dzIHNwYW5uaW5nIHRoZSAiY3V0IG9mZiIg ZHVyYXRpb24gd2lsbCBiZQorICAgaW5zZXJ0ZWQgdG8gcHJlc2VydmUgdGhlIG9sZCB2YWx1 ZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5S RVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21t YW5kPgogICAgdG8gY29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2gg cm93IGFjdHVhbGx5IHVwZGF0ZWQuCkBAIC0xMTQsNiArMTI1LDQyIEBAIFVQREFURSBbIE9O TFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKiBdIFsKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVy aW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1wb3JhbCB1cGRhdGUuIFRoaXMKKyAg ICAgIG11c3QgbWF0Y2ggdGhlIHJhbmdlIG9yIHBlcmlvZCB1c2VkIGluIHRoZSB0YWJsZSdz IHRlbXBvcmFsIHByaW1hcnkga2V5LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVz dCB0aW1lIChpbmNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAg ICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhl IHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28K KyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1JTlZBTFVFPC9saXRlcmFs PiB0byBpbmRpY2F0ZSBhbiB1cGRhdGUgd2hvc2UKKyAgICAgIGJlZ2lubmluZyBpcyB1bmJv dW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0 byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2 YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJv bQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3Blcmlv ZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0IG1heSBhbHNvCisgICAgICBiZSB0aGUgc3BlY2lh bCB2YWx1ZSA8bGl0ZXJhbD5NQVhWQUxVRTwvbGl0ZXJhbD4gdG8gaW5kaWNhdGUgYW4gdXBk YXRlIHdob3NlCisgICAgICBlbmQgaXMgdW5ib3VuZGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5Pgog ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmluZGV4 IDZlMWYzNzBiMjEuLmI1OGU2MzQ4YWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90cmln Z2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNTM3LDE3ICs1 MzcsMTggQEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1saXN0aW5nPgog dHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAgICAgICAgIHR5 cGU7Ci0gICAgVHJpZ2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxhdGlvbiAgICAg ICAgIHRnX3JlbGF0aW9uOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJpZ3R1cGxlOwot ICAgIEhlYXBUdXBsZSAgICAgICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dlciAgICAgICAg ICp0Z190cmlnZ2VyOwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Nsb3Q7Ci0gICAg VHVwbGVUYWJsZVNsb3QgICp0Z19uZXdzbG90OwotICAgIFR1cGxlc3RvcmVzdGF0ZSAqdGdf b2xkdGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKLSAgICBjb25z dCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworICAgIE5vZGVUYWcgICAgICAgICAgICB0 eXBlOworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19ldmVudDsKKyAgICBSZWxhdGlvbiAg ICAgICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxlICAgICAgICAgIHRnX3RyaWd0 dXBsZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVwbGU7CisgICAgVHJpZ2dl ciAgICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX3Ry aWdzbG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90OworICAgIFR1cGxl c3RvcmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3RhdGUgICAqdGdf bmV3dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRjb2xzOworICAg IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiA8L3By b2dyYW1saXN0aW5nPgogCkBAIC04MTUsNiArODE2LDQzIEBAIHR5cGVkZWYgc3RydWN0IFRy aWdnZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHN0cnVjdGZp ZWxkPnRnX3RlbXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBEQVRFPC9saXRl cmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisgICAgICAgIHRo YXQgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3RoZXJ3aXNlIDxz eW1ib2w+TlVMTDwvc3ltYm9sPi4KKyAgICAgICAgQ29udGFpbnMgYSBwb2ludGVyIHRvIGEg c3RydWN0dXJlIG9mIHR5cGUKKyAgICAgICAgPHN0cnVjdG5hbWU+Rm9yUG9ydGlvbk9mU3Rh dGU8L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGluCisgICAgICAgIDxmaWxlbmFtZT5ub2Rlcy9l eGVjbm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0 cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5vZGVUYWcgdHlwZTsKKworICAgIGNo YXIgICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBp biBGT1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFuZ2VUeXBlOyAgICAgICAv KiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworICAgIGJv b2wgICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVSSU9E IG5vdCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7IC8qIHRo ZSBQRVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZEVuZE5h bWU7ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1bSAgIGZwX3Rh cmdldFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8KK30g Rm9yUG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICAgd2hlcmUg PHN0cnVjdGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBwZXJpb2Qg b3IgcmFuZ2UKKyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFsPkZPUiBQT1JU SU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3Jhbmdl VHlwZTwvc3RydWN0ZmllbGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAgIDxzdHJ1Y3Rm aWVsZD5mcF9oYXNQZXJpb2Q8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hldGhlciBhIHBl cmlvZCB3YXMgdXNlZAorICAgICAgIG9yIGEgcmFuZ2UgY29sdW1uLCA8c3RydWN0ZmllbGQ+ ZnBfcGVyaW9kU3RhcnROYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZp ZWxkPmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVjdGZpZWxkPiBhcmUgdGhlIG5hbWVzIG9mIHRo ZSBwZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAob3IgPHN5bWJvbD5O VUxMPC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdhcyB1c2VkKSwKKyAgICAgICBhbmQg PHN0cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3RmaWVsZD4gaXMgYSByYW5nZXR5 cGUgdmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcgdGhlIDxsaXRlcmFsPkZP UiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+ CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZWQwNjJk MWU0Yy4uMDlhNjllNzYyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTEy MTg1LDYgKzEyMTg1LDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpj b25uYW1lLAogCQl0cmlnZGF0YS50Z190cmlndHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1 cGxlKHNsb3QsIGZhbHNlLCBOVUxMKTsKIAkJdHJpZ2RhdGEudGdfdHJpZ3Nsb3QgPSBzbG90 OwogCQl0cmlnZGF0YS50Z190cmlnZ2VyID0gJnRyaWc7CisJCXRyaWdkYXRhLnRnX3RlbXBv cmFsID0gTlVMTDsKIAogCQlmY2luZm8tPmNvbnRleHQgPSAoTm9kZSAqKSAmdHJpZ2RhdGE7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCAwNTc3YjYwNDE1Li4yZjA1NTU3YjM0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNs dWRlICJ1dGlscy9pbnZhbC5oIgpAQCAtMjYzOCw2ICsyNjM5LDcgQEAgRXhlY0JTRGVsZXRl VHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJTG9j VHJpZ2dlckRhdGEudGdfZXZlbnQgPSBUUklHR0VSX0VWRU5UX0RFTEVURSB8CiAJCVRSSUdH RVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5m by0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVs aW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVt dHJpZ2dlcnM7IGkrKykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2Mt PnRyaWdnZXJzW2ldOwpAQCAtMjczNyw2ICsyNzM5LDcgQEAgRXhlY0JSRGVsZXRlVHJpZ2dl cnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVO VF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19y ZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50 Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBp IDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJbmV3dHVw bGU7CkBAIC0yODI4LDYgKzI4MzEsNyBAQCBFeGVjSVJEZWxldGVUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cg fAogCQlUUklHR0VSX0VWRU5UX0lOU1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRp b24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhl YXBUdXBsZSh0cmlndHVwbGUsIHNsb3QsIGZhbHNlKTsKIApAQCAtMjg5MSw2ICsyODk1LDcg QEAgRXhlY0JTVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlbGluZm8pCiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRn X3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUxvY1RyaWdnZXJEYXRh LnRnX3VwZGF0ZWRjb2xzID0gdXBkYXRlZENvbHM7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRy aWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dlciA9 ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0zMDA4LDYgKzMwMTMsNyBAQCBFeGVjQlJV cGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQlU UklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdn ZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1Ry aWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCXVw ZGF0ZWRDb2xzID0gRXhlY0dldEFsbFVwZGF0ZWRDb2xzKHJlbGluZm8sIGVzdGF0ZSk7CiAJ TG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKIAlmb3IgKGkg PSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCkBAIC0zMTU3LDYgKzMxNjMs NyBAQCBFeGVjSVJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0lO U1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxh dGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9m b3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZSh0cmlndHVwbGUsIG9s ZHNsb3QsIGZhbHNlKTsKIApAQCAtMzYyMyw2ICszNjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg QWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YQogCU9pZAkJCWF0c190Z29pZDsJCS8qIHRoZSB0cmln Z2VyJ3MgSUQgKi8KIAlPaWQJCQlhdHNfcmVsaWQ7CQkvKiB0aGUgcmVsYXRpb24gaXQncyBv biAqLwogCUNvbW1hbmRJZAlhdHNfZmlyaW5nX2lkOwkvKiBJRCBmb3IgZmlyaW5nIGN5Y2xl ICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKmZvcl9wb3J0aW9uX29mOwkvKiB0aGUgRk9SIFBP UlRJT04gT0YgY2xhdXNlICovCiAJc3RydWN0IEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEgKmF0 c190YWJsZTsJLyogdHJhbnNpdGlvbiB0YWJsZSBhY2Nlc3MgKi8KIAlCaXRtYXBzZXQgICph dHNfbW9kaWZpZWRjb2xzOwkvKiBtb2RpZmllZCBjb2x1bW5zICovCiB9IEFmdGVyVHJpZ2dl clNoYXJlZERhdGE7CkBAIC0zODk2LDYgKzM5MDQsNyBAQCBzdGF0aWMgU2V0Q29uc3RyYWlu dFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNyZWF0ZShpbnQgbnVtYWxsb2MpOwogc3RhdGlj IFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDb3B5KFNldENvbnN0cmFp bnRTdGF0ZSBvcmlnc3RhdGUpOwogc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25z dHJhaW50U3RhdGVBZGRJdGVtKFNldENvbnN0cmFpbnRTdGF0ZSBzdGF0ZSwKIAkJCQkJCQkJ CQkJCQlPaWQgdGdvaWQsIGJvb2wgdGdpc2RlZmVycmVkKTsKK3N0YXRpYyBGb3JQb3J0aW9u T2ZTdGF0ZSAqQ29weUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMp Owogc3RhdGljIHZvaWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJlbGlkLCBD bWRUeXBlIGNtZFR5cGUsIGludCB0Z2V2ZW50KTsKIAogCkBAIC00MTA1LDYgKzQxMTQsNyBA QCBhZnRlclRyaWdnZXJBZGRFdmVudChBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywK IAkJCW5ld3NoYXJlZC0+YXRzX3JlbGlkID09IGV2dHNoYXJlZC0+YXRzX3JlbGlkICYmCiAJ CQluZXdzaGFyZWQtPmF0c19ldmVudCA9PSBldnRzaGFyZWQtPmF0c19ldmVudCAmJgogCQkJ bmV3c2hhcmVkLT5hdHNfdGFibGUgPT0gZXZ0c2hhcmVkLT5hdHNfdGFibGUgJiYKKwkJCW5l d3NoYXJlZC0+Zm9yX3BvcnRpb25fb2YgPT0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiAm JgogCQkJbmV3c2hhcmVkLT5hdHNfZmlyaW5nX2lkID09IDApCiAJCQlicmVhazsKIAl9CkBA IC00NDY5LDYgKzQ0NzksNyBAQCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRl LAogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsOwogCWlmIChUUklHR0VSX0ZP Ul9VUERBVEUoTG9jVHJpZ2dlckRhdGEudGdfdHJpZ2dlci0+dGd0eXBlKSkKIAkJTG9jVHJp Z2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSBldnRzaGFyZWQtPmF0c19tb2RpZmllZGNvbHM7 CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSBldnRzaGFyZWQtPmZvcl9wb3J0aW9u X29mOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBlcl90dXBsZV9jb250ZXh0KTsKIApAQCAt NjAwNSw2ICs2MDE2LDQzIEBAIEFmdGVyVHJpZ2dlclBlbmRpbmdPblJlbChPaWQgcmVsaWQp CiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZT dGF0ZSgpCisgKgorICogQ29waWVzIGEgRm9yUG9ydGlvbk9mU3RhdGUgaW50byB0aGUgY3Vy cmVudCBtZW1vcnkgY29udGV4dC4KKyAqLworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICoK K0NvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKQoreworCUZv clBvcnRpb25PZlN0YXRlICpkc3QgPSBOVUxMOworCWlmIChzcmMpIHsKKwkJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CisJCVJhbmdlVHlwZSAqcjsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNh Y2hlOworCisJCS8qCisJCSAqIE5lZWQgdG8gbGlmdCB0aGUgRk9SIFBPUlRJT04gT0YgZGV0 YWlscyBpbnRvIGEgaGlnaGVyIG1lbW9yeSBjb250ZXh0CisJCSAqIGJlY2F1c2UgY2FzY2Fk aW5nIGZvcmVpZ24ga2V5IHVwZGF0ZS9kZWxldGVzIGNhbiBjYXVzZSB0cmlnZ2VycyB0byBm aXJlCisJCSAqIHRyaWdnZXJzLCBhbmQgdGhlIEFmdGVyVHJpZ2dlckV2ZW50cyB3aWxsIG91 dGxpdmUgdGhlIEZQTworCQkgKiBkZXRhaWxzIG9mIHRoZSBvcmlnaW5hbCBxdWVyeS4KKwkJ ICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNv bnRleHQpOworCQlkc3QgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCWRzdC0+ ZnBfcmFuZ2VOYW1lID0gcHN0cmR1cChzcmMtPmZwX3JhbmdlTmFtZSk7CisJCWRzdC0+ZnBf cmFuZ2VUeXBlID0gc3JjLT5mcF9yYW5nZVR5cGU7CisJCWRzdC0+ZnBfaGFzUGVyaW9kID0g c3JjLT5mcF9oYXNQZXJpb2Q7CisJCWRzdC0+ZnBfcmFuZ2VBdHRubyA9IHNyYy0+ZnBfcmFu Z2VBdHRubzsKKwkJZHN0LT5mcF9wZXJpb2RTdGFydEF0dG5vID0gc3JjLT5mcF9wZXJpb2RT dGFydEF0dG5vOworCQlkc3QtPmZwX3BlcmlvZEVuZEF0dG5vID0gc3JjLT5mcF9wZXJpb2RF bmRBdHRubzsKKworCQlyID0gRGF0dW1HZXRSYW5nZVR5cGVQKHNyYy0+ZnBfdGFyZ2V0UmFu Z2UpOworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChy KSwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlkc3QtPmZwX3RhcmdldFJhbmdlID0gZGF0 dW1Db3B5KHNyYy0+ZnBfdGFyZ2V0UmFuZ2UsIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2Fj aGUtPnR5cGxlbik7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKwly ZXR1cm4gZHN0OworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBBZnRlclRyaWdnZXJTYXZlRXZl bnQoKQogICoKQEAgLTY0MjAsNiArNjQ2OCw3IEBAIEFmdGVyVHJpZ2dlclNhdmVFdmVudChF U3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJZWxzZQogCQkJbmV3 X3NoYXJlZC5hdHNfdGFibGUgPSBOVUxMOwogCQluZXdfc2hhcmVkLmF0c19tb2RpZmllZGNv bHMgPSBhZnRlclRyaWdnZXJDb3B5Qml0bWFwKG1vZGlmaWVkQ29scyk7CisJCW5ld19zaGFy ZWQuZm9yX3BvcnRpb25fb2YgPSBDb3B5Rm9yUG9ydGlvbk9mU3RhdGUocmVsaW5mby0+cmlf Zm9yUG9ydGlvbk9mKTsKIAogCQlhZnRlclRyaWdnZXJBZGRFdmVudCgmYWZ0ZXJUcmlnZ2Vy cy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoXS5ldmVudHMsCiAJCQkJ CQkJICZuZXdfZXZlbnQsICZuZXdfc2hhcmVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j CmluZGV4IDRjNWE3YmJmNjIuLjY5MDk2Y2JlZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYwpAQCAtMTI3NCw2ICsxMjc0LDcgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJu aW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4 ZXMgPSBOSUw7CiAJcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJcmVz dWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5y aV9SZXR1cm5pbmdTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xv dCA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA1MDA1ZDhjMGQxLi45 MmQ2NjExZjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtNjEsNiArNjEsOSBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1 ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAog CkBAIC0xNDEsNiArMTQ0LDEwIEBAIHN0YXRpYyBib29sIEV4ZWNPbkNvbmZsaWN0VXBkYXRl KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJIFR1cGxlVGFibGVTbG90 ICpleGNsdWRlZFNsb3QsCiAJCQkJCQkJCSBib29sIGNhblNldFRhZywKIAkJCQkJCQkJIFR1 cGxlVGFibGVTbG90ICoqcmV0dXJuaW5nKTsKK3N0YXRpYyB2b2lkIEV4ZWNGb3JQb3J0aW9u T2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJCQkJICBF U3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKKwkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCk7CiBzdGF0aWMgVHVwbGVUYWJs ZVNsb3QgKkV4ZWNQcmVwYXJlVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUsCiAJCQkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkgICBQYXJ0 aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZSwKQEAgLTEyMDUsNiArMTIxMiwxMzggQEAgRXhl Y0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCXNldF9sZWZ0b3Zlcl90dXBsZV9ib3VuZHMKKyAq CisgKgkJU2F2ZXMgdGhlIG5ldyBib3VuZHMgaW50byB0aGUgcmFuZ2UgYXR0cmlidXRlCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkIHNldF9sZWZ0b3Zlcl90dXBsZV9ib3Vu ZHMoVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUsCisJCQkJCQkJCQkgIEZvclBvcnRp b25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCSAgVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlLAorCQkJCQkJCQkJICBSYW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlKQorewor CS8qIFN0b3JlIHRoZSByYW5nZSBkaXJlY3RseSAqLworCisJbGVmdG92ZXJUdXBsZS0+dHRz X3ZhbHVlc1tmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gUmFuZ2VU eXBlUEdldERhdHVtKGxlZnRvdmVyUmFuZ2VUeXBlKTsKKwlsZWZ0b3ZlclR1cGxlLT50dHNf aXNudWxsW2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBmYWxzZTsK K30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMKKyAq CisgKgkJSW5zZXJ0IHR1cGxlcyBmb3IgdGhlIHVudG91Y2hlZCB0aW1lc3RhbXAgb2YgYSBy b3cgaW4gYSBGT1IKKyAqCQlQT1JUSU9OIE9GIFVQREFURS9ERUxFVEUKKyAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJ CSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgSXRlbVBvaW50ZXIg dHVwbGVpZCkKK3sKKwlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29udGV4dC0+bXRz dGF0ZTsKKwlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRlLT5w cy5wbGFuOworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQb3J0aW9u T2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsKKwlEYXR1bSBvbGRSYW5nZTsKKwlSYW5n ZVR5cGUgKm9sZFJhbmdlVHlwZTsKKwlSYW5nZVR5cGUgKnRhcmdldFJhbmdlVHlwZTsKKwlS YW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlMTsKKwlSYW5nZVR5cGUgKmxlZnRvdmVyUmFu Z2VUeXBlMjsKKwlPaWQgcmFuZ2VUeXBlT2lkID0gZm9yUG9ydGlvbk9mLT5yYW5nZVR5cGU7 CisJYm9vbCBpc051bGwgPSBmYWxzZTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisJ Rm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRlID0gcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9y dGlvbk9mOworCVR1cGxlVGFibGVTbG90ICpvbGR0dXBsZVNsb3QgPSBmcG9TdGF0ZS0+ZnBf RXhpc3Rpbmc7CisJVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUxID0gZnBvU3RhdGUt PmZwX0xlZnRvdmVyMTsKKwlUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZTIgPSBmcG9T dGF0ZS0+ZnBfTGVmdG92ZXIyOworCisJLyoKKwkgKiBHZXQgdGhlIHJhbmdlIG9mIHRoZSBv bGQgcHJlLVVQREFURS9ERUxFVEUgdHVwbGUsCisJICogc28gd2UgY2FuIGludGVyc2VjdCBp dCB3aXRoIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQKKwkgKiBhbmQgc2VlIGlmIHRoZXJl IGFyZSBhbnkgImxlZnRvdmVycyIgdG8gaW5zZXJ0LgorCSAqCisJICogV2UgaGF2ZSBhbHJl YWR5IGxvY2tlZCB0aGUgdHVwbGUgaW4gRXhlY1VwZGF0ZS9FeGVjRGVsZXRlCisJICogKFRP RE86IGlmIGl0IHdhcyAqbm90KiBjb25jdXJyZW50bHkgdXBkYXRlZCwgZG9lcyB0YWJsZV90 dXBsZV91cGRhdGUgbG9jayB0aGUgdHVwbGUgaXRzZWxmPworCSAqIEkgZG9uJ3QgZm91bmQg dGhlIGNvZGUgZm9yIHRoYXQgeWV0LCBhbmQgbWF5YmUgaXQgZGVwZW5kcyBvbiB0aGUgQU0/ KQorCSAqIGFuZCBpdCBoYXMgcGFzc2VkIEV2YWxQbGFuUXVhbC4KKwkgKiBNYWtlIHN1cmUg d2UncmUgbG9va2luZyBhdCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi4KKwkgKiBPdGhlcndp c2UgY29uY3VycmVudCB1cGRhdGVzIG9mIHRoZSBzYW1lIHR1cGxlIGluIFJFQUQgQ09NTUlU VEVECisJICogY291bGQgaW5zZXJ0IGNvbmZsaWN0aW5nICJsZWZ0b3ZlcnMiLgorCSAqLwor CWlmICghdGFibGVfdHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKKwkJ ZWxvZyhFUlJPUiwgImZhaWxlZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0Yi KTsKKworCW9sZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHR1cGxlU2xvdCwgZm9yUG9ydGlv bk9mLT5yYW5nZVZhci0+dmFyYXR0bm8sICZpc051bGwpOworCisJaWYgKGlzTnVsbCkKKwkJ ZWxvZyhFUlJPUiwgImZvdW5kIGEgTlVMTCByYW5nZSBpbiBhIHRlbXBvcmFsIHRhYmxlIik7 CisJb2xkUmFuZ2VUeXBlID0gRGF0dW1HZXRSYW5nZVR5cGVQKG9sZFJhbmdlKTsKKworCS8q IEdldCB0aGUgdGFyZ2V0IHJhbmdlLiAqLworCisJdGFyZ2V0UmFuZ2VUeXBlID0gRGF0dW1H ZXRSYW5nZVR5cGVQKGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZSk7CisKKwkvKgorCSAqIEdl dCB0aGUgcmFuZ2UncyB0eXBlIGNhY2hlIGVudHJ5LiBUaGlzIGlzIHdvcnRoIGNhY2hpbmcg Zm9yIHRoZSB3aG9sZSBVUERBVEUKKwkgKiBsaWtlIHJhbmdlIGZ1bmN0aW9ucyBkby4KKwkg Ki8KKworCXR5cGNhY2hlID0gZnBvU3RhdGUtPmZwX3JhbmdldHlwY2FjaGU7CisJaWYgKHR5 cGNhY2hlID09IE5VTEwpCisJeworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJh bmdlVHlwZU9pZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlpZiAodHlwY2FjaGUtPnJu Z2VsZW10eXBlID09IE5VTEwpCisJCQllbG9nKEVSUk9SLCAidHlwZSAldSBpcyBub3QgYSBy YW5nZSB0eXBlIiwgcmFuZ2VUeXBlT2lkKTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdldHlwY2Fj aGUgPSB0eXBjYWNoZTsKKwl9CisKKwkvKiBHZXQgdGhlIHJhbmdlcyB0byB0aGUgbGVmdC9y aWdodCBvZiB0aGUgdGFyZ2V0ZWQgcmFuZ2UuICovCisKKwlyYW5nZV9sZWZ0b3Zlcl9pbnRl cm5hbCh0eXBjYWNoZSwgb2xkUmFuZ2VUeXBlLCB0YXJnZXRSYW5nZVR5cGUsICZsZWZ0b3Zl clJhbmdlVHlwZTEsCisJCQkmbGVmdG92ZXJSYW5nZVR5cGUyKTsKKworCS8qCisJICogSW5z ZXJ0IGEgY29weSBvZiB0aGUgdHVwbGUgd2l0aCB0aGUgbG93ZXIgbGVmdG92ZXIgcmFuZ2Uu CisJICogRXZlbiBpZiB0aGUgdGFibGUgaXMgcGFydGl0aW9uZWQsCisJICogb3VyIGluc2Vy dCB3b24ndCBleHRlbmQgcGFzdCB0aGUgY3VycmVudCByb3csIHNvIHdlIGRvbid0IG5lZWQg dG8gcmUtcm91dGUuCisJICogVE9ETzogUmVhbGx5PyBXaGF0IGlmIHlvdSB1cGRhdGUgdGhl IHBhcnRpdGlvbiBrZXk/CisJICovCisKKwlpZiAoIVJhbmdlSXNFbXB0eShsZWZ0b3ZlclJh bmdlVHlwZTEpKQorCXsKKwkJLy8gVE9ETzogYW55dGhpbmcgd2UgbmVlZCB0byBjbGVhciBo ZXJlPworCQkvLyBBcmUgd2UgaW4gdGhlIHJvdyBjb250ZXh0PworCQlIZWFwVHVwbGUgb2xk dHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1cGxlU2xvdCwgZmFsc2UsIE5V TEwpOworCQlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZShvbGR0dXBsZSwgbGVmdG92ZXJUdXBs ZTEsIGZhbHNlKTsKKworCQlzZXRfbGVmdG92ZXJfdHVwbGVfYm91bmRzKGxlZnRvdmVyVHVw bGUxLCBmb3JQb3J0aW9uT2YsIHR5cGNhY2hlLCBsZWZ0b3ZlclJhbmdlVHlwZTEpOworCQlF eGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyVHVwbGUxKTsKKworCQkvLyBUT0RPOiBOZWVk IHRvIHNhdmUgY29udGV4dC0+bXRzdGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlPyAoU2Vl IGNvbW1lbnQgb24gRXhlY0luc2VydCkKKwkJRXhlY0luc2VydChjb250ZXh0LCByZXN1bHRS ZWxJbmZvLCBsZWZ0b3ZlclR1cGxlMSwgbm9kZS0+Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsK Kwl9CisKKwkvKgorCSAqIEluc2VydCBhIGNvcHkgb2YgdGhlIHR1cGxlIHdpdGggdGhlIHVw cGVyIGxlZnRvdmVyIHJhbmdlCisJICogRXZlbiBpZiB0aGUgdGFibGUgaXMgcGFydGl0aW9u ZWQsCisJICogb3VyIGluc2VydCB3b24ndCBleHRlbmQgcGFzdCB0aGUgY3VycmVudCByb3cs IHNvIHdlIGRvbid0IG5lZWQgdG8gcmUtcm91dGUuCisJICogVE9ETzogUmVhbGx5PyBXaGF0 IGlmIHlvdSB1cGRhdGUgdGhlIHBhcnRpdGlvbiBrZXk/CisJICovCisKKwlpZiAoIVJhbmdl SXNFbXB0eShsZWZ0b3ZlclJhbmdlVHlwZTIpKQorCXsKKwkJSGVhcFR1cGxlIG9sZHR1cGxl ID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShvbGR0dXBsZVNsb3QsIGZhbHNlLCBOVUxMKTsK KwkJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyVHVwbGUyLCBm YWxzZSk7CisKKwkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlMiwg Zm9yUG9ydGlvbk9mLCB0eXBjYWNoZSwgbGVmdG92ZXJSYW5nZVR5cGUyKTsKKwkJRXhlY01h dGVyaWFsaXplU2xvdChsZWZ0b3ZlclR1cGxlMik7CisKKwkJLy8gVE9ETzogTmVlZCB0byBz YXZlIGNvbnRleHQtPm10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21t ZW50IG9uIEV4ZWNJbnNlcnQpCisJCUV4ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5m bywgbGVmdG92ZXJUdXBsZTIsIG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJfQor fQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0JhdGNoSW5zZXJ0CiAgKgpAQCAtMTM1Nyw3 ICsxNDk2LDggQEAgRXhlY0RlbGV0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQs IFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAgKgogICogQ2xvc2luZyBzdGVwcyBv ZiB0dXBsZSBkZWxldGlvbjsgdGhpcyBpbnZva2VzIEFGVEVSIEZPUiBFQUNIIFJPVyB0cmln Z2VycywKICAqIGluY2x1ZGluZyB0aGUgVVBEQVRFIHRyaWdnZXJzIGlmIHRoZSBkZWxldGlv biBpcyBiZWluZyBkb25lIGFzIHBhcnQgb2YgYQotICogY3Jvc3MtcGFydGl0aW9uIHR1cGxl IG1vdmUuCisgKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4gSXQgYWxzbyBpbnNlcnRz IGxlZnRvdmVycyBmcm9tIGEgRk9SIFBPUlRJT04gT0YKKyAqIGRlbGV0ZS4KICAqLwogc3Rh dGljIHZvaWQKIEV4ZWNEZWxldGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRl eHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCkBAIC0xMzkwLDYgKzE1MzAsMTEg QEAgRXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJYXJfZGVsZXRlX3RyaWdfdGNzID0gTlVM TDsKIAl9CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElPTiBPRiAqLwor CS8vIFRPRE86IFNraXAgdGhpcyBmb3IgRkRXIGRlbGV0ZXM/CisJaWYgKCgoTW9kaWZ5VGFi bGUgKikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikKKwkJRXhl Y0ZvclBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBlc3RhdGUsIHJlc3VsdFJlbEluZm8s IHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIERFTEVURSBUcmlnZ2VycyAqLwogCUV4ZWNB UkRlbGV0ZVRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVw bGUsCiAJCQkJCQkgYXJfZGVsZXRlX3RyaWdfdGNzLCBjaGFuZ2luZ1BhcnQpOwpAQCAtMjEz Myw2ICsyMjc4LDExIEBAIEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQg KmNvbnRleHQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAkJCQkJCQkJCQkJICAgTlVM TCwgTklMLAogCQkJCQkJCQkJCQkgICAodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRV X1N1bW1hcml6aW5nKSk7CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElP TiBPRiAqLworCS8vIFRPRE86IFNraXAgdGhpcyBmb3IgRkRXIHVwZGF0ZXM/CisJaWYgKCgo TW9kaWZ5VGFibGUgKikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25P ZikKKwkJRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBjb250ZXh0LT5lc3Rh dGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIFVQREFURSBU cmlnZ2VycyAqLwogCUV4ZWNBUlVwZGF0ZVRyaWdnZXJzKGNvbnRleHQtPmVzdGF0ZSwgcmVz dWx0UmVsSW5mbywKIAkJCQkJCSBOVUxMLCBOVUxMLApAQCAtMzYxMCw2ICszNzYwLDcgQEAg RXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKiBSZXNldCBwZXItdHVw bGUgbWVtb3J5IGNvbnRleHQgdXNlZCBmb3IgcHJvY2Vzc2luZyBvbiBjb25mbGljdCBhbmQK IAkJICogcmV0dXJuaW5nIGNsYXVzZXMsIHRvIGZyZWUgYW55IGV4cHJlc3Npb24gZXZhbHVh dGlvbiBzdG9yYWdlCiAJCSAqIGFsbG9jYXRlZCBpbiB0aGUgcHJldmlvdXMgY3ljbGUuCisJ CSAqIFRPRE86IEl0IHNvdW5kcyBsaWtlIEZPUiBQT1JUSU9OIE9GIG1pZ2h0IG5lZWQgdG8g ZG8gc29tZXRoaW5nIGhlcmUgdG9vPwogCQkgKi8KIAkJaWYgKHBzdGF0ZS0+cHNfRXhwckNv bnRleHQpCiAJCQlSZXNldEV4cHJDb250ZXh0KHBzdGF0ZS0+cHNfRXhwckNvbnRleHQpOwpA QCAtNDI4Miw2ICs0NDMzLDc1IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQl9CiAJfQogCisJLyoKKwkg KiBJZiBuZWVkZWQsIGluaXRpYWxpemUgdGhlIHRhcmdldCByYW5nZSBmb3IgRk9SIFBPUlRJ T04gT0YuCisJICovCisJaWYgKG5vZGUtPmZvclBvcnRpb25PZikKKwl7CisJCVR1cGxlRGVz YyB0dXBEZXNjOworCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CisJCURhdHVt CXRhcmdldFJhbmdlOworCQlib29sCWlzTnVsbDsKKwkJRXhwckNvbnRleHQgKmVjb250ZXh0 OworCQlFeHByU3RhdGUgKmV4cHJTdGF0ZTsKKwkJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0 YXRlOworCisJCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOworCQl0 dXBEZXNjID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9hdHQ7CisJCWZv clBvcnRpb25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsK KworCQkvKiBFdmFsIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQgKi8KKwkJaWYgKG10c3Rh dGUtPnBzLnBzX0V4cHJDb250ZXh0ID09IE5VTEwpCisJCQlFeGVjQXNzaWduRXhwckNvbnRl eHQoZXN0YXRlLCAmbXRzdGF0ZS0+cHMpOworCQllY29udGV4dCA9IG10c3RhdGUtPnBzLnBz X0V4cHJDb250ZXh0OworCisJCWV4cHJTdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAq KSBmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlLCBlc3RhdGUpOworCQl0YXJnZXRSYW5nZSA9 IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsIGVjb250ZXh0LCAmaXNOdWxsKTsKKwkJaWYgKGlz TnVsbCkKKwkJCWVsb2coRVJST1IsICJHb3QgYSBOVUxMIEZPUiBQT1JUSU9OIE9GIHRhcmdl dCByYW5nZSIpOworCisJCS8qIENyZWF0ZSBzdGF0ZSBmb3IgRk9SIFBPUlRJT04gT0Ygb3Bl cmF0aW9uICovCisKKwkJZnBvU3RhdGUgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7 CisJCWZwb1N0YXRlLT5mcF9yYW5nZU5hbWUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWU7 CisJCWZwb1N0YXRlLT5mcF9yYW5nZVR5cGUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlVHlwZTsK KwkJZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52 YXJhdHRubzsKKwkJZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlID0gdGFyZ2V0UmFuZ2U7CisK KwkJLyogSW5pdGlhbGl6ZSBzbG90IGZvciB0aGUgZXhpc3RpbmcgdHVwbGUgKi8KKworCQlm cG9TdGF0ZS0+ZnBfRXhpc3RpbmcgPQorCQkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0UmVs SW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCSAgJm10c3RhdGUtPnBzLnN0YXRlLT5l c190dXBsZVRhYmxlKTsKKworCQkvKiBDcmVhdGUgdGhlIHR1cGxlIHNsb3RzIGZvciBJTlNF UlRpbmcgdGhlIGxlZnRvdmVycyAqLworCisJCWZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjEgPQor CQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVzYywg JlRUU09wc1ZpcnR1YWwpOworCQlmcG9TdGF0ZS0+ZnBfTGVmdG92ZXIyID0KKwkJCUV4ZWNJ bml0RXh0cmFUdXBsZVNsb3QobXRzdGF0ZS0+cHMuc3RhdGUsIHR1cERlc2MsICZUVFNPcHNW aXJ0dWFsKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGF0dGFjaCB0aGUgRm9yUG9ydGlvbk9m U3RhdGUgdG8gYWxsIHJlc3VsdCByZWxzLAorCQkgKiBpbiBjYXNlIG9mIGEgY3Jvc3MtcGFy dGl0aW9uIHVwZGF0ZSBvciB0cmlnZ2VycyBmaXJpbmcKKwkJICogb24gcGFydGl0aW9ucy4K KwkJICoKKwkJICogVGhleSBzaG91bGQgYWxsIGhhdmUgdGhlIHNhbWUgdHVwbGVkZXNjLCBz byBpdCdzIG9rYXkKKwkJICogdGhhdCBhbnkgb25lIG9mIHRoZW0gY2FuIHVzZSB0aGUgdHVw bGUgdGFibGUgc2xvdHMgdGhlcmUuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7 IGkrKykKKwkJeworCQkJcmVzdWx0UmVsSW5mbyA9ICZtdHN0YXRlLT5yZXN1bHRSZWxJbmZv W2ldOworCQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gZnBvU3RhdGU7CisJ CX0KKworCQkvKiBNYWtlIHN1cmUgdGhlIHJvb3QgcmVsYXRpb24gaGFzIHRoZSBGT1IgUE9S VElPTiBPRiBjbGF1c2UgdG9vLiAqLworCQlpZiAobm9kZS0+cm9vdFJlbGF0aW9uID4gMCkK KwkJCW10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBmcG9T dGF0ZTsKKworCQkvKiBEb24ndCBmcmVlIHRoZSBFeHByQ29udGV4dCBoZXJlIGJlY2F1c2Ug dGhlIHJlc3VsdCBtdXN0IGxhc3QgZm9yIHRoZSB3aG9sZSBxdWVyeSAqLworCX0KKwogCS8q CiAJICogSWYgd2UgaGF2ZSBhbnkgc2Vjb25kYXJ5IHJlbGF0aW9ucyBpbiBhbiBVUERBVEUg b3IgREVMRVRFLCB0aGV5IG5lZWQgdG8KIAkgKiBiZSB0cmVhdGVkIGxpa2Ugbm9uLWxvY2tl ZCByZWxhdGlvbnMgaW4gU0VMRUNUIEZPUiBVUERBVEUsIGllLCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKaW5kZXggYzAzZjRmMjNlMi4uNjJjY2JmOWQzYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKQEAgLTI0NDIsNiArMjQ0MiwxNCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy X2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsK KwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZTsKKworCQkJCWlm IChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0UmFuZ2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7 CiAJCQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0 ZXBPcCAqKSBub2RlOwpAQCAtMjU4Miw2ICsyNTkwLDggQEAgcXVlcnlfdHJlZV93YWxrZXJf aW1wbChRdWVyeSAqcXVlcnksCiAJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5t ZXJnZUFjdGlvbkxpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKKwlpZiAoV0FMSyhxdWVyeS0+Zm9y UG9ydGlvbk9mKSkKKwkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPnJldHVybmlu Z0xpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+am9pbnRyZWUpKQpA QCAtMzQyNSw2ICszNDM1LDE5IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9k ZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFr OworCQljYXNlIFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZF eHByICpmcG8gPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCQkJCUZvclBvcnRpb25P ZkV4cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBmcG8sIEZvclBvcnRp b25PZkV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVZhciwgZnBvLT5yYW5nZVZh ciwgVmFyICopOworCQkJCU1VVEFURShuZXdub2RlLT50YXJnZXRSYW5nZSwgZnBvLT50YXJn ZXRSYW5nZSwgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cmFuZ2VTZXQsIGZwby0+ cmFuZ2VTZXQsIExpc3QgKik7CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJ CX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJ CQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBP cCAqKSBub2RlOwpAQCAtMzYwMyw2ICszNjI2LDcgQEAgcXVlcnlfdHJlZV9tdXRhdG9yX2lt cGwoUXVlcnkgKnF1ZXJ5LAogCU1VVEFURShxdWVyeS0+d2l0aENoZWNrT3B0aW9ucywgcXVl cnktPndpdGhDaGVja09wdGlvbnMsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5vbkNvbmZs aWN0LCBxdWVyeS0+b25Db25mbGljdCwgT25Db25mbGljdEV4cHIgKik7CiAJTVVUQVRFKHF1 ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIExpc3QgKik7 CisJTVVUQVRFKHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIEZv clBvcnRpb25PZkV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBxdWVy eS0+cmV0dXJuaW5nTGlzdCwgTGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50cmVlLCBx dWVyeS0+am9pbnRyZWUsIEZyb21FeHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3BlcmF0 aW9ucywgcXVlcnktPnNldE9wZXJhdGlvbnMsIE5vZGUgKik7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMzRjYTZkNGFjMi4uOTU0ZWI0ZGE4MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzExLDcg KzMxMSw4IEBAIHN0YXRpYyBNb2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFubmVy SW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVDb2xu b3NMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAq cmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RF eHByICpvbmNvbmZsaWN0LAotCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGlu dCBlcHFQYXJhbSk7CisJCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7CiBz dGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApA QCAtMjgzNSw2ICsyODM2LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIE1vZGlmeVRhYmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3RfcGF0 aC0+cm93TWFya3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAogCQkJCQkJCWJl c3RfcGF0aC0+bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPmZvclBvcnRp b25PZiwKIAkJCQkJCQliZXN0X3BhdGgtPmVwcVBhcmFtKTsKIAogCWNvcHlfZ2VuZXJpY19w YXRoX2luZm8oJnBsYW4tPnBsYW4sICZiZXN0X3BhdGgtPnBhdGgpOwpAQCAtNzAwNSw3ICs3 MDA3LDggQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3Vi cGxhbiwKIAkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhD aGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAqcm93 TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJnZUFj dGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMs IEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkgaW50IGVwcVBhcmFtKQog ewogCU1vZGlmeVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGUpOwogCUxpc3QJ ICAgKmZkd19wcml2YXRlX2xpc3Q7CkBAIC03MDcxLDYgKzcwNzQsNyBAQCBtYWtlX21vZGlm eXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlub2RlLT5leGNs UmVsVGxpc3QgPSBvbmNvbmZsaWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUtPnVwZGF0 ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlvbk9m ID0gKE5vZGUgKikgZm9yUG9ydGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3Rz ID0gd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1 cm5pbmdMaXN0czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDQ0ZWZiMWY0ZWIuLmIyZDhhNjdmNGMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTE5NjksNiArMTk2OSw3 IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9m cmFjdGlvbikKIAkJCQkJCQkJCQlyb3dNYXJrcywKIAkJCQkJCQkJCQlwYXJzZS0+b25Db25m bGljdCwKIAkJCQkJCQkJCQltZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCQkJCXBhcnNlLT5m b3JQb3J0aW9uT2YsCiAJCQkJCQkJCQkJYXNzaWduX3NwZWNpYWxfZXhlY19wYXJhbShyb290 KSk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0 aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXgg MjExYmE2NTM4OS4uODIzZDFmYmFiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w YXRobm9kZS5jCkBAIC0zNjcwLDcgKzM2NzAsOCBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0 aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJTGlzdCAqdXBk YXRlQ29sbm9zTGlzdHMsCiAJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlz dCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4 cHIgKm9uY29uZmxpY3QsCi0JCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBx UGFyYW0pCisJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHBy ICpmb3JQb3J0aW9uT2YsCisJCQkJCQlpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGVQ YXRoICpwYXRobm9kZSA9IG1ha2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM3MzYs NiArMzczNyw3IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJcGF0aG5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJu aW5nTGlzdHM7CiAJcGF0aG5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CiAJcGF0aG5vZGUt Pm9uY29uZmxpY3QgPSBvbmNvbmZsaWN0OworCXBhdGhub2RlLT5mb3JQb3J0aW9uT2YgPSBm b3JQb3J0aW9uT2Y7CiAJcGF0aG5vZGUtPmVwcVBhcmFtID0gZXBxUGFyYW07CiAJcGF0aG5v ZGUtPm1lcmdlQWN0aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYwppbmRleCA3YTFkZmI2MzY0Li5jNGI2ZDQ0M2NmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFs eXplLmMKQEAgLTQ3LDExICs0NywxMyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxh dGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKICNpbmNs dWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFu aXAuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKIApAQCAtNjAsMTAgKzYyLDE3IEBACiBwb3N0X3BhcnNlX2FuYWx5 emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rID0gTlVMTDsKIAogc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1PcHRpb25hbFNlbGVjdEludG8oUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpwYXJzZVRyZWUpOworc3RhdGljIE5vZGUgKmFkZEZvclBvcnRpb25PZldoZXJl Q29uZGl0aW9ucyhRdWVyeSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25P ZiwKKwkJCQkJCQkJCQkJTm9kZSAqd2hlcmVDbGF1c2UpOwogc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCk7 CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBJbnNlcnRTdG10ICpzdG10KTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNmb3Jt T25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgT25D b25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CitzdGF0aWMgTm9kZSAqdHJhbnNm b3JtRm9yUG9ydGlvbk9mQm91bmQoTm9kZSAqbiwgYm9vbCBpc0xvd2VyQm91bmQpOworc3Rh dGljIEZvclBvcnRpb25PZkV4cHIgKnRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJCQkJIGludCBydGluZGV4LAorCQkJCQkJCQkJ CQkJCSBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZkNsYXVzZSwKKwkJCQkJCQkJ CQkJCQkgYm9vbCBpc1VwZGF0ZSk7CiBzdGF0aWMgaW50CWNvdW50X3Jvd2V4cHJfY29sdW1u cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpOwogc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCk7 CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3Rh dGUsIFNlbGVjdFN0bXQgKnN0bXQpOwpAQCAtNDc5LDYgKzQ4OCwyMCBAQCBzdG10X3JlcXVp cmVzX3BhcnNlX2FuYWx5c2lzKFJhd1N0bXQgKnBhcnNlVHJlZSkKIAlyZXR1cm4gcmVzdWx0 OwogfQogCitzdGF0aWMgTm9kZSAqCithZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMo UXVlcnkgKnFyeSwgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsIE5vZGUgKndo ZXJlQ2xhdXNlKQoreworCWlmIChmb3JQb3J0aW9uT2YpCisJeworCQlpZiAod2hlcmVDbGF1 c2UpCisJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKEFORF9FWFBSLCBsaXN0X21h a2UyKHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4cHIsIHdoZXJlQ2xhdXNlKSwgLTEp OworCQllbHNlCisJCQlyZXR1cm4gcXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwcjsK Kwl9CisJZWxzZQorCQlyZXR1cm4gd2hlcmVDbGF1c2U7Cit9CisKIC8qCiAgKiBhbmFseXpl X3JlcXVpcmVzX3NuYXBzaG90CiAgKgkJUmV0dXJucyB0cnVlIGlmIGEgc25hcHNob3QgbXVz dCBiZSBzZXQgYmVmb3JlIGRvaW5nIHBhcnNlIGFuYWx5c2lzCkBAIC01MTIsNiArNTM1LDcg QEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQg KnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5h bWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAg ICpxdWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9ERUxFVEU7CkBAIC01NTAsNyAr NTc0LDExIEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxl dGVTdG10ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0 ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9m KQorCQlxcnktPmZvclBvcnRpb25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShw c3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgZmFsc2Up OworCisJd2hlcmVDbGF1c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5 LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJh bnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9L SU5EX1dIRVJFLCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9y bVJldHVybmluZ0xpc3QocHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTExNzMs NyArMTIwMSw3IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkgKiBOb3cgdHJhbnNmb3JtIHRoZSBVUERBVEUgc3ViZXhwcmVzc2lvbnMuCiAJ CSAqLwogCQlvbkNvbmZsaWN0U2V0ID0KLQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3Qo cHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0KTsKKwkJCXRyYW5zZm9ybVVw ZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0LCBO VUxMKTsKIAogCQlvbkNvbmZsaWN0V2hlcmUgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3Rh dGUsCiAJCQkJCQkJCQkJCSAgIG9uQ29uZmxpY3RDbGF1c2UtPndoZXJlQ2xhdXNlLApAQCAt MTIwMyw2ICsxMjMxLDE2MSBAQCB0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogdHJhbnNmb3JtRm9y UG9ydGlvbk9mQm91bmQKKyAqICAgIHRyYW5zZm9ybXMgVU5CT1VOREVEIHBzZXVkby1jb2x1 bW4gcmVmZXJlbmNlcyB0byBOVUxMCisgKiAgICAod2hpY2ggcmVwcmVzZW50ICJ1bmJvdW5k ZWQiIGluIGEgcmFuZ2UgdHlwZSwgb3RoZXJ3aXNlIHJldHVybnMKKyAqICAgIGl0cyBpbnB1 dCB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUZvclBvcnRpb25P ZkJvdW5kKE5vZGUgKm4sIGJvb2wgaXNMb3dlckJvdW5kKQoreworCWlmIChub2RlVGFnKG4p ID09IFRfQ29sdW1uUmVmKQorCXsKKwkJQ29sdW1uUmVmICAqY3JlZiA9IChDb2x1bW5SZWYg KikgbjsKKwkJY2hhcgkgICAqY25hbWUgPSAiIjsKKwkJQV9Db25zdAkgICAqbjI7CisKKwkJ aWYgKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykgPT0gMSAmJgorCQkJSXNBKGxpbml0aWFs KGNyZWYtPmZpZWxkcyksIFN0cmluZykpCisJCQljbmFtZSA9IHN0clZhbChsaW5pdGlhbChj cmVmLT5maWVsZHMpKTsKKworCQlpZiAoc3RyY21wKCJ1bmJvdW5kZWQiLCBjbmFtZSkgIT0g MCkKKwkJCXJldHVybiBuOworCisJCW4yID0gbWFrZU5vZGUoQV9Db25zdCk7CisJCW4yLT5p c251bGwgPSB0cnVlOworCQluMi0+bG9jYXRpb24gPSAoKENvbHVtblJlZiAqKW4pLT5sb2Nh dGlvbjsKKworCQlyZXR1cm4gKE5vZGUgKiluMjsKKwl9CisJZWxzZQorCQlyZXR1cm4gbjsK K30KKworLyoKKyAqIHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZQorICoKKyAqCSAgVHJh bnNmb3JtcyBhIEZvclBvcnRpb25PZkNsYXVzZSBpbiBhbiBVUERBVEUvREVMRVRFIHN0YXRl bWVudC4KKyAqCisgKgkgIC0gTG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9kIHJlcXVlc3RlZC4K KyAqCSAgLSBCdWlsZCBhIGNvbXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJvbSB0aGUgRlJPTSBh bmQgVE8gZXhwcmVzc2lvbnMuCisgKgkgIC0gQnVpbGQgYW4gIm92ZXJsYXBzIiBleHByZXNz aW9uIGZvciBmaWx0ZXJpbmcuCisgKgkgIC0gRm9yIFVQREFURXMsIGJ1aWxkIGFuICJpbnRl cnNlY3RzIiBleHByZXNzaW9uIHRoZSByZXdyaXRlciBjYW4gYWRkCisgKgkgIC0gdG8gdGhl IHRhcmdldExpc3QgdG8gY2hhbmdlIHRoZSB0ZW1wb3JhbCBib3VuZHMuCisgKi8KK3N0YXRp YyBGb3JQb3J0aW9uT2ZFeHByICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9ydGlv bk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0ZSkKK3sKKwlS ZWxhdGlvbiB0YXJnZXRyZWwgPSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCVJURVBl cm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRl bS0+cF9wZXJtaW5mbzsKKwljaGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5n ZV9uYW1lOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZXNwYWNlID0gTlVMTDsKKwljaGFyICpy YW5nZV90eXBlX25hbWUgPSBOVUxMOworCWludCByYW5nZV9hdHRubyA9IEludmFsaWRBdHRy TnVtYmVyOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJRm9yUG9ydGlvbk9mRXhwciAq cmVzdWx0OworCUxpc3QgKnRhcmdldExpc3Q7CisJTm9kZSAqdGFyZ2V0X3N0YXJ0LCAqdGFy Z2V0X2VuZDsKKwlWYXIgKnJhbmdlVmFyOworCUZ1bmNDYWxsICpmYzsKKworCXJlc3VsdCA9 IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIpOworCisJLyogTG9vayB1cCB0aGUgRk9SIFBP UlRJT04gT0YgbmFtZSByZXF1ZXN0ZWQuICovCisJcmFuZ2VfYXR0bm8gPSBhdHRuYW1lQXR0 TnVtKHRhcmdldHJlbCwgcmFuZ2VfbmFtZSwgZmFsc2UpOworCWlmIChyYW5nZV9hdHRubyA9 PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBvciBwZXJp b2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQly YW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbikpKTsKKwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJk X2F0dCwgcmFuZ2VfYXR0bm8gLSAxKTsKKwkvLyBUT0RPOiBjaGVjayBhdHRyLT5hdHRpc2Ry b3BwZWQgKD8pLAorCS8vIGFuZCBmaWd1cmUgb3V0IGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRo IHRoYXQgaW4gZ2VuZXJhbC4KKwkvLyBJdCBzaG91bGQgd29yayB0aGUgc2FtZSBhcyB1cGRh dGluZyBhbnkgb3RoZXIgY29sdW1uLgorCisJLyogTWFrZSBzdXJlIGl0J3MgYSByYW5nZSBj b2x1bW4gKi8KKwlpZiAoIXR5cGVfaXNfcmFuZ2UoYXR0ci0+YXR0dHlwaWQpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJF TkNFKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBp cyBub3QgYSByYW5nZSB0eXBlIiwKKwkJCQkJCXJhbmdlX25hbWUsCisJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKSkpOworCisJcmFu Z2VWYXIgPSBtYWtlVmFyKAorCQkJcnRpbmRleCwKKwkJCXJhbmdlX2F0dG5vLAorCQkJYXR0 ci0+YXR0dHlwaWQsCisJCQlhdHRyLT5hdHR0eXBtb2QsCisJCQlhdHRyLT5hdHRjb2xsYXRp b24sCisJCQkwKTsKKwlyYW5nZVZhci0+bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPnJhbmdl X25hbWVfbG9jYXRpb247CisJcmVzdWx0LT5yYW5nZVZhciA9IHJhbmdlVmFyOworCXJlc3Vs dC0+cmFuZ2VUeXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJaWYgKCFnZXRfdHlwbmFtZV9hbmRf bmFtZXNwYWNlKGF0dHItPmF0dHR5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFuZ2VfdHlw ZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBlICVkIiwg YXR0ci0+YXR0dHlwaWQpOworCisKKwkvKgorCSAqIEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUg RlJPTSAuLi4gVE8gLi4uLiBib3VuZHMuCisJICogVGhpcyBzaG91bGQgZ2l2ZSBhIGNvbnN0 YW50IHJlc3VsdCwgc28gd2UgYWNjZXB0IGZ1bmN0aW9ucyBsaWtlIE5PVygpCisJICogYnV0 IG5vdCBjb2x1bW4gcmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLgorCSAqCisJICogSXQg YWxzbyBwZXJtaXRzIFVOQk9VTkRFRCBpbiBlaXRoZXIgcGxhY2UuCisJICovCisJdGFyZ2V0 X3N0YXJ0ID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQoZm9yUG9ydGlvbk9mLT50YXJn ZXRfc3RhcnQsIHRydWUpOworCXRhcmdldF9lbmQgICA9IHRyYW5zZm9ybUZvclBvcnRpb25P ZkJvdW5kKGZvclBvcnRpb25PZi0+dGFyZ2V0X2VuZCwgZmFsc2UpOworCWZjID0gbWFrZUZ1 bmNDYWxsKAorCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZXNwYWNl KSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCWxpc3RfbWFrZTIodGFyZ2V0 X3N0YXJ0LCB0YXJnZXRfZW5kKSwKKwkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAorCQkJZm9y UG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwlyZXN1bHQtPnRhcmdldFJhbmdl ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIGZjLCBFWFBSX0tJTkRfVVBEQVRF X1BPUlRJT04pOworCisJLyogb3ZlcmxhcHNFeHByIGlzIHNvbWV0aGluZyB3ZSBjYW4gYWRk IHRvIHRoZSB3aGVyZUNsYXVzZSAqLworCXJlc3VsdC0+b3ZlcmxhcHNFeHByID0gKE5vZGUg KikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIiYmIiwKKwkJCShOb2RlICopIGNvcHlP YmplY3QocmFuZ2VWYXIpLCAoTm9kZSAqKSBmYywKKwkJCWZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbik7CisKKwlpZiAoaXNVcGRhdGUpCisJeworCQkvKgorCQkgKiBOb3cg bWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgc3RhcnQvZW5kIHRpbWUgb2YgdGhlIHJlY29yZC4K KwkJICogRm9yIGEgcmFuZ2UgY29sIChyKSB0aGlzIGlzIGByID0gciAqIHRhcmdldFJhbmdl YC4KKwkJICovCisJCUV4cHIgKnJhbmdlU2V0RXhwciA9IChFeHByICopIG1ha2VTaW1wbGVB X0V4cHIoQUVYUFJfT1AsICIqIiwKKwkJCQkoTm9kZSAqKSBjb3B5T2JqZWN0KHJhbmdlVmFy KSwgKE5vZGUgKikgZmMsCisJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9u KTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0YXJnZXRMaXN0ID0gTklMOworCQlyYW5n ZVNldEV4cHIgPSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgcmFu Z2VTZXRFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCQl0bGUgPSBtYWtlVGFy Z2V0RW50cnkocmFuZ2VTZXRFeHByLAorCQkJCQkJCSAgcmFuZ2VfYXR0bm8sCisJCQkJCQkJ ICByYW5nZV9uYW1lLAorCQkJCQkJCSAgZmFsc2UpOworCisJCXRhcmdldExpc3QgPSBsYXBw ZW5kKHRhcmdldExpc3QsIHRsZSk7CisKKwkJLyogTWFyayB0aGUgcmFuZ2UgY29sdW1uIGFz IHJlcXVpcmluZyB1cGRhdGUgcGVybWlzc2lvbnMgKi8KKwkJdGFyZ2V0X3Blcm1pbmZvLT51 cGRhdGVkQ29scyA9IGJtc19hZGRfbWVtYmVyKHRhcmdldF9wZXJtaW5mby0+dXBkYXRlZENv bHMsCisJCQkJCQkJCQkJCQkJICByYW5nZV9hdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIpOworCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSB0YXJnZXRMaXN0Owor CX0KKwllbHNlCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSBOSUw7CisKKwlyZXN1bHQtPnJhbmdl X25hbWUgPSByYW5nZV9uYW1lOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1 aWxkT25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdApAQCAtMjQwOSw2ICsyNTkyLDcgQEAg dHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0 bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVz cGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpx dWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9VUERBVEU7CkBAIC0yNDI2LDYgKzI2 MTAsMTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0 ZVN0bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0aW9uLT5pbmgsCiAJCQkJCQkJ CQkJIHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOworCisJaWYgKHN0bXQtPmZvclBv cnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZD bGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2Ys IHRydWUpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBz dWJxdWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICov CkBAIC0yNDQyLDcgKzI2MzAsOCBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0g ZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5z Zm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJd2hlcmVDbGF1 c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0 aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hF UkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3Qo cHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTI0NTEsNyArMjY0MCw3IEBAIHRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KQogCSAqIE5vdyB3ZSBhcmUgZG9uZSB3aXRoIFNFTEVDVC1saWtlIHByb2Nlc3NpbmcsIGFu ZCBjYW4gZ2V0IG9uIHdpdGgKIAkgKiB0cmFuc2Zvcm1pbmcgdGhlIHRhcmdldCBsaXN0IHRv IG1hdGNoIHRoZSBVUERBVEUgdGFyZ2V0IGNvbHVtbnMuCiAJICovCi0JcXJ5LT50YXJnZXRM aXN0ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExp c3QpOworCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0 YXRlLCBzdG10LT50YXJnZXRMaXN0LCBxcnktPmZvclBvcnRpb25PZik7CiAKIAlxcnktPnJ0 YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUt PnBfcnRlcGVybWluZm9zOwpAQCAtMjQ3MCw3ICsyNjU5LDcgQEAgdHJhbnNmb3JtVXBkYXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAgKgloYW5kbGUg U0VUIGNsYXVzZSBpbiBVUERBVEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERB VEUKICAqLwogTGlzdCAqCi10cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCwgRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0gTklMOwogCVJURVBlcm1pc3Np b25JbmZvICp0YXJnZXRfcGVybWluZm87CkBAIC0yNTIwLDYgKzI3MDksMjEgQEAgdHJhbnNm b3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlz dCkKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwc3RhdGUtPnBfdGFyZ2V0X3Jl bGF0aW9uKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0 LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgRk9SIFBPUlRJT04g T0YgdXBkYXRlLAorCQkgKiBmb3JiaWQgZGlyZWN0bHkgc2V0dGluZyB0aGUgcmFuZ2UgY29s dW1uLAorCQkgKiBzaW5jZSB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIGltcGxpY2l0 IHVwZGF0ZXMuCisJCSAqLworCQlpZiAoZm9yUG9ydGlvbk9mICE9IE5VTEwpCisJCXsKKwkJ CWlmIChhdHRybm8gPT0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8pCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCSBlcnJtc2coImNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byBcIiVzXCIgaW4gYSBG T1IgUE9SVElPTiBPRiB1cGRhdGUiLAorCQkJCQkJCQlvcmlnVGFyZ2V0LT5uYW1lKSwKKwkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikp KTsKKwkJfQorCiAJCXVwZGF0ZVRhcmdldExpc3RFbnRyeShwc3RhdGUsIHRsZSwgb3JpZ1Rh cmdldC0+bmFtZSwKIAkJCQkJCQkgIGF0dHJubywKIAkJCQkJCQkgIG9yaWdUYXJnZXQtPmlu ZGlyZWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggN2QyMjMxOWQ0MC4uNWE0OWJhNmZhMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTgsNiArMjU4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAlSYW5nZVZhciAgICpyYW5nZTsKIAlJbnRvQ2xhdXNlICppbnRvOwogCVdp dGhDbGF1c2UgKndpdGg7CisJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3Jwb3J0aW9ub2Y7CiAJ SW5mZXJDbGF1c2UJKmluZmVyOwogCU9uQ29uZmxpY3RDbGF1c2UgKm9uY29uZmxpY3Q7CiAJ QV9JbmRpY2VzICAqYWluZDsKQEAgLTU1MSw2ICs1NTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByCiAldHlwZSA8cmFuZ2U+ CWV4dGVuZGVkX3JlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4JcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKyV0eXBlIDxmb3Jwb3J0aW9ub2Y+IGZvcl9wb3J0aW9uX29mX2NsYXVzZQog JXR5cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVzZSBvcHRfcmVwZWF0YWJsZV9jbGF1c2UK ICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFyZ2V0IGluc2VydF9jb2x1bW5faXRl bQogCkBAIC03NDcsNyArNzQ5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAog CVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQ QVNTV09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQotCVBPU0lUSU9OIFBSRUNF RElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCisJUE9S VElPTiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJF UEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUg UFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKIAlRVU9URQpAQCAtODI4LDYgKzgz MCwxNiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJW5vbmFzc29jCUtFWVMgT0JK RUNUX1AgU0NBTEFSIFZBTFVFX1AKICVub25hc3NvYwlXSVRIIFdJVEhPVVQKIAorLyoKKyAq IFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVkdWNlIGNvbmZsaWN0OgorICogRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZBTCBZRUFSIFRPIE1PTlRIIFRPIGZv by4KKyAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFzc2ljICJkYW5nbGluZyBlbHNlIiBw cm9ibGVtLCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFyIHJlc29sdXRpb246IHRyZWF0IHRo ZSBUTyBhcyBwYXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90IGFzIHBhcnQgb2YKKyAqIHRoZSBG Uk9NIC4uLiBUTyAuLi4uIFVzZXJzIGNhbiBhZGQgcGFyZW50aGVzZXMgaWYgdGhhdCdzIGEg cHJvYmxlbS4KKyAqIFRPIGp1c3QgbmVlZHMgdG8gYmUgaGlnaGVyIHByZWNlZGVuY2UgdGhh biBZRUFSX1AgZXRjLgorICovCislbm9uYXNzb2MgWUVBUl9QIE1PTlRIX1AgREFZX1AgSE9V Ul9QIE1JTlVURV9QCislbm9uYXNzb2MgVE8KIC8qCiAgKiBUbyBzdXBwb3J0IHRhcmdldF9l bCB3aXRob3V0IEFTLCBpdCB1c2VkIHRvIGJlIG5lY2Vzc2FyeSB0byBhc3NpZ24gSURFTlQg YW4KICAqIGV4cGxpY2l0IHByZWNlZGVuY2UganVzdCBsZXNzIHRoYW4gT3AuICBXaGlsZSB0 aGF0J3Mgbm90IHJlYWxseSBuZWNlc3NhcnkKQEAgLTEyMTY2LDE0ICsxMjE3OCwxNiBAQCBy ZXR1cm5pbmdfY2xhdXNlOgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBEZWxldGVT dG10OiBvcHRfd2l0aF9jbGF1c2UgREVMRVRFX1AgRlJPTSByZWxhdGlvbl9leHByX29wdF9h bGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQl1c2luZ19jbGF1c2Ugd2hlcmVf b3JfY3VycmVudF9jbGF1c2UgcmV0dXJuaW5nX2NsYXVzZQogCQkJCXsKIAkJCQkJRGVsZXRl U3RtdCAqbiA9IG1ha2VOb2RlKERlbGV0ZVN0bXQpOwogCiAJCQkJCW4tPnJlbGF0aW9uID0g JDQ7Ci0JCQkJCW4tPnVzaW5nQ2xhdXNlID0gJDU7Ci0JCQkJCW4tPndoZXJlQ2xhdXNlID0g JDY7Ci0JCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkNzsKKwkJCQkJbi0+Zm9yUG9ydGlvbk9m ID0gJDU7CisJCQkJCW4tPnVzaW5nQ2xhdXNlID0gJDY7CisJCQkJCW4tPndoZXJlQ2xhdXNl ID0gJDc7CisJCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkODsKIAkJCQkJbi0+d2l0aENsYXVz ZSA9ICQxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTIyMzYsNiArMTIy NTAsNyBAQCBvcHRfbm93YWl0X29yX3NraXA6CiAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBVUERBVEUgcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKwkJCWZvcl9wb3J0aW9uX29mX2NsYXVzZQogCQkJU0VUIHNldF9jbGF1c2Vf bGlzdAogCQkJZnJvbV9jbGF1c2UKIAkJCXdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCkBAIC0x MjI0NCwxMCArMTIyNTksMTEgQEAgVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFU RSByZWxhdGlvbl9leHByX29wdF9hbGlhcwogCQkJCQlVcGRhdGVTdG10ICpuID0gbWFrZU5v ZGUoVXBkYXRlU3RtdCk7CiAKIAkJCQkJbi0+cmVsYXRpb24gPSAkMzsKLQkJCQkJbi0+dGFy Z2V0TGlzdCA9ICQ1OwotCQkJCQluLT5mcm9tQ2xhdXNlID0gJDY7Ci0JCQkJCW4tPndoZXJl Q2xhdXNlID0gJDc7Ci0JCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkODsKKwkJCQkJbi0+Zm9y UG9ydGlvbk9mID0gJDQ7CisJCQkJCW4tPnRhcmdldExpc3QgPSAkNjsKKwkJCQkJbi0+ZnJv bUNsYXVzZSA9ICQ3OworCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ4OworCQkJCQluLT5yZXR1 cm5pbmdMaXN0ID0gJDk7CiAJCQkJCW4tPndpdGhDbGF1c2UgPSAkMTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KQEAgLTEzNjgzLDYgKzEzNjk5LDE5IEBAIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzOiByZWxhdGlvbl9leHByCQkJCQklcHJlYyBVTUlOVVMKIAkJCQl9CiAJ CTsKIAorZm9yX3BvcnRpb25fb2ZfY2xhdXNlOgorCQkJRk9SIFBPUlRJT04gT0YgQ29sSWQg RlJPTSBhX2V4cHIgVE8gYV9leHByCisJCQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2Ug Km4gPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1l ID0gJDQ7CisJCQkJCW4tPnJhbmdlX25hbWVfbG9jYXRpb24gPSBANDsKKwkJCQkJbi0+dGFy Z2V0X3N0YXJ0ID0gJDY7CisJCQkJCW4tPnRhcmdldF9lbmQgPSAkODsKKwkJCQkJJCQgPSBu OworCQkJCX0KKwkJCXwgLypFTVBUWSovCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKIC8q CiAgKiBUQUJMRVNBTVBMRSBkZWNvcmF0aW9uIGluIGEgRlJPTSBpdGVtCiAgKi8KQEAgLTE3 MjM4LDYgKzE3MjY3LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVNTV09SRAog CQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKKwkJCXwgUE9SVElPTgogCQkJfCBQUkVDRURJTkcK IAkJCXwgUFJFUEFSRQogCQkJfCBQUkVQQVJFRApAQCAtMTc4NDIsNiArMTc4NzIsNyBAQCBi YXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9M SUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUE9TSVRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8 IFBSRVBBUkUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwppbmRleCA4NWNkNDdiN2FlLi5jZThl MGJlMDQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01NjMsNiArNTYzLDEzIEBA IGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9 IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJ CQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWVsc2UKKwkJ CQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAq IFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpAQCAtOTUzLDYgKzk2MCw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNl U3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NZ Q0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJf S0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJl IG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQlicmVh azsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDog Y2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2NvbGxhdGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMK aW5kZXggOWY2YWZjMzUxYy4uZDA5YjJkMmIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2NvbGxhdGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y29sbGF0ZS5jCkBAIC00ODQsNiArNDg0LDcgQEAgYXNzaWduX2NvbGxhdGlvbnNfd2Fsa2Vy KE5vZGUgKm5vZGUsIGFzc2lnbl9jb2xsYXRpb25zX2NvbnRleHQgKmNvbnRleHQpCiAJCWNh c2UgVF9Kb2luRXhwcjoKIAkJY2FzZSBUX0Zyb21FeHByOgogCQljYXNlIFRfT25Db25mbGlj dEV4cHI6CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgogCQljYXNlIFRfU29ydEdyb3Vw Q2xhdXNlOgogCQljYXNlIFRfTWVyZ2VBY3Rpb246CiAJCQkodm9pZCkgZXhwcmVzc2lvbl90 cmVlX3dhbGtlcihub2RlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggNjRjNTgy YzM0NC4uZmVlNmJkOTAyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC01NjYs NiArNTY2LDkgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29s dW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9QQVJUSVRJT05fQk9VTkQ6CiAJCQll cnIgPSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gcGFydGl0aW9uIGJvdW5k IGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9S VElPTjoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRo ZQpAQCAtMTgxMyw2ICsxODE2LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpw c3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9D T0xVTU46CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5l cmF0aW9uIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERB VEVfUE9SVElPTjoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBP UlRJT04gT0YgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVy ZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUK QEAgLTMxMDQsNiArMzExMCw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQg ZXhwcktpbmQpCiAJCQlyZXR1cm4gIlVQREFURSI7CiAJCWNhc2UgRVhQUl9LSU5EX01FUkdF X1dIRU46CiAJCQlyZXR1cm4gIk1FUkdFIFdIRU4iOworCQljYXNlIEVYUFJfS0lORF9VUERB VEVfUE9SVElPTjoKKwkJCXJldHVybiAiRk9SIFBPUlRJT04gT0YiOwogCQljYXNlIEVYUFJf S0lORF9HUk9VUF9CWToKIAkJCXJldHVybiAiR1JPVVAgQlkiOwogCQljYXNlIEVYUFJfS0lO RF9PUkRFUl9CWToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IGIzZjBiNmExMzcu LjMxZWQwMWE4NGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY1Niw2ICsy NjU2LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVf TUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX21lcmdlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYwpp bmRleCA5MWIxMTU2ZDk5Li5jMDA4MDJhZTIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfbWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVy Z2UuYwpAQCAtMzcyLDcgKzM3Miw3IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIE1lcmdlU3RtdCAqc3RtdCkKIAkJCQkJcHN0YXRlLT5wX2lzX2luc2VydCA9 IGZhbHNlOwogCQkJCQlhY3Rpb24tPnRhcmdldExpc3QgPQogCQkJCQkJdHJhbnNmb3JtVXBk YXRlVGFyZ2V0TGlzdChwc3RhdGUsCi0JCQkJCQkJCQkJCQkgIG1lcmdlV2hlbkNsYXVzZS0+ dGFyZ2V0TGlzdCk7CisJCQkJCQkJCQkJCQkgIG1lcmdlV2hlbkNsYXVzZS0+dGFyZ2V0TGlz dCwgTlVMTCk7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSBDTURfREVMRVRFOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IGI0ODZhYjU1OWEuLjU3NmE5 OGUwZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTM0NzMs NiArMzQ3MywzMCBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBSZWxh dGlvbiB2aWV3KQogCQkJCQkJCQkJICAmcGFyc2V0cmVlLT5oYXNTdWJMaW5rcyk7CiAJfQog CisJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmIHBhcnNldHJlZS0+Y29tbWFuZFR5 cGUgPT0gQ01EX1VQREFURSkKKwl7CisJCS8qCisJCSAqIExpa2UgdGhlIElOU0VSVC9VUERB VEUgY29kZSBhYm92ZSwgdXBkYXRlIHRoZSByZXNub3MgaW4gdGhlCisJCSAqIGF1eGlsaWFy eSBVUERBVEUgdGFyZ2V0bGlzdCB0byByZWZlciB0byBjb2x1bW5zIG9mIHRoZSBiYXNlCisJ CSAqIHJlbGF0aW9uLgorCQkgKi8KKwkJZm9yZWFjaChsYywgcGFyc2V0cmVlLT5mb3JQb3J0 aW9uT2YtPnJhbmdlU2V0KQorCQl7CisJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVu dHJ5ICopIGxmaXJzdChsYyk7CisJCQlUYXJnZXRFbnRyeSAqdmlld190bGU7CisKKwkJCWlm ICh0bGUtPnJlc2p1bmspCisJCQkJY29udGludWU7CisKKwkJCXZpZXdfdGxlID0gZ2V0X3Rs ZV9ieV9yZXNubyh2aWV3X3RhcmdldGxpc3QsIHRsZS0+cmVzbm8pOworCQkJaWYgKHZpZXdf dGxlICE9IE5VTEwgJiYgIXZpZXdfdGxlLT5yZXNqdW5rICYmIElzQSh2aWV3X3RsZS0+ZXhw ciwgVmFyKSkKKwkJCQl0bGUtPnJlc25vID0gKChWYXIgKikgdmlld190bGUtPmV4cHIpLT52 YXJhdHRubzsKKwkJCWVsc2UKKwkJCQllbG9nKEVSUk9SLCAiYXR0cmlidXRlIG51bWJlciAl ZCBub3QgZm91bmQgaW4gdmlldyB0YXJnZXRsaXN0IiwKKwkJCQkJIHRsZS0+cmVzbm8pOwor CQl9CisJfQorCiAJLyoKIAkgKiBGb3IgVVBEQVRFL0RFTEVURSwgcHVsbCB1cCBhbnkgV0hF UkUgcXVhbHMgZnJvbSB0aGUgdmlldy4gIFdlIGtub3cgdGhhdAogCSAqIGFueSBWYXJzIGlu IHRoZSBxdWFscyBtdXN0IHJlZmVyZW5jZSB0aGUgb25lIGJhc2UgcmVsYXRpb24sIHNvIHdl IG5lZWQKQEAgLTM4MTEsNiArMzgzNSwyMiBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNl dHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCkKIAkJZWxz ZSBpZiAoZXZlbnQgPT0gQ01EX1VQREFURSkKIAkJewogCQkJQXNzZXJ0KHBhcnNldHJlZS0+ b3ZlcnJpZGUgPT0gT1ZFUlJJRElOR19OT1RfU0VUKTsKKwkJCS8qCisJCQkgKiBVcGRhdGUg Rk9SIFBPUlRJT04gT0YgY29sdW1uKHMpIGF1dG9tYXRpY2FsbHkuIERvbid0CisJCQkgKiBk byB0aGlzIHVudGlsIHdlJ3JlIGRvbmUgcmV3cml0aW5nIGEgdmlldyB1cGRhdGUsIHNvCisJ CQkgKiB0aGF0IHdlIGRvbid0IGFkZCB0aGUgc2FtZSB1cGRhdGUgb24gdGhlIHJlY3Vyc2lv bi4KKwkJCSAqLworCQkJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmCisJCQkJcnRf ZW50cnlfcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcpCisJCQl7 CisJCQkJTGlzdENlbGwgKnRsOworCQkJCWZvcmVhY2godGwsIHBhcnNldHJlZS0+Zm9yUG9y dGlvbk9mLT5yYW5nZVNldCkKKwkJCQl7CisJCQkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFy Z2V0RW50cnkgKikgbGZpcnN0KHRsKTsKKwkJCQkJcGFyc2V0cmVlLT50YXJnZXRMaXN0ID0g bGFwcGVuZChwYXJzZXRyZWUtPnRhcmdldExpc3QsIHRsZSk7CisJCQkJfQorCQkJfQorCiAJ CQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPQogCQkJCXJld3JpdGVUYXJnZXRMaXN0SVUocGFy c2V0cmVlLT50YXJnZXRMaXN0LAogCQkJCQkJCQkJcGFyc2V0cmVlLT5jb21tYW5kVHlwZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQv dGNvcC91dGlsaXR5LmMKaW5kZXggZTNjY2Y2YzdmNy4uNjc4MWU1NTAyMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKQEAgLTE1NjAsNyArMTU2MCw3IEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQl0cnVlLAkvKiBjaGVja19yaWdodHMgKi8KIAkJ CQkJCQkJCXRydWUsCS8qIGNoZWNrX25vdF9pbl91c2UgKi8KIAkJCQkJCQkJCWZhbHNlLAkv KiBza2lwX2J1aWxkICovCi0JCQkJCQkJCQlmYWxzZSk7IC8qIHF1aWV0ICovCisJCQkJCQkJ CQlmYWxzZSk7CS8qIHF1aWV0ICovCiAKIAkJCQkJLyoKIAkJCQkJICogQWRkIHRoZSBDUkVB VEUgSU5ERVggbm9kZSBpdHNlbGYgdG8gc3Rhc2ggcmlnaHQgYXdheTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9NYWtlZmlsZQppbmRleCAwZGUwYmJiMWI4Li5hNGYyMjZlYzhkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L01ha2VmaWxlCkBAIC03OCw2ICs3OCw3IEBAIE9CSlMgPSBcCiAJb3JhY2xlX2NvbXBh dC5vIFwKIAlvcmRlcmVkc2V0YWdncy5vIFwKIAlwYXJ0aXRpb25mdW5jcy5vIFwKKwlwZXJp b2QubyBcCiAJcGdfbG9jYWxlLm8gXAogCXBnX2xzbi5vIFwKIAlwZ191cGdyYWRlX3N1cHBv cnQubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uMGVkNDMwNGUxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpAQCAtMCwwICsxLDU2IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBwZXJpb2QuYworICoJICBGdW5jdGlvbnMgdG8gc3VwcG9ydCBw ZXJpb2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZXJpb2QuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVk ZSAiZm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgorI2luY2x1ZGUgInV0 aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9wZXJpb2QuaCIKKyNpbmNsdWRl ICJ1dGlscy9yYW5nZXR5cGVzLmgiCisKK0RhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRh YmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdl dHlwZSkKK3sKKwlEYXR1bSBzdGFydHZhbHVlOworCURhdHVtIGVuZHZhbHVlOworCURhdHVt IHJlc3VsdDsKKwlib29sCXN0YXJ0aXNudWxsOworCWJvb2wJZW5kaXNudWxsOworCUxPQ0FM X0ZDSU5GTyhmY2luZm8sIDIpOworCUZtZ3JJbmZvCWZsaW5mbzsKKwlGdW5jRXhwciAgICpm OworCisJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2luZm8sICZmbGluZm8sIDIsIElu dmFsaWRPaWQsIE5VTEwsIE5VTEwpOworCWYgPSBtYWtlTm9kZShGdW5jRXhwcik7CisJZi0+ ZnVuY3Jlc3VsdHR5cGUgPSByYW5nZXR5cGU7CisJZmxpbmZvLmZuX2V4cHIgPSAoTm9kZSAq KSBmOworCWZsaW5mby5mbl9leHRyYSA9IE5VTEw7CisKKwkvKiBjb21wdXRlIG9sZHZhbHVl ICovCisJc3RhcnR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBzdGFydGF0dG5vLCAmc3Rh cnRpc251bGwpOworCWVuZHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIGVuZGF0dG5vLCAm ZW5kaXNudWxsKTsKKworCWZjaW5mby0+YXJnc1swXS52YWx1ZSA9IHN0YXJ0dmFsdWU7CisJ ZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCA9IHN0YXJ0aXNudWxsOworCWZjaW5mby0+YXJnc1sx XS52YWx1ZSA9IGVuZHZhbHVlOworCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBlbmRpc251 bGw7CisKKwlyZXN1bHQgPSByYW5nZV9jb25zdHJ1Y3RvcjIoZmNpbmZvKTsKKwlpZiAoZmNp bmZvLT5pc251bGwpCisJCWVsb2coRVJST1IsICJmdW5jdGlvbiAldSByZXR1cm5lZCBOVUxM IiwgZmxpbmZvLmZuX29pZCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggZDY1ZTU2MjVjNy4uZDRlMTczMjM3NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0xMjA2LDYgKzEyMDYsNDggQEAgcmFu Z2Vfc3BsaXRfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBjb25zdCBSYW5n ZVR5cGUgKnIxLCBjb25zdCBSYW5nZVQKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBy YW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbCAtIFNldHMgb3V0cHV0MSBhbmQgb3V0cHV0MiB0byB0 aGUgcmVtYWluaW5nIHBhcnRzIG9mIHIxCisgKiBhZnRlciBzdWJ0cmFjdGluZyByMiwgb3Ig aWYgbm90aGluZyBpcyBsZWZ0IHRoZW4gdG8gdGhlIGVtcHR5IHJhbmdlLgorICogb3V0cHV0 MSB3aWxsIGFsd2F5cyBiZSAiYmVmb3JlIiByMiBhbmQgb3V0cHV0MiAiYWZ0ZXIiLgorICov Cit2b2lkCityYW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2Fj aGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCisJCQkJCQljb25zdCBSYW5nZVR5cGUgKnIyLCBS YW5nZVR5cGUgKipvdXRwdXQxLCBSYW5nZVR5cGUgKipvdXRwdXQyKQoreworCVJhbmdlQm91 bmQJbG93ZXIxLAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1cHBl cjI7CisJYm9vbAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKworCXJhbmdlX2Rlc2VyaWFsaXpl KHR5cGNhY2hlLCByMSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5MSk7CisJcmFuZ2VfZGVz ZXJpYWxpemUodHlwY2FjaGUsIHIyLCAmbG93ZXIyLCAmdXBwZXIyLCAmZW1wdHkyKTsKKwor CWlmIChyYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyKSA8IDAp CisJeworCQlsb3dlcjIuaW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2Vy Mi5sb3dlciA9IGZhbHNlOworCQkqb3V0cHV0MSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZs b3dlcjEsICZsb3dlcjIsIGZhbHNlLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJKm91dHB1 dDEgPSBtYWtlX2VtcHR5X3JhbmdlKHR5cGNhY2hlKTsKKwl9CisKKwlpZiAocmFuZ2VfY21w X2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMikgPiAwKQorCXsKKwkJdXBwZXIy LmluY2x1c2l2ZSA9ICF1cHBlcjIuaW5jbHVzaXZlOworCQl1cHBlcjIubG93ZXIgPSB0cnVl OworCQkqb3V0cHV0MiA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZ1cHBlcjIsICZ1cHBlcjEs IGZhbHNlLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJKm91dHB1dDIgPSBtYWtlX2VtcHR5 X3JhbmdlKHR5cGNhY2hlKTsKKwl9Cit9CisKIC8qIHJhbmdlIC0+IHJhbmdlIGFnZ3JlZ2F0 ZSBmdW5jdGlvbnMgKi8KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKaW5kZXggYWJhMGU2MmRmNi4uODU1MmY0MzRkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMKQEAgLTIyNyw2ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCByaV9QZXJm b3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQlSSV9R dWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwKIAkJCQkJCQlSZWxhdGlvbiBma19y ZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwg VHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJCQkJaW50IGZvclBvcnRpb25PZlBhcmFt LCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJCQkJYm9vbCBkZXRlY3ROZXdSb3dzLCBpbnQg ZXhwZWN0X09LKTsKIHN0YXRpYyB2b2lkIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVs LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGssCkBAIC0yMzUsNiArMjM2LDExIEBAIHN0YXRp YyB2b2lkIHJpX1JlcG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlp bmZvLAogCQkJCQkJCSAgIFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJ CQkJCSAgIFR1cGxlVGFibGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNj LAogCQkJCQkJCSAgIGludCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVf bm9yZXR1cm4oKTsKK3N0YXRpYyBib29sIGZwb190YXJnZXRzX3BrX3JhbmdlKGNvbnN0IEZv clBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwKKwkJCQkJCQkJIGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8pOworc3RhdGljIERhdHVtIHJlc3RyaWN0X2Nhc2NhZGluZ19y YW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJCQkJCQkJCQkg IGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCisJCQkJCQkJCQkgIFR1cGxlVGFi bGVTbG90ICpvbGRzbG90KTsKIAogCiAvKgpAQCAtNDQ0LDYgKzQ1MCw3IEBAIFJJX0ZLZXlf Y2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8s ICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCU5VTEwsIG5ld3Ns b3QsCisJCQkJCS0xLCAwLAogCQkJCQlwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFLAogCQkJCQlTUElfT0tfU0VMRUNUKTsKIApAQCAtNjAx LDYgKzYwOCw3IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRp b24gZmtfcmVsLAogCXJlc3VsdCA9IHJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBx cGxhbiwKIAkJCQkJCQkgZmtfcmVsLCBwa19yZWwsCiAJCQkJCQkJIG9sZHNsb3QsIE5VTEws CisJCQkJCQkJIC0xLCAwLAogCQkJCQkJCSB0cnVlLAkvKiB0cmVhdCBsaWtlIHVwZGF0ZSAq LwogCQkJCQkJCSBTUElfT0tfU0VMRUNUKTsKIApAQCAtNzAwLDYgKzcwOCw4IEBAIHJpX3Jl c3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJVHVw bGVUYWJsZVNsb3QgKm9sZHNsb3Q7CiAJUklfUXVlcnlLZXkgcWtleTsKIAlTUElQbGFuUHRy CXFwbGFuOworCWludAkJCXRhcmdldFJhbmdlUGFyYW0gPSAtMTsKKwlEYXR1bQkJdGFyZ2V0 UmFuZ2UgPSAwOwogCiAJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0 YS0+dGdfdHJpZ2dlciwKIAkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7 CkBAIC03OTYsOSArODA2LDE2IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJLyoKIAkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1 biBpdCB0byBjaGVjayBmb3IgZXhpc3RpbmcgcmVmZXJlbmNlcy4KIAkgKi8KKwlpZiAodHJp Z2RhdGEtPnRnX3RlbXBvcmFsKQorCXsKKwkJdGFyZ2V0UmFuZ2VQYXJhbSA9IHJpaW5mby0+ bmtleXMgLSAxOworCQl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0 cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisJfQorCiAJcmlfUGVy Zm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwK IAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJdGFyZ2V0UmFuZ2VQYXJhbSwgdGFyZ2V0UmFu Z2UsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElf T0tfU0VMRUNUKTsKIApAQCAtOTA1LDYgKzkyMiw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwo UEdfRlVOQ1RJT05fQVJHUykKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBs YW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQkt MSwgMCwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQ SV9PS19ERUxFVEUpOwogCkBAIC0xMDI2LDYgKzEwNDQsNyBAQCBSSV9GS2V5X2Nhc2NhZGVf dXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgbmV3c2xvdCwK KwkJCQkJLTEsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwog CQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMTI1OCw2ICsxMjc3LDcgQEAgcmlfc2V0KFRy aWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkKIAly aV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtf cmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQktMSwgMCwKIAkJCQkJdHJ1ZSwJCS8q IG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19VUERBVEUpOwogCkBAIC0y NTIwLDYgKzI1NDAsNyBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywKIAkJCQlSSV9RdWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwK IAkJCQlSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQlUdXBsZVRhYmxl U2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJaW50IGZvclBv cnRpb25PZlBhcmFtLCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJYm9vbCBkZXRlY3ROZXdS b3dzLCBpbnQgZXhwZWN0X09LKQogewogCVJlbGF0aW9uCXF1ZXJ5X3JlbCwKQEAgLTI1NzUs NiArMjU5NiwxMiBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8g KnJpaW5mbywKIAkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBvbGRzbG90LCByaWlu Zm8sIHNvdXJjZV9pc19waywKIAkJCQkJCSB2YWxzLCBudWxscyk7CiAJfQorCS8qIEFkZCBv bmUgbW9yZSBxdWVyeSBwYXJhbSBpZiB3ZSBhcmUgdXNpbmcgRk9SIFBPUlRJT04gT0YgKi8K KwlpZiAoZm9yUG9ydGlvbk9mKQorCXsKKwkJdmFsc1tmb3JQb3J0aW9uT2ZQYXJhbV0gPSBm b3JQb3J0aW9uT2Y7CisJCW51bGxzW2ZvclBvcnRpb25PZlBhcmFtXSA9ICcgJzsKKwl9CiAK IAkvKgogCSAqIEluIFJFQUQgQ09NTUlUVEVEIG1vZGUsIHdlIGp1c3QgbmVlZCB0byB1c2Ug YW4gdXAtdG8tZGF0ZSByZWd1bGFyCkBAIC0zMjg4LDMgKzMzMTUsNTAgQEAgUklfRktleV90 cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAogCXJldHVybiBSSV9UUklHR0VSX05PTkU7CiB9 CisKKy8qCisgKiBmcG9fdGFyZ2V0c19wa19yYW5nZQorICoKKyAqIFJldHVybnMgdHJ1ZSBp ZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZvIGluY2x1ZGVzIHRoZSBy YW5nZQorICogY29sdW1uIHRhcmdldGVkIGJ5IHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2Ug KGFjY29yZGluZyB0byB0Z190ZW1wb3JhbCkuCisgKi8KK3N0YXRpYyBib29sCitmcG9fdGFy Z2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNv bnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pCit7CisJaWYgKHRnX3RlbXBvcmFsID09 IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiByaWluZm8tPnBrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdID09IHRnX3RlbXBvcmFsLT5mcF9yYW5nZUF0dG5vOworfQor CisvKgorICogcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlIC0KKyAqCisgKiBSZXR1cm5zIGEg RGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRoZSBhcHByb3ByaWF0ZSB0aW1lc3Bhbgor ICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3ZSBDQVNDQURFL1NFVCBOVUxML1NF VCBERUZBVUxULgorICoKKyAqIEluIGEgbm9ybWFsIFVQREFURS9ERUxFVEUgdGhpcyBzaG91 bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAorICogYnV0IGlmIHRoZXJlIHdh cyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91bGQgdXNlIHRoYXQgdG8K KyAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVyLgorICovCitzdGF0aWMg RGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0 ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFR1cGxl VGFibGVTbG90ICpvbGRzbG90KQoreworCURhdHVtCXBrUmVjb3JkUmFuZ2U7CisJYm9vbAlp c251bGw7CisKKwlwa1JlY29yZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHNsb3QsIHJpaW5m by0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0sICZpc251bGwpOworCWlmIChpc251 bGwpCisJCWVsb2coRVJST1IsICJhcHBsaWNhdGlvbiB0aW1lIHNob3VsZCBub3QgYmUgbnVs bCIpOworCisJaWYgKGZwb190YXJnZXRzX3BrX3JhbmdlKHRnX3RlbXBvcmFsLCByaWluZm8p KQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9IERhdHVtR2V0UmFuZ2VUeXBlUChwa1JlY29yZFJh bmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9IERhdHVtR2V0UmFuZ2VUeXBlUCh0Z190ZW1wb3Jh bC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlPaWQgcm5ndHlwaWQgPSBSYW5nZVR5cGVHZXRPaWQo cjEpOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShy bmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlyZXR1cm4gUmFuZ2VUeXBlUEdl dERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyKSk7CisJ fQorCWVsc2UKKwkJcmV0dXJuIHBrUmVjb3JkUmFuZ2U7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCmluZGV4IGZjNmQyNjdlNDQuLjM5MTc2MmYzMDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMTcwLDYgKzIxNzAsNTggQEAgZ2V0 X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpCiAJCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAq IGdldF90eXBuYW1lCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1lIG9mIGEgZ2l2ZW4gdHlw ZQorICoKKyAqIFJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBzdHJpbmcsIG9yIE5V TEwgaWYgbm8gc3VjaCB0eXBlLgorICovCitjaGFyICoKK2dldF90eXBuYW1lKE9pZCB0eXBp ZCkKK3sKKwlIZWFwVHVwbGUgICB0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVP SUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0 cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RS VUNUKHRwKTsKKwkJY2hhcgkgICAqcmVzdWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFt ZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0 dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIGdl dF90eXBuYW1lX2FuZF9uYW1lc3BhY2UKKyAqCisgKgkgIFJldHVybnMgdGhlIG5hbWUgYW5k IG5hbWVzcGFjZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgb25l IGZvdW5kLCBvciBmYWxzZSBpZiBub3QuCisgKi8KK2Jvb2wKK2dldF90eXBuYW1lX2FuZF9u YW1lc3BhY2UoT2lkIHR5cGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cG5hbWVzcGFj ZSkKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lE LCBPYmplY3RJZEdldERhdHVtKHR5cGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHAp KQorCXsKKwkJRm9ybV9wZ190eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VCh0cCk7CisKKwkJKnR5cG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHlwdHVwLT50eXBuYW1l KSk7CisJCSp0eXBuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUodHlwdHVwLT50eXBu YW1lc3BhY2UpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gKnR5cG5hbWVz cGFjZTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBnZXRfdHlw bGVuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDQzMGUzY2E3ZGQuLmIzZDkw ZGVhYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX29sZHRhYmxl OwogCVR1cGxlc3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7CiAJY29uc3QgQml0bWFwc2V0ICp0 Z191cGRhdGVkY29sczsKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWw7CiB9IFRy aWdnZXJEYXRhOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjYjcxNGY0YTE5 Li5mZWQzMzg2NDI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNDEsMTIgKzQxLDE0 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRl ICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5o IgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0 cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2hhcmVkdHVwbGVzdG9yZS5oIgogI2luY2x1 ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIK ICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0 b3JlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAogc3RydWN0IFBsYW5TdGF0 ZTsJCQkJLyogZm9yd2FyZCByZWZlcmVuY2VzIGluIHRoaXMgZmlsZSAqLwogc3RydWN0IFBh cmFsbGVsSGFzaEpvaW5TdGF0ZTsKQEAgLTQyMiw2ICs0MjQsMjggQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBY3Rpb25TdGF0ZQogCUV4cHJTdGF0ZSAgKm1hc193aGVucXVhbDsJLyogV0hF TiBbTk9UXSBNQVRDSEVEIEFORCBjb25kaXRpb25zICovCiB9IE1lcmdlQWN0aW9uU3RhdGU7 CiAKKy8qCisgKiBGb3JQb3J0aW9uT2ZTdGF0ZQorICoKKyAqIEV4ZWN1dG9yIHN0YXRlIG9m IGEgRk9SIFBPUlRJT04gT0Ygb3BlcmF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQ b3J0aW9uT2ZTdGF0ZQoreworCU5vZGVUYWcJCXR5cGU7CisKKwljaGFyICAgKmZwX3Jhbmdl TmFtZTsJCS8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQT1JUSU9OIE9GICov CisJT2lkCQlmcF9yYW5nZVR5cGU7CQkvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04g T0YgZXhwcmVzc2lvbiAqLworCWJvb2wJZnBfaGFzUGVyaW9kOwkJLyogdHJ1ZSBpZmYgdGhp cyBpcyBhIFBFUklPRCBub3QgYSByYW5nZSAqLworCWludAkJZnBfcmFuZ2VBdHRubzsJCS8q IHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uIChvciAwIGZvciBhIFBFUklPRCkgKi8K KwlpbnQJCWZwX3BlcmlvZFN0YXJ0QXR0bm87CS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9E IHN0YXJ0IGNvbHVtbiAob3IgMCBmb3IgYSByYW5nZSkgKi8KKwlpbnQJCWZwX3BlcmlvZEVu ZEF0dG5vOwkJLyogdGhlIGF0dG5vIG9mIHRoZSBQRVJJT0QgZW5kIGNvbHVtbiAob3IgMCBm b3IgYSByYW5nZSkgKi8KKwlEYXR1bQlmcF90YXJnZXRSYW5nZTsJCS8qIHRoZSByYW5nZSBm cm9tIEZPUiBQT1JUSU9OIE9GICovCisJVHlwZUNhY2hlRW50cnkgKmZwX3JhbmdldHlwY2Fj aGU7CS8qIHR5cGUgY2FjaGUgZW50cnkgb2YgdGhlIHJhbmdlICovCisJVHVwbGVUYWJsZVNs b3QgKmZwX0V4aXN0aW5nOwkJLyogc2xvdCB0byBzdG9yZSBleGlzdGluZyB0YXJnZXQgdHVw bGUgaW4gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZnBfTGVmdG92ZXIxOwkJLyogc2xvdCB0byBz dG9yZSBsZWZ0b3ZlciBiZWxvdyB0aGUgdGFyZ2V0IHJhbmdlICovCisJVHVwbGVUYWJsZVNs b3QgKmZwX0xlZnRvdmVyMjsJCS8qIHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgYWJvdmUgdGhl IHRhcmdldCByYW5nZSAqLworfSBGb3JQb3J0aW9uT2ZTdGF0ZTsKKwogLyoKICAqIFJlc3Vs dFJlbEluZm8KICAqCkBAIC01NDIsNiArNTY2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0 UmVsSW5mbwogCUxpc3QJICAgKnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKIAlMaXN0CSAgICpy aV9ub3RNYXRjaGVkTWVyZ2VBY3Rpb247CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBldmFsdWF0 aW9uIHN0YXRlICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKnJpX2ZvclBvcnRpb25PZjsKKwog CS8qIHBhcnRpdGlvbiBjaGVjayBleHByZXNzaW9uIHN0YXRlIChOVUxMIGlmIG5vdCBzZXQg dXAgeWV0KSAqLwogCUV4cHJTdGF0ZSAgKnJpX1BhcnRpdGlvbkNoZWNrRXhwcjsKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDQ3OWI1ZmZhMzUuLjE3N2RmOTZjODYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCB0eXBlZGVmIHN0cnVj dCBRdWVyeQogCSAqLwogCWludAkJCXJlc3VsdFJlbGF0aW9uIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsKIAorCS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBE QVRFL0RFTEVURSAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwogCS8q IGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNB Z2dzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93 IGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwpAQCAtMTUzNyw2ICsxNTQwLDE5IEBAIHR5cGVkZWYg c3RydWN0IFJvd01hcmtDbGF1c2UKIAlib29sCQlwdXNoZWREb3duOwkJLyogcHVzaGVkIGRv d24gZnJvbSBoaWdoZXIgcXVlcnkgbGV2ZWw/ICovCiB9IFJvd01hcmtDbGF1c2U7CiAKKy8q CisgKiBGb3JQb3J0aW9uT2ZDbGF1c2UKKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBGT1IgUE9S VElPTiBPRiA8cGVyaW9kLW5hbWU+IEZST00gPHQxPiBUTyA8dDI+CisgKi8KK3R5cGVkZWYg c3RydWN0IEZvclBvcnRpb25PZkNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkg ICAqcmFuZ2VfbmFtZTsKKwlpbnQJCQlyYW5nZV9uYW1lX2xvY2F0aW9uOworCU5vZGUJICAg KnRhcmdldF9zdGFydDsKKwlOb2RlCSAgICp0YXJnZXRfZW5kOworfSBGb3JQb3J0aW9uT2ZD bGF1c2U7CisKIC8qCiAgKiBXaXRoQ2xhdXNlIC0KICAqCSAgIHJlcHJlc2VudGF0aW9uIG9m IFdJVEggY2xhdXNlCkBAIC0xOTE3LDEyICsxOTMzLDEzIEBAIHR5cGVkZWYgc3RydWN0IElu c2VydFN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgRGVsZXRlU3RtdAogewotCU5vZGVUYWcJ CXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBkZWxldGUg ZnJvbSAqLwotCUxpc3QJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1c2luZyBjbGF1 c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxp ZmljYXRpb25zICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHBy ZXNzaW9ucyB0byByZXR1cm4gKi8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lU SCBjbGF1c2UgKi8KKwlOb2RlVGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlv bjsJCS8qIHJlbGF0aW9uIHRvIGRlbGV0ZSBmcm9tICovCisJRm9yUG9ydGlvbk9mQ2xhdXNl ICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLworCUxpc3QJCQkg ICAqdXNpbmdDbGF1c2U7CS8qIG9wdGlvbmFsIHVzaW5nIGNsYXVzZSBmb3IgbW9yZSB0YWJs ZXMgKi8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwor CUxpc3QJCQkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byBy ZXR1cm4gKi8KKwlXaXRoQ2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNl ICovCiB9IERlbGV0ZVN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5 MzEsMTMgKzE5NDgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgRGVsZXRlU3RtdAogICovCiB0eXBl ZGVmIHN0cnVjdCBVcGRhdGVTdG10CiB7Ci0JTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAg ICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIHVwZGF0ZSAqLwotCUxpc3QJICAgKnRhcmdl dExpc3Q7CQkvKiB0aGUgdGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8KLQlOb2RlCSAg ICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KLQlMaXN0CSAgICpmcm9tQ2xh dXNlOwkJLyogb3B0aW9uYWwgZnJvbSBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTGlz dAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4g Ki8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KKwlOb2Rl VGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRv IHVwZGF0ZSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1Ig UE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnRhcmdldExpc3Q7CQkvKiB0aGUg dGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNl OwkvKiBxdWFsaWZpY2F0aW9ucyAqLworCUxpc3QJCQkgICAqZnJvbUNsYXVzZTsJCS8qIG9w dGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLworCUxpc3QJCQkgICAqcmV0 dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KKwlXaXRo Q2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0 bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK aW5kZXggNTcwMmZiYmE2MC4uZDJiZTdmMjZkMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK QEAgLTIzNTIsNiArMjM1Miw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlUGF0aAog CUxpc3QJICAgKnJldHVybmluZ0xpc3RzOyAvKiBwZXItdGFyZ2V0LXRhYmxlIFJFVFVSTklO RyB0bGlzdHMgKi8KIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9u LWxvY2tpbmcgb25seSkgKi8KIAlPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdDsgLyogT04g Q09ORkxJQ1QgY2xhdXNlLCBvciBOVUxMICovCisJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9y dGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8K IAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFsUGxhblF1YWwgcmUt ZXZhbCAqLwogCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdHM7CS8qIHBlci10YXJnZXQtdGFi bGUgbGlzdHMgb2YgYWN0aW9ucyBmb3IKIAkJCQkJCQkJCSAqIE1FUkdFICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCmluZGV4IDFiNzg3ZmUwMzEuLjJiY2E3MDg2ZTIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCkBAIC0yNDMsNiArMjQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5 VGFibGUKIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tp bmcgb25seSkgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFs UGxhblF1YWwgcmUtZXZhbCAqLwogCU9uQ29uZmxpY3RBY3Rpb24gb25Db25mbGljdEFjdGlv bjsJLyogT04gQ09ORkxJQ1QgYWN0aW9uICovCisJTm9kZQkgICAqZm9yUG9ydGlvbk9mOwkv KiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAg ICphcmJpdGVySW5kZXhlczsgLyogTGlzdCBvZiBPTiBDT05GTElDVCBhcmJpdGVyIGluZGV4 IE9JRHMgICovCiAJTGlzdAkgICAqb25Db25mbGljdFNldDsJLyogSU5TRVJUIE9OIENPTkZM SUNUIERPIFVQREFURSB0YXJnZXRsaXN0ICovCiAJTGlzdAkgICAqb25Db25mbGljdENvbHM7 IC8qIHRhcmdldCBjb2x1bW4gbnVtYmVycyBmb3Igb25Db25mbGljdFNldCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaAppbmRleCA2MGQ3MmE4NzZiLi5iM2M2ZjZjZWNmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaApAQCAtMjA0MSw0ICsyMDQxLDI5IEBAIHR5cGVkZWYgc3RydWN0IE9u Q29uZmxpY3RFeHByCiAJTGlzdAkgICAqZXhjbFJlbFRsaXN0OwkvKiB0bGlzdCBvZiB0aGUg RVhDTFVERUQgcHNldWRvIHJlbGF0aW9uICovCiB9IE9uQ29uZmxpY3RFeHByOwogCisvKi0t LS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZkV4cHIgLSByZXByZXNlbnRzIGEgRk9SIFBPUlRJ T04gT0YgLi4uIGV4cHJlc3Npb24KKyAqCisgKiBXZSBzZXQgdXAgYW4gZXhwcmVzc2lvbiB0 byBtYWtlIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTS9UTyBib3VuZHMsCisgKiBzbyB0aGF0IHdl IGNhbiB1c2UgcmFuZ2Ugb3BlcmF0b3JzIHdpdGggaXQuCisgKgorICogVGhlbiB3ZSBzZXQg dXAgYW4gb3ZlcmxhcHMgZXhwcmVzc2lvbiBiZXR3ZWVuIHRoYXQgYW5kIHRoZSByYW5nZSBj b2x1bW4sCisgKiBzbyB0aGF0IHdlIGNhbiBmaW5kIHRoZSByb3dzIHdlIG5lZWQgdG8gdXBk YXRlL2RlbGV0ZS4KKyAqCisgKiBJbiB0aGUgZXhlY3V0b3Igd2UnbGwgYWxzbyBidWlsZCBh biBpbnRlcnNlY3QgZXhwcmVzc2lvbiBiZXR3ZWVuIHRoZQorICogdGFyZ2V0ZWQgcmFuZ2Ug YW5kIHRoZSByYW5nZSBjb2x1bW4sIHNvIHRoYXQgd2UgY2FuIHVwZGF0ZSB0aGUgc3RhcnQv ZW5kCisgKiBib3VuZHMgb2YgdGhlIFVQREFURSdkIHJlY29yZC4KKyAqLS0tLS0tLS0tLQor ICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZFeHByCit7CisJTm9kZVRhZwkJdHlw ZTsKKwlWYXIJCSAgICpyYW5nZVZhcjsJCQkvKiBSYW5nZSBjb2x1bW4gKi8KKwljaGFyCSAg ICpyYW5nZV9uYW1lOwkJCS8qIFJhbmdlIG5hbWUgKi8KKwlOb2RlCSAgICp0YXJnZXRSYW5n ZTsJCS8qIEZPUiBQT1JUSU9OIE9GIGJvdW5kcyBhcyBhIHJhbmdlICovCisJT2lkCQkJcmFu Z2VUeXBlOwkJCS8qIHR5cGUgb2YgdGFyZ2V0UmFuZ2UgKi8KKwlOb2RlCSAgICpvdmVybGFw c0V4cHI7CQkvKiByYW5nZSAmJiB0YXJnZXRSYW5nZSAqLworCUxpc3QJICAgKnJhbmdlU2V0 OwkJCS8qIExpc3Qgb2YgVGFyZ2V0RW50cnlzIHRvIHNldCB0aGUgdGltZSBjb2x1bW4ocykg Ki8KK30gRm9yUG9ydGlvbk9mRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IDZlNTU3YmViYzQuLmM5MzJk MTIwNGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0yODMsNyArMjgzLDgg QEAgZXh0ZXJuIE1vZGlmeVRhYmxlUGF0aCAqY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywK IAkJCQkJCQkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5p bmdMaXN0cywKIAkJCQkJCQkJCQkJCUxpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAq b25jb25mbGljdCwKLQkJCQkJCQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBl cHFQYXJhbSk7CisJCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJ CQkJCQkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pOwog ZXh0ZXJuIExpbWl0UGF0aCAqY3JlYXRlX2xpbWl0X3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCVBhdGggKnN1YnBhdGgsCiAJCQkJCQkJCQlO b2RlICpsaW1pdE9mZnNldCwgTm9kZSAqbGltaXRDb3VudCwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9hbmFseXplLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5o CmluZGV4IGM5NjQ4M2FlNzguLmI2ZDUwNjVlMTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApA QCAtNDMsNyArNDMsOCBAQCBleHRlcm4gTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAJCQkJCQkJCUxpc3QgKnN0bXRjb2xz LCBMaXN0ICppY29sdW1ucywgTGlzdCAqYXR0cm5vcywKIAkJCQkJCQkJYm9vbCBzdHJpcF9p bmRpcmVjdGlvbik7CiBleHRlcm4gTGlzdCAqdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJCQkgICBMaXN0ICpvcmlnVGxpc3QpOworCQkJ CQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0LAorCQkJCQkJCQkJICAgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mKTsKIGV4dGVybiBRdWVyeSAqdHJhbnNmb3JtVG9wTGV2ZWxTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmF3U3RtdCAqcGFyc2VUcmVlKTsKIGV4dGVybiBRdWVy eSAqdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBjY2Y1YmY4YWE2Li5jODljZWVhOWY2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCkBAIC0zMzAsNiArMzMwLDcgQEAgUEdfS0VZV09SRCgicGVyaW9k IiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoInBvcnRpb24iLCBQT1JUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2VkaW5nIiwg UFJFQ0VESU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwcmVjaXNpb24iLCBQUkVDSVNJT04sIENPTF9OQU1FX0tFWVdPUkQsIEFTX0xBQkVMKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggZjU4OTExMmQ1ZS4uMGQ2MDFmMzRhNSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYg ZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UsCS8qIFVQREFU RSBhc3NpZ25tZW50IHNvdXJjZSBpdGVtICovCiAJRVhQUl9LSU5EX1VQREFURV9UQVJHRVQs CS8qIFVQREFURSBhc3NpZ25tZW50IHRhcmdldCBpdGVtICovCiAJRVhQUl9LSU5EX01FUkdF X1dIRU4sCQkvKiBNRVJHRSBXSEVOIFtOT1RdIE1BVENIRUQgY29uZGl0aW9uICovCisJRVhQ Ul9LSU5EX1VQREFURV9QT1JUSU9OLAkvKiBVUERBVEUgRk9SIFBPUlRJT04gT0YgaXRlbSAq LwogCUVYUFJfS0lORF9HUk9VUF9CWSwJCQkvKiBHUk9VUCBCWSAqLwogCUVYUFJfS0lORF9P UkRFUl9CWSwJCQkvKiBPUkRFUiBCWSAqLwogCUVYUFJfS0lORF9ESVNUSU5DVF9PTiwJCS8q IERJU1RJTkNUIE9OICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IGY1ZmRiZmUxMTYu LmExMTc1MjdkOGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xNDMsNiArMTQzLDgg QEAgZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0 ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fdG9zcWwoT2lkIHR5cGlk LCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gYm9vbCBnZXRfdHlwaXNk ZWZpbmVkKE9pZCB0eXBpZCk7CitleHRlcm4gY2hhciAqZ2V0X3R5cG5hbWUoT2lkIHR5cGlk KTsKK2V4dGVybiBib29sIGdldF90eXBuYW1lX2FuZF9uYW1lc3BhY2UoT2lkIHR5cGlkLCBj aGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cG5hbWVzcGFjZSk7CiBleHRlcm4gaW50MTYgZ2V0 X3R5cGxlbihPaWQgdHlwaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGJ5dmFsKE9pZCB0eXBp ZCk7CiBleHRlcm4gdm9pZCBnZXRfdHlwbGVuYnl2YWwoT2lkIHR5cGlkLCBpbnQxNiAqdHlw bGVuLCBib29sICp0eXBieXZhbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9w ZXJpb2QuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBhOGFmM2VkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaApAQCAtMCwwICsxLDE5IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBwZXJpb2QuaAorICoJICBzdXBwb3J0IGZvciBQb3N0Z3Jl cyBwZXJpb2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy MiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y bmlhCisgKgorICogc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQRVJJT0RfSAorI2RlZmluZSBQRVJJT0RfSAor CitleHRlcm4gRGF0dW0gcGVyaW9kX3RvX3JhbmdlKFR1cGxlVGFibGVTbG90ICpzbG90LCBp bnQgc3RhcnRhdHRubywgaW50IGVuZGF0dG5vLCBPaWQgcmFuZ2V0eXBlKTsKKworI2VuZGlm CQkJCQkJCS8qIFBFUklPRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9y YW5nZXR5cGVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggNmI0 MjBhODYxOC4uNDhlZTJkZWJlZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFu Z2V0eXBlcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaApAQCAtMTY0 LDUgKzE2NCw4IEBAIGV4dGVybiBSYW5nZVR5cGUgKm1ha2VfZW1wdHlfcmFuZ2UoVHlwZUNh Y2hlRW50cnkgKnR5cGNhY2hlKTsKIGV4dGVybiBib29sIHJhbmdlX3NwbGl0X2ludGVybmFs KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwKIAkJCQkJ CQkJIGNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCiAJCQkJCQkJ CSBSYW5nZVR5cGUgKipvdXRwdXQyKTsKK2V4dGVybiB2b2lkIHJhbmdlX2xlZnRvdmVyX2lu dGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwK KwkJCQkJCQkJCWNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCisJ CQkJCQkJCQlSYW5nZVR5cGUgKipvdXRwdXQyKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJBTkdF VFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jf cG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9u X29mLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hZTk4NmEx MTZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jf cG9ydGlvbl9vZi5vdXQKQEAgLTAsMCArMSw0MzEgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUv REVMRVRFIEZPUiBQT1JUSU9OIE9GCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JF QVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZh bGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRP IGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIw MjAtMDEtMDEpJywgJ29uZScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJwor U0VUIG5hbWUgPSAnZm9vJzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9VTkRFRDsK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgZm9vCisgWzEsMikgfCBbIlR1 ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg b25lCisgWzEsMikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIlR1ZSBKYW4gMTUg MDA6MDA6MDAgMjAxOSIpIHwgb25lCisoMyByb3dzKQorCistLSBXb3JrcyBvbiBtb3JlIHRo YW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUg VEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWQx X2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5V TEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwx XScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0wMSwyMDI1LTAxLTAx KScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9 ICdmb28nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsi VGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikg fCBmb28KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgb25lCisoMiByb3dzKQorCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEt MTUnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0 IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZv bworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6 MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisoNCByb3dz KQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgi LCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVl IEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBb IlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIp IHwgb25lCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4g MjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyg0 IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBVTkJPVU5ERUQ7CitTRUxFQ1Qg KiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAg MjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAw OjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwg WyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgi KSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9u IEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIs IlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJh cgorKDQgcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEws CisgIHZhbGlkX2F0IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwK KwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90 ZXN0CitWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25l JyksCisoJ1sxLDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdb MSwxXScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAn WzIwMTgtMDEtMDEsMjAxOC0wMS0wNSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAx LTAxLCknLCAndGhyZWUnKSwKKygnWzQsNF0nLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyks CisoJ1s1LDVdJywgJygsKScsICdmaXZlJykKKzsKKy0tCistLSBVUERBVEUgdGVzdHMKKy0t CistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0w Ni0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw1 XSc7CitFUlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9u ICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9S VElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAx LDE5OTktMDEtMDEpJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICBjYW4ndCBkaXJl Y3RseSBhc3NpZ24gdG8gInZhbGlkX2F0IiBpbiBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZQor TElORSAzOiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCisgICAg ICAgICAgICBeCistLSBUaGUgd3JvbmcgdHlwZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMSBUTyA0CitTRVQgbmFt ZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICBmdW5jdGlvbiBwZ19j YXRhbG9nLnRzcmFuZ2UoaW50ZWdlciwgaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUg MjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKKyAgICAgICAgICAgICAg ICAgICAgICAgXgorSElOVDogIE5vIGZ1bmN0aW9uIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWUg YW5kIGFyZ3VtZW50IHR5cGVzLiBZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlw ZSBjYXN0cy4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJwor V0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJl IGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBlciBib3VuZAorLS0gU2V0dGluZyB3 aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAx OC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJP UjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgor TElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEt MDEnKSBUTyAnMjAxOC0uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0 KSBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7 CitFUlJPUjogIGNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1IgUE9SVElPTiBP RiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93 ZXIodmFsaWRfYXQpIFRPIFVOQk9VTkRFRAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRv ZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUg PSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRl L29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMs M10nOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Blbi9m aW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9 ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9m aW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVE IFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQs NF0nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRl L29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9 ICdmb3VyXjInCitXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9m aW5pdGUgcG9ydGlvbiB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcy MDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNF0nOwor LS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRF RAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBVcGRhdGlu ZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dI RVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0aCBz ZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEt MDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBVcGRh dGluZyBtdWx0aXBsZSBlbmNsb3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFt ZSA9ICdvbmVeMicKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVwZGF0aW5nIHdpdGggYSBz aGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5h bWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScg QVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAxJworU0VU IG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIHN5bnRheCBl cnJvciBhdCBvciBuZWFyICInMjAxOS0wMS0wMSciCitMSU5FIDQ6ICAgVE8gJzIwMTktMDEt MDEnCisgICAgICAgICAgICAgXgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25l XjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBh cnQgb2YgdGhlIFBLOgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw2 XScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVz ZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CitT RUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsx LDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAw IDIwMTgiKSB8IG9uZV4yCisgWzEsMikgfCBbIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDow MCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFszLDQpIHwg WyJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAi KSB8IHRocmVlXjEKKyBbMyw0KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwgKCwiU3VuIEph biAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJe MQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAw OjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwg KCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBmaXZlXjMKKyBb NSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBmaXZlCisgWzUsNikgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2 ZSoKKyBbNiw3KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAw ODowMTowMCAyMDE4IikgfCBvbmVeMgorIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDA4OjAxOjAw IDIwMTgiLCJUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTgiKSB8IG9uZV4zCisgWzYsNykgfCBb IlRodSBNYXIgMDEgMTA6MDA6MDAgMjAxOCIsIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIp IHwgb25lXjQKKyBbNiw3KSB8IFsiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IiwiV2VkIEFw ciAwNCAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorKDIwIHJvd3MpCisKKy0tCistLSBERUxF VEUgdGVzdHMKKy0tCistLSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzUsNV0nOwor RVJST1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9y X3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04g T0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWls cworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitXSEVSRSBpZCA9ICdb MywzXSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUgbGVzcyB0aGFuIG9y IGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFt cHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0w NC0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQv Y2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYtMDEnCitX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMywzXSc7 CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxM IFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gRGVsZXRpbmcgd2l0 aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorV0hFUkUgaWQg PSAnWzYsNl0nOworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDow MCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0LDUpIHwg KCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUg RmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgor IFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCBm aXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93cykKKworLS0gVVBEQVRFIC4uLiBS RVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNl cnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NF VCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMywzXScKK1JFVFVSTklORyAqOwor ICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMyw0KSB8 IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4 IikgfCB0aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMg b24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VSVGVkIHJvd3MKK0NSRUFU RSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgor QVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9mICUnLCBUR19XSEVOLCBU R19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7CisgIElGIFRHX09QID0gJ0RFTEVU RScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBF TkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIHRy Z19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJFRk9SRSBJTlNFUlQgT04gZm9y X3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBm b3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRp b25fb2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVf dXBkYXRlCisgIEJFRk9SRSBVUERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1Ig RUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7 CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfdXBkYXRlCisgIEFG VEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBF WEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklH R0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVsZXRlCisgIEJFRk9SRSBERUxFVEUg T04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5D VElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9y X3BvcnRpb25fb2ZfYWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVURSBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0 aW9uX29mX3RyaWdnZXIoKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NF VCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK05PVElDRTogIEJFRk9S RSBVUERBVEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAw OjAwIDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEp1biAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+CitO T1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNF UlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6 MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9U SUNFOiAgQUZURVIgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEph biAwMSAwMDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIw MjQtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRF IDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJ Q0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQg WyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMi KSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNF OiAgQUZURVIgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgi KSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMK KyBbMyw0KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDow MDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAg MjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgs IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAw MDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBb NSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIs Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2 ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgZml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAorIFs1LDYpIHwg WyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMi KSB8IGZpdmUKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTYgcm93cykKKworLS0gVGVzdCB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAor ICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBO VUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9v Zl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwx XScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIw MTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAz LDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1 LTAxKScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOwor OworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29uZV4x JworV0hFUkUgaWQgPSAnWzEsMV0nOworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4 LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFs aWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMi0yMDE4LDAxLTEwLTIwMTgpIHwgb25lCisg WzEsMikgfCBbMDEtMTAtMjAxOCwwMi0wMy0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDIt MDMtMjAxOCwwMi0xMC0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMTAtMjAxOCwwMy0w My0yMDE4KSB8IG9uZQorIFsxLDIpIHwgWzAzLTAzLTIwMTgsMDQtMDQtMjAxOCkgfCBvbmUK KyBbMiwzKSB8IFswMS0wMS0yMDE4LDAxLTE1LTIwMTgpIHwgdHdvCisgWzIsMykgfCBbMDIt MTUtMjAxOCwwNS0wMS0yMDE4KSB8IHR3bworIFszLDQpIHwgWzAxLTAxLTIwMTgsKSAgICAg ICAgICAgfCB0aHJlZQorKDggcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90 ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IGMxZTYxMGU2MmYuLmNmMmM3ZGY5MDAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAtOTg1LDYgKzk4 NSwyNCBAQCBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBvZiByZWxhdGlvbiAi ZXJydHN0X3BhcnRfMiIgdmlvbGF0ZXMgbm90LW51bGwgYwogREVUQUlMOiAgRmFpbGluZyBy b3cgY29udGFpbnMgKGEsIGIsIGMpID0gKGFhYWEsIG51bGwsIGNjYykuCiBTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFCTEUgZXJydHN0 OworLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9E IHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAor ICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRP IHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3By aXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNl cjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2 X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7 CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScg VE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitFUlJPUjogIHBlcm1pc3Npb24g ZGVuaWVkIGZvciB0YWJsZSB0MQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0RST1AgVEFCTEUgdDE7 CiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52b2x2ZWQgd2l0aCBE RUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwog QUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdlcjsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCAxOTUw ZTZmMjgxLi5mNGI4OGJjYzM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zMDIzLDYgKzMwMjMsMzggQEAgc2VsZWN0ICog ZnJvbSB1dl9pb2N1X3RhYjsKIAogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsKIGRyb3AgdGFi bGUgdXZfaW9jdV90YWI7CistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04gT0Ygd29ya3Mg Y29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJhbmdlLCB2YWxp ZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZfZnBvX3RhYiBw cmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsKK2luc2VydCBp bnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEsIDIwMzAtMDEt MDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNlbGVjdCBiLCBi KzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJvbSB1dl9mcG9f dGFiOworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikgdmFsdWVz ICgnWzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxlY3QgKiBm cm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwgMi4wCisgMSB8IDIgfCBb IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzEsMikgfCAyLjAKKygyIHJvd3MpCisKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3IgcG9y dGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScgc2V0 IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7 CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t CisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAwMDow MDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbMSwyKSB8IDIuMAor IDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUgSmFuIDAxIDAwOjAw OjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisoMyByb3dzKQorCitkZWxldGUgZnJvbSB1dl9m cG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAxLTAxJyB0byAn MjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9f dmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0KKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8IDIuMAorIDAgfCAxIHwgWyJTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwg Mi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIlN1biBKYW4gMDEg MDA6MDA6MDAgMjAxNyIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKIC0tIFRlc3Qgd2hv bGUtcm93IHJlZmVyZW5jZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1dl9pb2N1X3Rh YiAoYSBpbnQgdW5pcXVlLCBiIHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9jdV92aWV3IGFz CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zlcmxh cHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dAppbmRleCAxNzQ5OTQ1ZTcxLi40YjhhYmIwODFjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTI2OSw2ICsyNjksMzYg QEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3 XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAg U0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBu YW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCAgaWQyICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCww NS0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbworIFsxLDIpIHwgWzA1LTAxLTIwMDAsMDctMDEt MjAwMCkgfCBbNyw4KSAgfCBmb28xCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEw KSB8IFs3LDgpICB8IGZvbworIFsyLDMpIHwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBb OSwxMCkgfCBiYXIKKyBbMiwzKSB8IFswNC0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzksMTAp IHwgYmFyMgorIFsyLDMpIHwgWzA1LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBbOSwxMCkgfCBi YXIxMgorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIx CisgWzIsMykgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs5LDEwKSB8IGJhcgorKDgg cm93cykKKworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFs MyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsK K0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25z dHJhaW50ICJ0ZW1wb3JhbDNfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsx LDIpLCBbMDEtMDEtMjAwNSwwMS0wMS0yMDA2KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcg a2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkpLgor LS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2 YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgn MjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXIzJyk7CitFUlJPUjog IGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAi dGVtcG9yYWwzX3VuaXEiCitERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCks IFswMS0wMS0yMDA1LDAxLTAxLTIwMTApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkg KGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4KIERS T1AgVEFCTEUgdGVtcG9yYWwzOwogLS0KIC0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVw ZW5kZW5jaWVzCkBAIC0zMjEsNiArMzUxLDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwg dGhyZWUKICgxIHJvdykKIAorVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScK KyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0 ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVS RSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJwor ICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEt MjAwMCwwMS0xNS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEtMjAw MCkgfCBvbmUyCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIKKyBb MSwyKSB8IFswMi0xNS0yMDAwLDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMjUt MjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEtMjAw MykgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJlZQor IFszLDQpIHwgWzAyLTE1LTIwMDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwgWzAx LTAxLTIwMDMsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAsMDIt MjUtMjAwMCkgfCBvbmUKKygxMCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkOwogLS0gdGVtcG9yYWwgVU5JUVVFOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkICgKQEAgLTM1Niw2ICs0MTYsMzYgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkg fCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1 JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUg IHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdI RVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEn CisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0w MS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEtMTUtMjAwMCwwMi0wMS0y MDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1LTIwMDApIHwgb25lMgor IFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0y NS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAwMiwwMS0wMS0y MDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IHRocmVl CisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRocmVlCisgWzMsNCkgfCBb MDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkgfCBbMDItMjAtMjAwMCww Mi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWQ7CiAtLQogLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKQEAgLTU1Niw2ICs2NDYs MTMgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3Ju ZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6 CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCkBAIC01OTMsMTMgKzY5MCwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0 aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBj aGFuZ2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFs X3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIw MTgtMDEtMDMnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBj aGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwor U0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUg b3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJX ZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkg aXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4K IC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyB1cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK IC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1 LDVdJywgJ1s3LDddJyk7CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJ T04KIC0tCkBAIC02MjEsNiArNzMwLDEyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScs CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1 cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIi4KKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBU TyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAt LSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsg ZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOwpAQCAtNjQ1LDkgKzc2MCwxOSBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLAog REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVt cG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiks IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJu ZyIuCistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0 aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcK K1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0 aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRz OgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKIC0tCiAtLSB0ZXN0IE9OIFVQ REFURS9ERUxFVEUgb3B0aW9ucwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDY2Yjc1ZmExMmYuLjk5Y2Y2ZjE4ZDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQpAQCAtNDgsNyArNDgsNyBAQCB0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRl X2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVk aQogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMg LS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3Fs IGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVk X3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJp YnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZQordGVz dDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0ZV9jYXN0IGNv bnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1bSBk cm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2Ft IGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZSBmb3JfcG9ydGlvbl9vZgogCiAj IC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0sIGFmZmVjdGluZyB0 aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3Bv cnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYx YTIxNDA3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwKQEAgLTAsMCArMSwzNDAgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUv REVMRVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitD UkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAg dmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElO VE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIs MjAyMC0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0w MScKK1NFVCBuYW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9V TkRFRDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCistLSBXb3Jr cyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1l IHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZB TFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0w MSwyMDI1LTAxLTAxKScsICdvbmUnKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5E RUQKK1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZDJfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdiYXIn OworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAx OC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICog RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25f b2ZfdGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50 NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1l IHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIw MTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAz KScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25l JyksCisoJ1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdb MywzXScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDRdJywgJygsMjAxOC0w NC0wMSknLCAnZm91cicpLAorKCdbNSw1XScsICcoLCknLCAnZml2ZScpCis7CisKKy0tCist LSBVUERBVEUgdGVzdHMKKy0tCisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1u IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2Zv bycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gU2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0w MS0wMSwxOTk5LTAxLTAxKScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gVGhlIHdyb25n IHR5cGUgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0g J1szLDNdJzsKKworLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjEn CitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIHN1YnF1ZXJ5IGZh aWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYtMDEnCitTRVQgbmFt ZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBTZXR0aW5nIHdpdGggYSBj b2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBVTkJPVU5ERUQKK1NFVCBuYW1l ID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1l c3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0 LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0g VXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3RocmVlXjEn CitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9y dGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4 LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDNdJzsKKwor LS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRl IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91 cl4xJworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0 ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBU TyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDRdJzsK KworLS0gVXBkYXRpbmcgYSBmaW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBm aXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJe MycKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3Bh bgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVS RSBpZCA9ICdbMiwyXSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0aW9uIHdp dGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5LTAx LTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBV cGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBzcGFu cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4z JworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3Nl ZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlk ID0gJ1sxLDFdJzsKKworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGlj dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9VUiBU TyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dIRVJF IGlkID0gJ1sxLDFdJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRF UlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40Jwor V0hFUkUgaWQgPSAnWzEsMV0nOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9O RSBJTlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdv bmVeNCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5n ZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAn WzYsNl0nCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJF IGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAn Kic7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCisKKy0tIERlbGV0aW5nIHdp dGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBO VUxMCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1w cyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEn CitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyBl cXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAx JworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Ns b3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hF UkUgaWQgPSAnWzUsNV0nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMywzXSc7 CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIERlbGV0aW5n IHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJF IGlkID0gJ1s2LDZdJzsKKworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBVUERBVEUgLi4uIFJFVFVS TklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVk IHNpZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5h bWUgPSAndGhyZWVeMycKK1dIRVJFIGlkID0gJ1szLDNdJworUkVUVVJOSU5HICo7CisKKy0t IHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBh bmQgdGhlIElOU0VSVGVkIHJvd3MKKworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5P VElDRSAnJSAlICUgb2YgJScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfYXQsIE9MRC52 YWxpZF9hdDsKKyAgSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsK KyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5HVUFH RSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3Jl X2luc2VydAorICBCRUZPUkUgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigp OworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2luc2VydAorICBB RlRFUiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJ R0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX3VwZGF0ZQorICBCRUZPUkUgVVBEQVRF IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVO Q1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2FmdGVyX3VwZGF0ZQorICBBRlRFUiBVUERBVEUgT04gZm9yX3BvcnRp b25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9y dGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2Zf YmVmb3JlX2RlbGV0ZQorICBCRUZPUkUgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QK KyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJp Z2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2RlbGV0 ZQorICBBRlRFUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CisKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcKK1dI RVJFIGlkID0gJ1s1LDVdJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEt MDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKKy0tIFRlc3Qgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlCisKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5 cGU9ZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MiAoCisgIGlk IGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgbXlkYXRlcmFuZ2UgTk9UIE5VTEws CisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3Rl c3QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0MgorVkFMVUVTCisoJ1sxLDFdJywg J1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0w Mi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAx OC0wNC0wNCknLCAnb25lJyksCisoJ1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDUtMDEp JywgJ3R3bycpLAorKCdbMywzXScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyk7Cis7CisK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wMS0xMCcgVE8gJzIwMTgtMDItMTAnCitTRVQgbmFtZSA9ICdvbmVeMScK K1dIRVJFIGlkID0gJ1sxLDFdJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4 LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSBmb3Jf cG9ydGlvbl9vZl90ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHJpdmlsZWdlcy5zcWwKaW5kZXggYmYwMDM1ZDk2ZC4uMzY2YmU5OWEyNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAgLTcxMyw2ICs3MTMsMjQgQEAg VVBEQVRFIGVycnRzdCBTRVQgYSA9ICdhYWFhJywgYiA9IE5VTEwgV0hFUkUgYSA9ICdhYWEn OwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBEUk9Q IFRBQkxFIGVycnRzdDsKIAorLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0 aGUgcmFuZ2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAg YzEgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQ UklNQVJZIEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQg U0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0 MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyBy ZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEg VE8gcmVncmVzc19wcml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0w MScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKKwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwg cHJpdmlsZWdlcyB3aGVuIGludm9sdmVkIHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQg Q09MVU1OIHRocmVlIGludGVnZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxl X3ZpZXdzLnNxbAppbmRleCBlYWVlMGI3ZTFkLi5mODE0NzAxYTQzIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKQEAgLTE1NDEsNiArMTU0MSwyMCBA QCBzZWxlY3QgKiBmcm9tIHV2X2lvY3VfdGFiOwogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsK IGRyb3AgdGFibGUgdXZfaW9jdV90YWI7CiAKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElP TiBPRiB3b3JrcyBjb3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0 cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191 dl9mcG9fdGFiIHByaW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykp OworaW5zZXJ0IGludG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0w MSwgMjAzMC0wMS0wMSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAg c2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBm cm9tIHV2X2Zwb190YWI7CisKK2luc2VydCBpbnRvIHV2X2Zwb192aWV3IChpZCwgdmFsaWRf YXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDEwLTAxLTAxLCAyMDIwLTAxLTAxKScsIDEp Oworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3Ig cG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScg c2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3Zp ZXc7CitkZWxldGUgZnJvbSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBm cm9tICcyMDE3LTAxLTAxJyB0byAnMjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOwor c2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJl bmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRhYmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlx dWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKaW5kZXggMTNjZTczMTNjNS4uOTYw YTYzMjM4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKQEAgLTIwMyw2ICsyMDMsMjAgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFs aWRfYXQsIGlkMiwgbmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBE QVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAx JyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8g JzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAn WzIsMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQs IHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKKy0tIGNv bmZsaWN0aW5nIGlkMiBvbmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDUt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyMycpOwogRFJPUCBUQUJMRSB0 ZW1wb3JhbDM7CiAKIC0tCkBAIC0yNDEsNiArMjU1LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9 ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRP ICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25l JzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdb MiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1 JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCiAtLSB0ZW1wb3JhbCBVTklRVUU6CkBAIC0y NTksNiArMjg5LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVF UwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxF Q1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFs X3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEt MTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9 ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQg aWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxf cGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0w MScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9 ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAg V0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOwogCiAtLQpAQCAtNDU1LDYgKzUwMSwxMSBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBj aGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGp1c3QgYSBw YXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10n CitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCkBAIC00OTAsMTMgKzU0MSwyMyBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjaGFuZ2lu ZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNl ZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdb Nyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZh aWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVS RSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNTE2LDYgKzU3NywxMCBAQCBJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKIC0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZl cmVuY2VkOgogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0t IGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0w MS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rp bmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CkBAIC01NDAsOSArNjA1LDE3IEBA IElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3Jh bmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJv dGggYXJlIHJlZmVyZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBk ZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZwor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEt MTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5n IEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7Ci1ERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKIAogLS0KIC0tIHRlc3QgT04gVVBEQVRFL0RFTEVU RSBvcHRpb25zCi0tIAoyLjI1LjEKCg== --------------G957IccwHqpC3R9IYdyZoS1g Content-Type: text/x-patch; charset=UTF-8; name="v16-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v16-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlODhlZTAwMWY1N2Y3NGFjOWZhY2Q2NGZmMWRmODM5YWI0MDU3NjkyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjE2IDQvNV0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDI4ICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKysrKysr KystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg MjAgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwg NDEzICsrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsICAgICB8IDE3MyArKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTE1NSBpbnNlcnRp b25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDA5YTY5ZTc2MmIuLmI5ZGQ1NDA0OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCkBAIC0xMjMyMCwxMSArMTIzMjAsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRy aWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25z dHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9O X0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJYnJl YWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklf RktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0Ogog CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKQEAg LTEyNDExLDExICsxMjQxOSwxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMo UmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3Ry aWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FE RToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVhazsKIAkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Nl dG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRE RUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1cHBv cnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZL ZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCA4NTUyZjQzNGQ1Li5kMDAyNzkxODU1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtODMsNiArODMsMTIgQEAK ICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBEQVRFCQk3CiAjZGVmaW5lIFJJX1BMQU5f U0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmluZSBSSV9QTEFOX1NFVERFRkFVTFRfT05V UERBVEUJCTkKKyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURQkJMTAKKyNkZWZp bmUgVFJJX1BMQU5fQ0FTQ0FERV9PTlVQREFURQkJMTEKKyNkZWZpbmUgVFJJX1BMQU5fU0VU TlVMTF9PTlVQREFURQkJMTIKKyNkZWZpbmUgVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQkJ MTMKKyNkZWZpbmUgVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2RlZmluZSBU UklfUExBTl9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FVT1RFRF9O QU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9SRUxfTkFN RV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xOTAsNiArMTk2LDcgQEAgc3Rh dGljIGJvb2wgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBm a19yZWwsCiAJCQkJCQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKTsKIHN0 YXRpYyBEYXR1bSByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNf bm9fYWN0aW9uKTsKIHN0YXRpYyBEYXR1bSByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRh LCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKK3N0YXRpYyBEYXR1bSB0cmlfc2V0 KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7 CiBzdGF0aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBjaGFyICpu YW1lKTsKIHN0YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwgUmVs YXRpb24gcmVsKTsKIHN0YXRpYyB2b2lkIHJpX0dlbmVyYXRlUXVhbChTdHJpbmdJbmZvIGJ1 ZiwKQEAgLTEzOTEsNiArMTM5OCwxMjcgQEAgVFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZV TkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2lu Zm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5X2Nhc2NhZGVfZGVs IC0KKyAqCisgKiBDYXNjYWRlZCBkZWxldGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCBk ZWxldGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklfRktl eV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRhICp0cmln ZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtf cmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJ U1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0 aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5k IGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9jYXNjYWRl X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0 cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRn X3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlw dG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4KKwkgKgor CSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRo YXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIERFTEVURSB3aWxsIGdldCBvbiBpdC4KKwkg Ki8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRzbG90ID0g dHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBt b3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5h bCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSBy ZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8s IG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJ CWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHBy ZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICovCisJcmlfQnVp bGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX09OREVMRVRFKTsK KworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwp CisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hhcgkJZmtyZWxuYW1lW01B WF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05B TUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlz ZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOworCQljb25zdCBj aGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmlu ZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxma3RhYmxlPgorCQkgKiAg Rk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBlcigke24r MX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICogVGhlIHR5cGUg aWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJCSAqIGNvcnJl c3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8KKwkJaW5p dFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAi OworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25l TmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJE RUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVkKSBUTyB1 cHBlcigkJWQpIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5m by0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisJCXF1ZXJ5c2VwID0gIldIRVJF IjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJ CU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRu YW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CisJCQlyaV9HZW5lcmF0 ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUs CisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5 cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2Rl dGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZx dWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRz W2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNldCBhIHBhcmFtIGZvciBGT1IgUE9SVElP TiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlw ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pOworCisJ CS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hl Y2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJ CQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBw bGFuIG5vdy4gQnVpbGQgdXAgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBrZXkgdmFsdWVzIGlu IHRoZQorCSAqIGRlbGV0ZWQgUEsgdHVwbGUgYW5kIGRlbGV0ZSB0aGUgcmVmZXJlbmNpbmcg cm93cworCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKKwkJ CQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJpaW5mby0+ bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkgICAvKiBtdXN0IGRldGVjdCBuZXcg cm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKworCWlmIChTUElfZmluaXNoKCkgIT0g U1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVkIik7CisK Kwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJuIFBv aW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCiAvKgogICogVFJJX0ZLZXlfbm9hY3Rpb25f dXBkIC0KICAqCkBAIC0xNDI4LDYgKzE1NTYsNDE1IEBAIFRSSV9GS2V5X3Jlc3RyaWN0X3Vw ZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8qCisgKiBUUklfRktleV9jYXNj YWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZvcmVpZ24ga2V5IHJlZmVyZW5j ZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitEYXR1bQor VFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCWNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOworCVJlbGF0 aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlUdXBsZVRhYmxlU2xv dCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIgIHFwbGFuOwor CURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQg dHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVj a1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV91cGQiLCBSSV9UUklHVFlQRV9V UERBVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0YS0+ dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7CisK KwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2YgdGhlIEZLIGFuZCBQ SyB0YWJsZXMgYW5kIHRoZSBuZXcgYW5kCisJICogb2xkIHR1cGxlLgorCSAqCisJICogZmtf cmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhhdCdzIHdo YXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAqLworCWZr X3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7 CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW5ld3Nsb3QgPSB0cmlnZGF0 YS0+dGdfbmV3c2xvdDsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJ LyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24s CisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3Nh cnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJp Z2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25u ZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBm YWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUg Y2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBU UklfUExBTl9DQVNDQURFX09OVVBEQVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFBy ZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVy eWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hhcgkJZmtyZWxuYW1lW01B WF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05B TUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlz ZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJIHF1ZXJ5b2lkc1syICogUklf TUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3QgY2hhciAqZmtfb25seTsKKworCQkvKiAtLS0t LS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICogIFVQREFURSBb T05MWV0gPGZrdGFibGU+CisJCSAqCQkgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxv d2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4rMX0pCisJCSAqCQkgIFNFVCBma2F0dDEgPSAk MSwgWywgLi4uXQorCQkgKgkJICBXSEVSRSAkbiA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICog VGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJ CSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4gIE5vdGUgdGhhdCB3ZSBhcmUgYXNz dW1pbmcKKwkJICogdGhlcmUgaXMgYW4gYXNzaWdubWVudCBjYXN0IGZyb20gdGhlIFBLIHRv IHRoZSBGSyB0eXBlOworCQkgKiBlbHNlIHRoZSBwYXJzZXIgd2lsbCBmYWlsLgorCQkgKiAt LS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0 U3RyaW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVs a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsK KwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5h bWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5m by0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBE QVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQl ZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIDIgKiByaWlu Zm8tPm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVyeXNlcCA9 ICIiOworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDAsIGogPSByaWlu Zm8tPm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBqKyspCisJCXsKKwkJCU9pZCBw a190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJ CU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAor CQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJ LyoKKwkJCSAqIERvbid0IHNldCB0aGUgdGVtcG9yYWwgY29sdW1uKHMpLgorCQkJICogRk9S IFBPUlRJT04gT0Ygd2lsbCB0YWtlIGNhcmUgb2YgdGhhdC4KKwkJCSAqLworCQkJaWYgKGkg PCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwK KwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBxdWVyeXNlcCwgYXR0bmFtZSwg aSArIDEpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGogKyAxKTsKKwkJCXJp X0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBr X3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUs IGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJCXF1YWxz ZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJCQlxdWVyeW9pZHNb al0gPSBwa190eXBlOworCQl9CisJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJnF1ZXJ5YnVm LCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKKworCQkvKiBTZXQgYSBwYXJhbSBmb3Ig Rk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNbMiAqIHJpaW5mby0+bmtl eXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxh biA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCAyICogcmlpbmZvLT5ua2V5cyArIDEs IHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkv KgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUgZXhpc3Rp bmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwg cXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBuZXdzbG90LAor CQkJCQlyaWluZm8tPm5rZXlzICogMiwgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUsCQkvKiBt dXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfVVBEQVRFKTsKKworCWlmIChT UElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5p c2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAqIFRSSV9G S2V5X3NldG51bGxfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0 byBOVUxMIHZhbHVlcyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRudWxsX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51 bGxfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBV UERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMg dG8gTlVMTCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklf RktleV9zZXRudWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQg dGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51bGxfdXBk IiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBERUxFVEUg Y2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRl eHQsIHRydWUsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiBUUklfRktleV9z ZXRkZWZhdWx0X2RlbCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgdG8g ZGVmYXVsdHMgYXQgZGVsZXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1bQorVFJJ X0ZLZXlfc2V0ZGVmYXVsdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0 aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5k IGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9zZXRkZWZh dWx0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGgg VVBEQVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikgZmNpbmZv LT5jb250ZXh0LCBmYWxzZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAqIFRS SV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0Rh dHVtCitUUklfRktleV9zZXRkZWZhdWx0X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X3NldGRlZmF1bHRfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNv ZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9VUERBVEUpOworfQorCisv KgorICogdHJpX3NldCAtCisgKgorICogQ29tbW9uIGNvZGUgZm9yIHRlbXBvcmFsIE9OIERF TEVURSBTRVQgTlVMTCwgT04gREVMRVRFIFNFVCBERUZBVUxULCBPTgorICogVVBEQVRFIFNF VCBOVUxMLCBhbmQgT04gVVBEQVRFIFNFVCBERUZBVUxULgorICovCitzdGF0aWMgRGF0dW0K K3RyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQg dGdraW5kKQoreworCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRp b24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xv dDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIJcXBsYW47CisJRGF0dW0JCXRh cmdldFJhbmdlOworCWludDMyCQlxdWVyeW5vOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25z dHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50 Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3Jp cHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoK KwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0 aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJ ICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9 IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgU0VUIE5VTEwvREVG QVVMVCB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5 IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJn ZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdfdGVtcG9y YWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tf Q09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOworCisJLyoK KwkgKiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIHRyaWdnZXIuCisJ ICovCisJc3dpdGNoICh0Z2tpbmQpCisJeworCQljYXNlIFJJX1RSSUdUWVBFX1VQREFURToK KwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTlVQ REFURQorCQkJCTogVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURTsKKwkJCWJyZWFrOwor CQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAor CQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQorCQkJCTogVFJJX1BMQU5fU0VUREVG QVVMVF9PTkRFTEVURTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg ImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwl9CisKKwlyaV9CdWlsZFF1 ZXJ5S2V5KCZxa2V5LCByaWluZm8sIHF1ZXJ5bm8pOworCisJaWYgKChxcGxhbiA9IHJpX0Zl dGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9U RURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpx dWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkJcXVlcnlvaWRzW1JJ X01BWF9OVU1LRVlTICsgMV07IC8qICsxIGZvciBGT1IgUE9SVElPTiBPRiAqLworCQljb25z dCBjaGFyICpma19vbmx5OworCQlpbnQJCQludW1fY29sc190b19zZXQ7CisJCWNvbnN0IGlu dDE2ICpzZXRfY29sczsKKworCQlzd2l0Y2ggKHRna2luZCkKKwkJeworCQkJY2FzZSBSSV9U UklHVFlQRV9VUERBVEU6CisJCQkJLyogLTEgc28gd2UgbGV0IEZPUiBQT1JUSU9OIE9GIHNl dCB0aGUgcmFuZ2UuICovCisJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5ua2V5cyAt IDE7CisJCQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7CisJCQkJYnJlYWs7CisJ CQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCQkvKgorCQkJCSAqIElmIGNvbmZkZWxz ZXRjb2xzIGFyZSBwcmVzZW50LCB0aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQorCQkJCSAqIGNv bHVtbnMgc3BlY2lmaWVkIGluIHRoYXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRhdGUgYWxs CisJCQkJICogdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMuCisJCQkJICovCisJCQkJaWYgKHJp aW5mby0+bmRlbHNldGNvbHMgIT0gMCkKKwkJCQl7CisJCQkJCW51bV9jb2xzX3RvX3NldCA9 IHJpaW5mby0+bmRlbHNldGNvbHM7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5jb25mZGVs c2V0Y29sczsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogLTEgc28gd2UgbGV0 IEZPUiBQT1JUSU9OIE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJCW51bV9jb2xzX3RvX3Nl dCA9IHJpaW5mby0+bmtleXMgLSAxOworCQkJCQlzZXRfY29scyA9IHJpaW5mby0+ZmtfYXR0 bnVtczsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJCX0KKworCQkvKiAtLS0t LS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICoJVVBEQVRFIFtP TkxZXSA8Zmt0YWJsZT4KKwkJICoJCQlGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dl cigke24rMX0pIFRPIHVwcGVyKCR7bisxfSkKKwkJICoJCQlTRVQgZmthdHQxID0ge05VTEx8 REVGQVVMVH0gWywgLi4uXQorCQkgKgkJCVdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4uXQor CQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0 aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0t CisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0U3RyaW5nSW5m bygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsKKwkJcXVvdGVS ZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMg LSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBEQVRFICVzJXMg Rk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCkgU0VUIiwK KwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtleXMgKyAx LCByaWluZm8tPm5rZXlzICsgMSk7CisKKwkJLyoKKwkJICogQWRkIGFzc2lnbm1lbnQgY2xh dXNlcworCQkgKi8KKwkJcXVlcnlzZXAgPSAiIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fY29sc190b19zZXQ7IGkrKykKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJ QXR0TmFtZShma19yZWwsIHNldF9jb2xzW2ldKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwKKwkJCQkJCQkgIiVzICVzID0gJXMiLAorCQkJCQkJCSBxdWVyeXNlcCwgYXR0 bmFtZSwKKwkJCQkJCQkgaXNfc2V0X251bGwgPyAiTlVMTCIgOiAiREVGQVVMVCIpOworCQkJ cXVlcnlzZXAgPSAiLCI7CisJCX0KKworCQkvKgorCQkgKiBBZGQgV0hFUkUgY2xhdXNlCisJ CSAqLworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWlu Zm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZAlwa190eXBlID0gUklBdHRUeXBlKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAlma190eXBlID0gUklBdHRUeXBl KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa19jb2xsID0gUklB dHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCWZr X2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7 CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQl ZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxzZXAsCisJ CQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tp XSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19jb2xsICE9IGZrX2Nv bGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQorCQkJCXJp X0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOworCQkJcXVhbHNl cCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNl dCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1ty aWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1ty aWluZm8tPm5rZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4g Ki8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5 cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9 CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUg ZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBOVUxM LAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJCS8qIG11 c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJaWYgKFNQ SV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2Zpbmlz aCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7 CisKKwlpZiAoaXNfc2V0X251bGwpCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgd2UganVzdCBkZWxldGVkIG9yIHVwZGF0ZWQg dGhlIFBLIHJvdyB3aG9zZSBrZXkgd2FzIGVxdWFsIHRvIHRoZQorCQkgKiBGSyBjb2x1bW5z JyBkZWZhdWx0IHZhbHVlcywgYW5kIGEgcmVmZXJlbmNpbmcgcm93IGV4aXN0cyBpbiB0aGUg RksKKwkJICogdGFibGUsIHdlIHdvdWxkIGhhdmUgdXBkYXRlZCB0aGF0IHJvdyB0byB0aGUg c2FtZSB2YWx1ZXMgaXQgYWxyZWFkeQorCQkgKiBoYWQgLS0tIGFuZCBSSV9GS2V5X2ZrX3Vw ZF9jaGVja19yZXF1aXJlZCB3b3VsZCBoZW5jZSBiZWxpZXZlIG5vCisJCSAqIGNoZWNrIGlz IG5lY2Vzc2FyeS4gIFNvIHdlIG5lZWQgdG8gZG8gYW5vdGhlciBsb29rdXAgbm93IGFuZCBp bgorCQkgKiBjYXNlIGEgcmVmZXJlbmNlIHN0aWxsIGV4aXN0cywgYWJvcnQgdGhlIG9wZXJh dGlvbi4gIFRoYXQgaXMKKwkJICogYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiB0aGUgTk8gQUNU SU9OIHRyaWdnZXIsIHNvIGp1c3QgcnVuIGl0LiAoVGhpcworCQkgKiByZWNoZWNrIGlzIG9u bHkgbmVlZGVkIGluIHRoZSBTRVQgREVGQVVMVCBjYXNlLCBzaW5jZSBDQVNDQURFIHdvdWxk CisJCSAqIHJlbW92ZSBzdWNoIHJvd3MgaW4gY2FzZSBvZiBhIERFTEVURSBvcGVyYXRpb24g b3Igd291bGQgY2hhbmdlIHRoZQorCQkgKiBGSyBrZXkgdmFsdWVzIGluIGNhc2Ugb2YgYW4g VVBEQVRFLCB3aGlsZSBTRVQgTlVMTCBpcyBjZXJ0YWluIHRvCisJCSAqIHJlc3VsdCBpbiBy b3dzIHRoYXQgc2F0aXNmeSB0aGUgRksgY29uc3RyYWludC4pCisJCSAqLworCQlyZXR1cm4g cmlfcmVzdHJpY3QodHJpZ2RhdGEsIHRydWUpOworCX0KK30KKwogLyoKICAqIFJJX0ZLZXlf cGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KICAqCkBAIC0yNTUyLDggKzMwODksOCBAQCByaV9Q ZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlpbnQJCQlz cGlfcmVzdWx0OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRl eHQ7Ci0JRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAyXTsKLQljaGFyCQludWxsc1tS SV9NQVhfTlVNS0VZUyAqIDJdOworCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlTICogMiAr IDFdOworCWNoYXIJCW51bGxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOwogCiAJLyoKIAkg KiBVc2UgdGhlIHF1ZXJ5IHR5cGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcXVl cnkgaXMgcnVuIGFnYWluc3QKQEAgLTI1ODgsOCArMzEyNSwxMCBAQCByaV9QZXJmb3JtQ2hl Y2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJcmlfRXh0cmFjdFZhbHVl cyhzb3VyY2VfcmVsLCBuZXdzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJCQkJCSB2 YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQorCQl7CiAJCQlyaV9FeHRyYWN0VmFsdWVz KHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJCSB2 YWxzICsgcmlpbmZvLT5ua2V5cywgbnVsbHMgKyByaWluZm8tPm5rZXlzKTsKKwkJfQogCX0K IAllbHNlCiAJewpAQCAtMzMwMCw4ICszODM5LDE0IEBAIFJJX0ZLZXlfdHJpZ2dlcl90eXBl KE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgogCQljYXNl IEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX1VQ RDoKKwkJY2FzZSBGX1RSSV9GS0VZX0NBU0NBREVfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlf Q0FTQ0FERV9VUEQ6CiAJCWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9ERUw6CiAJCWNhc2Ug Rl9UUklfRktFWV9SRVNUUklDVF9VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9TRVROVUxMX0RF TDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlf U0VUREVGQVVMVF9ERUw6CisJCWNhc2UgRl9UUklfRktFWV9TRVRERUZBVUxUX1VQRDoKIAkJ Y2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1RSSV9GS0VZX05PQUNU SU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMzEzMjQ2OGE5Yy4uNzI1ZWNhMTI2ZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC0zOTQ5LDYgKzM5NDksMTIgQEAKIHsgb2lkID0+ICc2MTIzJywgZGVz Y3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4g UkVGRVJFTkNFUycsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCiAgIHByb2FyZ3R5cGVz ID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2 MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxF VEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVsJywgcHJv dm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlw ZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnIH0sCit7IG9pZCA9 PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04g VVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRlX3VwZCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9LAogeyBv aWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IE9OIERFTEVURSBSRVNUUklDVCcsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0 X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcics IHByb2FyZ3R5cGVzID0+ICcnLApAQCAtMzk1Nyw2ICszOTYzLDIwIEBACiAgIHByb25hbWUg PT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJv cmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4g J1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTI4JywgZGVzY3IgPT4g J3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgU0VUIE5VTEwnLAor ICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2 JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9z cmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjknLCBkZXNj ciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBTRVQgTlVM TCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJywgcHJvdm9sYXRpbGUg PT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycs IHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0sCit7IG9pZCA9PiAnNjEzMCcs IGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFNF VCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwnLCBw cm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0 eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2RlbCcgfSwK K3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVn cml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9z ZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAn dHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Nl dGRlZmF1bHRfdXBkJyB9LAogeyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAogICBwcm9uYW1l ID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHBy b3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDRiOGFi YjA4MWMuLmY4YTBjMWQyYzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtMTQ4LDYgKzE0OCw3IEBAIFNFTEVDVCBwZ19n ZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlCiAgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3Vx IE9OIHRlbXBvcmFsX3JuZzIgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQogKDEgcm93KQog CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CiAtLSBVTklRVUUgd2l0aCB0d28gY29sdW1u cyBwbHVzIGEgcmFuZ2U6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAJaWQxIGlu dDRyYW5nZSwKQEAgLTc4NSw3ICs3ODYsNjIgQEAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFU RSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KQorIFs0LDUpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2 LDcpCisgWzQsNSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcs OCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbNyw4KQorIFs0LDUpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs3LDgpCisoMyByb3dzKQor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAsMTBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUs MTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBp ZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEw LDExKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbMTYsMTcpCisgWzEwLDExKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTUsMTYpCisoMiByb3dzKQor CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlk ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2KSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IikgfCBbOCw5KQorIFs1LDYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2F0IHwg cGFyZW50X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTEsMTFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0 IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworICAgaWQgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMSwxMikgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzE3LDE4 KQorKDEgcm93KQorCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiBJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbOSw5XScpOwpAQCAtNzk1LDcgKzg1MSw2NyBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQ REFURSBTRVQgTlVMTDsKLUVSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sx MCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBb OSwxMCkKKyBbNiw3KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbOSwxMCkKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCAKKyBbNiw3KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTgsMThdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sxOCwxOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKyAgIGlkICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTIsMTMpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IAorIFsxMiwxMykgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzE4LDE5KQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxMSwxMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3 LDgpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiKSB8IFsxMSwxMikKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTEsMTIpCisoMyByb3dzKQorCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgCisgWzcsOCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgCisgWzcsOCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgCisoMyByb3dzKQorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMjAsMjBdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTMsMTNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMywxNCkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEzLDE0KSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbMjAsMjEpCisoMiByb3dzKQorCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNF VCBERUZBVUxUCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScs IHRzcmFuZ2UobnVsbCwgbnVsbCkpOwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CkBA IC04MDcsNyArOTIzLDk1IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBE RUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9y ZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScg V0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwg WzEyLDEzKQorIFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAg aWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSww KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hF UkUgaWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFsxNCwxNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzE0LDE1KSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMjIsMjMp CisoMiByb3dzKQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzksMTApIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsx NCwxNSkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSww KQorIFs5LDEwKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApCisoMyByb3dz KQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUs MTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOworICAgaWQgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwxNikgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzE1LDE2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEph biAwMSAwMDowMDowMCAyMDIxIikgfCBbMjQsMjUpCisoMiByb3dzKQorCistLSBGSyB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cm5nMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgbXlkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQsIFBFUklPRCB2YWxpZF9hdCkgT04gREVMRVRFIENB U0NBREUKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg bXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkp IHwgWzgsOSkKKyBbNSw2KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzgsOSkKKygy IHJvd3MpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CitEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CiAtLSBGSyBiZXR3ZWVu IHBhcnRpdGlvbmVkIHRhYmxlcwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyAoCiAJaWQgaW50NHJhbmdlLApAQCAtODE1LDggKzEwMTksOCBAQCBDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRF IFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBW QUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScs ICdbMTEsMTFdJyk7Ci1DUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywg J1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScs ICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRd JywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywg J1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScp OwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sx LDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAog ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29u ZScpLApAQCAtODI5LDggKzEwMzMsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdGZrcDEg cGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVF UyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sx MSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9S IFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDld JywgJ1sxMSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5 XScsICdbMjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgn WzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScs ICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0n LCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNl cnRzCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UwogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwg J1sxLDFdJyksCkBAIC04NjUsNyArMTA2OSw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYt MDMtCiAtLSBzaG91bGQgZmFpbDoKIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQog ICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNs ZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpAQCAtODc3LDcgKzEwODEsNyBAQCBJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtl eSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRf ZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAx OCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKQEAgLTg5 OSw3ICsxMTAzLDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0tIHNob3VsZCBm YWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0w MS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4gdXA6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9 ICdbNSw1XSc7CkBAIC05MTEsMzUgKzExMTUsMjE0IEBAIElOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ii4KIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwog CQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbNCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkKKyBbNCw1 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzYsNykKKyBbNCw1KSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb NCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkKKyBbNCw1KSB8IFswMS0w MS0yMDE4LDAxLTAxLTIwMTkpIHwgWzcsOCkKKyBbNCw1KSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMTAsMTBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkg fCBbMTYsMTcpCisgWzEwLDExKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE1LDE2 KQorKDIgcm93cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FE RQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s4LDhd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5KQorIFs1LDYpIHwgWzAx LTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbOCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZCAKKy0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb MTEsMTIpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTcsMTgpCisoMSByb3cpCisK IC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJ T04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKLUVSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0g J1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFs2LDcpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAKKyBbNiw3KSB8 IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzksMTApCisgWzYsNykgfCBbMDEtMDEtMjAy MCwwMS0wMS0yMDIxKSB8IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwg CisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwx OF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTgsMThdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTksMTldJyBXSEVS RSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzEyLDEzKSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEyLDEzKSB8 IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE4LDE5KQorKDIgcm93cykKKwogLS0gcGFy dGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTEsMTFdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOwor ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFswMS0w MS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzcsOCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5 KSB8IFsxMSwxMikKKyBbNyw4KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzExLDEy KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICB2YWxp ZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8 IAorIFs3LDgpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCAKKyBbNyw4KSB8IFswMS0w MS0yMDIwLDAxLTAxLTIwMjEpIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFsxMywxNCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IAorIFsx MywxNCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsyMCwyMSkKKygyIHJvd3MpCisK IC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzAsMF0nLCBkYXRlcmFu Z2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzEyLDEyXScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZwotICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAg QUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWzAsMF0nLAogCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNF VCBERUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBp ZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFswMS0wMS0y MDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIw MTkpIHwgWzEyLDEzKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTIs MTMpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBp ZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWzAxLTAxLTIw MTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAx OSkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMCwxKQor KDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJd JywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUg aWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxNCwxNSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzE0LDE1 KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIyLDIzKQorKDIgcm93cykKKwogLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTQsMTRdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzks OV0nOworICAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEw KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEt MjAxOCwwMS0wMS0yMDE5KSB8IFsxNCwxNSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCwwMS0w MS0yMDIxKSB8IFsxNCwxNSkKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBp ZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwgWzAxLTAx LTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDE4LDAxLTAx LTIwMTkpIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsw LDEpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sy NCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE1LDE1 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzI0 LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTUsMTVd JzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwx NikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzE1LDE2KSB8IFswMS0w MS0yMDIwLDAxLTAxLTIwMjEpIHwgWzI0LDI1KQorKDIgcm93cykKKwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCmluZGV4IDk2MGE2MzIzODEuLjdlYTZhZjUxODQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0xMDMsNiArMTAzLDcgQEAgQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAogXGQgdGVtcG9yYWxfcm5nMgogU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmlu ZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1w b3JhbF9ybmcyX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKIAogLS0gVU5JUVVF IHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzMgKApAQCAtNjMwLDYgKzYzMSwyOCBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRF IENBU0NBREU7CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNCw0XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sx NiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAsMTBdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURF CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBp ZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4 LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTdd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOwogCiAtLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CkBA IC02NDAsNiArNjYzLDI4IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxM OworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlk ID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBX SEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIHRzcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzE5LDE5 XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjAsMjBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sy MCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMjAsMjBd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CiAKIC0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CkBAIC02NTIs NiArNjk3LDU0IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxU OworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1s4LDhdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxMywxM10n IFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMjIsMjJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sy MywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVG QVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOwor CistLSBGSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZUEUgbXlkYXRl cmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkLCBQRVJJT0QgdmFsaWRf YXQpIE9OIERFTEVURSBDQVNDQURFCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScs IG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nMjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIAogLS0gRksgYmV0d2VlbiBwYXJ0aXRp b25lZCB0YWJsZXMKIApAQCAtNjYxLDggKzc1NCw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdHAx IHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAo J1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0n KTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0n LCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1sz LDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nLCAnWzEzLDEzXScs ICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEsMjFdJywgJ1syMywyM10n KTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0n LCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScs ICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiBJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAgICgnWzEsMV0nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCiAgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCkBAIC02 NzYsOCArNzY5LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQogKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7Ci1D UkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4 LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRp dGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4g KCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFd JywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIx XScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1sy LDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScs ICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0n LCAnWzI0LDI0XScpOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCiAKQEAg LTc2MSwzNyArODU0LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZQogCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKIAogLS0gcGFydGl0 aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTcsMTddJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNywxN10nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CisKIC0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiAKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5 LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNF VCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywgZGF0ZXJhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKIAog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKIAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb Nyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBE RUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFV TFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdb MCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVG QVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKIAogLS0gcGFy dGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKIAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0 LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwotLSAKMi4yNS4xCgo= --------------G957IccwHqpC3R9IYdyZoS1g Content-Type: text/x-patch; charset=UTF-8; name="v16-0005-Add-PERIODs.patch" Content-Disposition: attachment; filename="v16-0005-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSAxODE1YWQ0Mzc1OTM1YjE2ZTJlMjAyNTlkMTRkMjZhNDcwZmFlYmI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjE2IDUvNV0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgICAg fCAgIDkgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAg IHwgIDc2ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwg ICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAg ICAgICAgfCAgNzMgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgICAgICAg ICAgICAgICB8IDEzMiArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dCAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyAg ICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5j ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICAgICAgfCA3NjUgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAxMCArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNDUgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3ICsr CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAgMjEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE3 MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAgICAg ICAgICAgIHwgIDU0ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21k LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bl cmlvZHMub3V0ICAgICAgICAgfCAxNzMgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w ZXJpb2RzLnNxbCAgICAgICAgICAgICAgfCAxMTcgKysrCiA0OCBmaWxlcyBjaGFuZ2VkLCAy MzEyIGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRl eCAzMTJlMDBjOTBhLi4xM2MxMWI4ODVhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMwLDYg KzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlvbiBr ZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5hbWU+ cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnBl cmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19wb2xp Y3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNlY3Vy aXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MTIsNiArNTcxNywxMTMgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRhbG9n LXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9kIj4K KyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAg PHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNhdGlv biB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJl IGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0 aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5 cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAg IDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9kIG5h bWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0cnVj dGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5h bWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVsb25n cyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0 ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIgb2Yg dGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5w ZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5w Z19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg bnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0 cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk PmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFsPiBj b2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+Lgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3RyYWlu dDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHBl cmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+ CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggMDc1ZmYzMjk5MS4uOTRhODkyY2EyOSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dt bApAQCAtMTI2Myw2ICsxMjYzLDY0IEBAIENSRUFURSBUQUJMRSBjaXJjbGVzICgKICAgPC9z ZWN0Mj4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJkZGwtcGVyaW9kcyI+CisgIDx0aXRs ZT5QZXJpb2RzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJlIGRlZmluaXRp b25zIG9uIGEgdGFibGUgdGhhdCBhc3NvY2lhdGUgYSBwZXJpb2QgbmFtZSB3aXRoIGEgc3Rh cnQKKyAgIGNvbHVtbiBhbmQgYW4gZW5kIGNvbHVtbi4gIEJvdGggY29sdW1ucyBtdXN0IGJl IG9mIGV4YWN0bHkgdGhlIHNhbWUgdHlwZQorICAgKGluY2x1ZGluZyBjb2xsYXRpb24pLCBo YXZlIGEgYnRyZWUgb3BlcmF0b3IgY2xhc3MsIGFuZCB0aGUgc3RhcnQgY29sdW1uCisgICB2 YWx1ZSBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGNvbHVtbiB2YWx1ZS4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBwZXJp b2RzOiBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtLiAgU3lzdGVtIHBlcmlvZHMgYXJlCisgICBk aXN0aW5ndWlzaGVkIGJ5IHRoZWlyIG5hbWUgd2hpY2ggbXVzdCBiZSA8bGl0ZXJhbD5TWVNU RU1fVElNRTwvbGl0ZXJhbD4uICBBbnkKKyAgIG90aGVyIG5hbWUgaXMgYW4gYXBwbGljYXRp b24gcGVyaW9kLgorICA8L3BhcmE+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1hcHBs aWNhdGlvbi1wZXJpb2RzIj4KKyAgPHRpdGxlPkFwcGxpY2F0aW9uIFBlcmlvZHM8L3RpdGxl PgorCisgICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAg ICA8c2Vjb25kYXJ5PmFwcGxpY2F0aW9uPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4K KworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBhcmUgZGVmaW5lZCBvbiBh IHRhYmxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorICAgPC9wYXJhPgorCis8cHJv Z3JhbWxpc3Rpbmc+CitDUkVBVEUgVEFCTEUgYmlsbGluZ19hZGRyZXNzZXMgKAorICBjdXN0 b21lcl9pZCBpbnRlZ2VyLAorICBhZGRyZXNzX2lkIGludGVnZXIsCisgIHZhbGlkX2Zyb20g ZGF0ZSwKKyAgdmFsaWRfdG8gZGF0ZSwKKyAgPGVtcGhhc2lzPlBFUklPRCBGT1IgdmFsaWRp dHkgKHZhbGlkX2Zyb20sIHZhbGlkX3RvKTwvZW1waGFzaXM+CispOworPC9wcm9ncmFtbGlz dGluZz4KKworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBjYW4gYmUgdXNl ZCB0byBkZWZpbmUgdGVtcG9yYWwgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLgorICAgIEFu eSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgaXMgYSB0ZW1wb3JhbCB0YWJs ZSBhbmQgc3VwcG9ydHMgdGVtcG9yYWwgdXBkYXRlIGFuZCBkZWxldGUgY29tbWFuZHMuCisg ICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0 ZW0tcGVyaW9kcyI+CisgICA8dGl0bGU+U3lzdGVtIFBlcmlvZHM8L3RpdGxlPgorCisgICA8 aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAgICA8c2Vjb25k YXJ5PnN5c3RlbTwvc2Vjb25kYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgor ICAgIFBlcmlvZHMgZm9yIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBhcmUgY3Vy cmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyA8L3Nl Y3QxPgorCiAgPHNlY3QxIGlkPSJkZGwtc3lzdGVtLWNvbHVtbnMiPgogICA8dGl0bGU+U3lz dGVtIENvbHVtbnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5mb3Jt YXRpb25fc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNn bWwKaW5kZXggZDU3YTEzMjM0MC4uOGNjOTUyYTA4NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbmZvcm1h dGlvbl9zY2hlbWEuc2dtbApAQCAtNDE2Miw2ICs0MTYyLDY5IEBAIE9SREVSIEJZIGMub3Jk aW5hbF9wb3NpdGlvbjsKICAgPC90YWJsZT4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJp bmZvc2NoZW1hLXBlcmlvZHMiPgorICA8dGl0bGU+PGxpdGVyYWw+cGVyaW9kczwvbGl0ZXJh bD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGFyYW1ldGVy czwvbGl0ZXJhbD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICBwZXJpb2Rz IG9mIGFsbCB0YWJsZXMgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuICBUaGUgc3RhcnQgYW5k IGVuZCBjb2x1bW4KKyAgIG5hbWVzIGFyZSBvbmx5IHNob3duIGlmIHRoZSBjdXJyZW50IHVz ZXIgaGFzIGFjY2VzcyB0byB0aGVtIChieSB3YXkgb2YgYmVpbmcKKyAgIHRoZSBvd25lciBv ciBoYXZpbmcgc29tZSBwcml2aWxlZ2UpLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgorCisg ICA8dGdyb3VwIGNvbHM9IjMiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EYXRhIFR5cGU8L2VudHJ5PgorICAg ICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVh ZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50 YWJsZV9jYXRhbG9nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3Fs X2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBk YXRhYmFzZSBjb250YWluaW5nIHRoZSBwZXJpb2QgKGFsd2F5cyB0aGUgY3VycmVudCBkYXRh YmFzZSk8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPnRhYmxlX3NjaGVtYTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFt ZSBvZiB0aGUgc2NoZW1hIGNvbnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVfbmFtZTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmlu ZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5wZXJpb2RfbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50 cnk+TmFtZSBvZiB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5zdGFydF9jb2x1bW5fbmFtZTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgc3RhcnQgY29sdW1uIGZvciB0aGUgcGVy aW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5lbmRfY29sdW1uX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5h bWUgb2YgdGhlIGVuZCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jv dz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4K KwogIDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1yZWZlcmVudGlhbC1jb25zdHJhaW50cyI+CiAg IDx0aXRsZT48bGl0ZXJhbD5yZWZlcmVudGlhbF9jb25zdHJhaW50czwvbGl0ZXJhbD48L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggMmM0MTM4ZTRlOS4u YWVlOTg2ZWZkNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNjAsNiAr NjAsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05TVFJBSU5UIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2Vh YmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVS UkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVT VFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxlPiwgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2VhYmxlPiApIFsg V0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1IgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNU UklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVT RVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBdCiAgICAgRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJp Z2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU3MSw2ICs1NzMsMjkgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtYWRkLXBlcmlv ZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVyYWw+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gYWRkcyBh IG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMKKyAgICAg IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVy YWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZpZWQgcGVyaW9k IG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1ucyB3aWxsIG5v dCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8bGl0ZXJhbD5D SEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwgbmVlZCB0byBz YXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRoaW5nIG91dHNp ZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUtdHJpZ2dlciI+ CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVyYWw+RU5BQkxF IFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIxMy4uNDljMmRm OTk0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKQEAgLTQ0LDYgKzQ0LDcgQEAgQ09NTUVO VCBPTgogICBPUEVSQVRPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3JfbmFtZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bGVmdF90eXBlPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yaWdodF90eXBlPC9yZXBsYWNlYWJsZT4pIHwKICAgT1BFUkFUT1IgQ0xBU1MgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJ TkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFj ZWFibGU+IHwKICAgT1BFUkFUT1IgRkFNSUxZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiB8CisgIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVsYXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFj ZWFibGU+IHwKICAgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wb2xp Y3lfbmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBbIFBST0NFRFVSQUwgXSBMQU5HVUFH RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2Vh YmxlPiB8CiAgIFBST0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJv Y2VkdXJlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0gfApA QCAtMzQxLDYgKzM0Miw3IEBAIENPTU1FTlQgT04gT1BFUkFUT1IgXiAodGV4dCwgdGV4dCkg SVMgJ1BlcmZvcm1zIGludGVyc2VjdGlvbiBvZiB0d28gdGV4dHMnOwogQ09NTUVOVCBPTiBP UEVSQVRPUiAtIChOT05FLCBpbnRlZ2VyKSBJUyAnVW5hcnkgbWludXMnOwogQ09NTUVOVCBP TiBPUEVSQVRPUiBDTEFTUyBpbnQ0b3BzIFVTSU5HIGJ0cmVlIElTICc0IGJ5dGUgaW50ZWdl ciBvcGVyYXRvcnMgZm9yIGJ0cmVlcyc7CiBDT01NRU5UIE9OIE9QRVJBVE9SIEZBTUlMWSBp bnRlZ2VyX29wcyBVU0lORyBidHJlZSBJUyAnYWxsIGludGVnZXIgb3BlcmF0b3JzIGZvciBi dHJlZXMnOworQ09NTUVOVCBPTiBQRVJJT0QgbXlfdGFibGUubXlfY29sdW1uIElTICdTYWxl cyBwcm9tb3Rpb24gdmFsaWRpdHknOwogQ09NTUVOVCBPTiBQT0xJQ1kgbXlfcG9saWN5IE9O IG15dGFibGUgSVMgJ0ZpbHRlciByb3dzIGJ5IHVzZXJzJzsKIENPTU1FTlQgT04gUFJPQ0VE VVJFIG15X3Byb2MgKGludGVnZXIsIGludGVnZXIpIElTICdSdW5zIGEgcmVwb3J0JzsKIENP TU1FTlQgT04gUFVCTElDQVRJT04gYWxsdGFibGVzIElTICdQdWJsaXNoZXMgYWxsIG9wZXJh dGlvbnMgb24gYWxsIHRhYmxlcyc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCAyOGNiYmZiOWFhLi42ZDJhNzdlNDc3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Rh YmxlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8 c3lub3BzaXM+CiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbCiAgIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFi bGU+IFsgU1RPUkFHRSB7IFBMQUlOIHwgRVhURVJOQUwgfCBFWFRFTkRFRCB8IE1BSU4gfCBE RUZBVUxUIH0gXSBbIENPTVBSRVNTSU9OIDxyZXBsYWNlYWJsZT5jb21wcmVzc2lvbl9tZXRo b2Q8L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9y ZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f Y29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxl PnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50 YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4KICAgICB8IExJS0UgPHJlcGxhY2VhYmxl PnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmxpa2Vfb3B0aW9u PC9yZXBsYWNlYWJsZT4gLi4uIF0gfQogICAgIFssIC4uLiBdCkBAIC0zNyw2ICszOCw3IEBA IENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVO TE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FM IF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4KICAgICBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFi bGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0aW9uPC9y ZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBs YWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0KQEAgLTQ5LDYgKzUxLDcgQEAgQ1JFQVRF IFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQg XSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PgogICAgIFBBUlRJVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy ZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVw bGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0 aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50 PC9yZXBsYWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0geyBGT1IgVkFMVUVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFj ZWFibGU+IHwgREVGQVVMVCB9CkBAIC03Myw2ICs3NiwxMSBAQCBDUkVBVEUgWyBbIEdMT0JB TCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsg SUYgTk9UIEVYSQogICAgIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxh Y2VhYmxlPiBdIH0KIFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFM TFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0KIAorPHBocmFzZT5hbmQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNl YWJsZT4gaXM6PC9waHJhc2U+CisKK1BFUklPRCBGT1IgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZU1RFTV9USU1FIH0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gKQorWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBl cmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfY29uc3RyYWludDwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCiBbIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IF0KQEAgLTE0NCw2 ICsxNTIsMTQgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIG5hbWUgYXMgYW55 IGV4aXN0aW5nIGRhdGEgdHlwZSBpbiB0aGUgc2FtZSBzY2hlbWEuCiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFBlcmlvZHMgbXkgYmUgZGVmaW5lZCBvbiB0YWJsZXMsIHNwZWNpZnlp bmcgdGhhdCB0d28gZXhpc3RpbmcgY29sdW1ucworICAgcmVwcmVzZW50IHN0YXJ0IGFuZCBl bmQgdmFsdWVzIGZvciB0aGUgcGVyaW9kLiAgUGVyaW9kcyBtYXkgaGF2ZSBhbnkgbmFtZQor ICAgdGhhdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYSBjb2x1bW4gbmFtZSwgYnV0IHRoZSBu YW1lCisgICA8bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gaXMgc3BlY2lhbCwgdXNl ZCBmb3IgdmVyc2lvbmluZyB0YWJsZXMuCisgICBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IHll dCBpbXBsZW1lbnRlZC4gIFNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPiBmb3Ig bW9yZSBkZXRhaWxzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwg Y29uc3RyYWludCBjbGF1c2VzIHNwZWNpZnkgY29uc3RyYWludHMgKHRlc3RzKSB0aGF0CiAg ICBuZXcgb3IgdXBkYXRlZCByb3dzIG11c3Qgc2F0aXNmeSBmb3IgYW4gaW5zZXJ0IG9yIHVw ZGF0ZSBvcGVyYXRpb24KQEAgLTgwNCw2ICs4MjAsMzAgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1wZXJpb2QiPgorICAgIDx0 ZXJtPjxsaXRlcmFsPlBFUklPRCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gKSBbIFdJVEggKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQSBwZXJpb2QgZGVmaW5pdGlvbiBnaXZlcyBzZW1hbnRpYyBtZWFuaW5nIHRv IHR3byBleGlzdGluZyBjb2x1bW5zIG9mCisgICAgICB0aGUgdGFibGUuICBJdCBkZWZpbmVz IGEgInN0YXJ0IGNvbHVtbiIgYW5kIGFuICJlbmQgY29sdW1uIiB3aGVyZSB0aGUKKyAgICAg IHN0YXJ0IHZhbHVlIGlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIHZhbHVlLiAgQQor ICAgICAgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXMgYXV0b21hdGlj YWxseSBjcmVhdGVkIHRvIGVuZm9yY2UKKyAgICAgIHRoaXMuIFlvdSBjYW4gc3BlY2lmeSB0 aGUgbmFtZSBvZiB0aGF0IGNvbnN0cmFpbnQgd2l0aCB0aGUKKyAgICAgIDxsaXRlcmFsPmNo ZWNrX2NvbnN0cmFpbnRfbmFtZTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgQm90aCBjb2x1bW5zIG11c3QgaGF2ZSBleGFjdGx5IHRoZSBz YW1lIHR5cGUgYW5kIG11c3QgaGF2ZSBhIHJhbmdlIHR5cGUKKyAgICAgIGRlZmluZWQgZnJv bSB0aGVpciBiYXNlIHR5cGUuICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCByYW5nZSB0eXBlcyBm b3IgdGhhdAorICAgICAgYmFzZSB0eXBlLCB5b3UgbXVzdCBzcGVjaWZ5IHdoaWNoIG9uZSB5 b3Ugd2FudCBieSB1c2luZyB0aGUKKyAgICAgIDxsaXRlcmFsPnJhbmdldHlwZTwvbGl0ZXJh bD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxh Y2VhYmxlPi4KKyAgICAgIEFueSBiYXNlIHR5cGUgaXMgYWxsb3dlZCwgYXMgbG9uZyBhcyBp dCBoYXMgYSByYW5nZSB0eXBlLCBhbHRob3VnaCBpdCBpcworICAgICAgZXhwZWN0ZWQgdGhh dCBtb3N0IHBlcmlvZHMgd2lsbCB1c2UgdGVtcG9yYWwgdHlwZXMgbGlrZSA8bGl0ZXJhbD50 aW1lc3RhbXB0ejwvbGl0ZXJhbD4KKyAgICAgIG9yIDxsaXRlcmFsPmRhdGU8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtY29uc3RyYWlu dCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv TWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IDNlOTk5NDc5 M2QuLjUwMGI4MGZkMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBA QCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19w YXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1 YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFM T0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3Jh bmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCmluZGV4IGQxZjVkY2Q4YmUuLmJkMTNmMTZiODYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9h Y2xjaGsuYwpAQCAtMjc5MSw2ICsyNzkxLDcgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0 IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9ERUZBVUxU OgogCQkJCQljYXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNUX0RPTUNPTlNU UkFJTlQ6CisJCQkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fTkFNRVNQQUNFOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6 CiAJCQkJCWNhc2UgT0JKRUNUX1JPTEU6CkBAIC0yOTMyLDYgKzI5MzMsNyBAQCBhY2xjaGVj a19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNh c2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ CQkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9E OgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2Ug T0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggZjhhMTM2YmEwYS4uMjMyZjc3Yzk2ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgc3RhdGljIGNvbnN0IE9pZCBvYmpl Y3RfY2xhc3Nlc1tdID0gewogCUNhc3RSZWxhdGlvbklkLAkJCQkvKiBPQ0xBU1NfQ0FTVCAq LwogCUNvbGxhdGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09MTEFUSU9OICovCiAJQ29u c3RyYWludFJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09OU1RSQUlOVCAqLworCVBlcmlvZFJl bGF0aW9uSWQsCQkJLyogT0NMQVNTX1BFUklPRCAqLwogCUNvbnZlcnNpb25SZWxhdGlvbklk LAkJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAlBdHRyRGVmYXVsdFJlbGF0aW9uSWQsCQkv KiBPQ0xBU1NfREVGQVVMVCAqLwogCUxhbmd1YWdlUmVsYXRpb25JZCwJCQkvKiBPQ0xBU1Nf TEFOR1VBR0UgKi8KQEAgLTE0NDMsNiArMTQ0NSwxMCBAQCBkb0RlbGV0aW9uKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJUmVtb3ZlQ29uc3RyYWludEJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQlSZW1vdmVQZXJpb2RCeUlkKG9iamVjdC0+b2JqZWN0SWQpOworCQkJYnJlYWs7 CisKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJCVJlbW92ZUF0dHJEZWZhdWx0QnlJZChv YmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwpAQCAtMjg2Miw2ICsyODY4LDkgQEAgZ2V0 T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQljYXNlIENvbnN0 cmFpbnRSZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19DT05TVFJBSU5UOwogCisJCWNh c2UgUGVyaW9kUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfUEVSSU9EOworCiAJCWNh c2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlZFUlNJT047 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNzE0OGRkMTc4Ny4uYWU3ZGEwZTgyMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25h bWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190YWJsZXNwYWNlLmgiCkBAIC0yMDM5LDYgKzIwNDAsODEgQEAgU2V0QXR0ck1pc3Npbmco T2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0 YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBl cmlvZCBvZiByZWxhdGlvbiByZWwuCisgKgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBu ZXcgcGdfcGVyaW9kIHR1cGxlLgorICovCitPaWQKK1N0b3JlUGVyaW9kKFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgQXR0ck51bWJlciBzdGFydG51bSwKKwkJCUF0 dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKQorewor CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcGVyaW9kXTsKKwlib29sCQludWxsc1tOYXR0c19w Z19wZXJpb2RdOworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJ T2lkCQkJb2lkOworCU5hbWVEYXRhCXBlcm5hbWU7CisJT2JqZWN0QWRkcmVzcwlteXNlbGYs IHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQocmFuZ2VudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIp OworCisJbmFtZXN0cmNweSgmcGVybmFtZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFs dWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3Bl cmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRleElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsK Kwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZw ZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0 aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAx XSA9IHN0YXJ0bnVtOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVu ZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmFuZ2UgLSAxXSA9IHJhbmdlbnVt OworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7 CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3Blcmlv ZCksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChwZ19wZXJpb2QsIHR1 cGxlKTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBQZXJpb2RSZWxhdGlvbklkLCBv aWQpOworCisJLyogRHJvcCB0aGUgcGVyaW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRyb3BwZWQu ICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYs ICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5n IHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJpb2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChy ZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg c3RhcnRudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwg REVQRU5ERU5DWV9OT1JNQUwpOworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwg UmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJ cmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05P Uk1BTCk7CisKKwkvKgorCSAqIFRoZSByYW5nZSBjb2x1bW4gaXMgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBjYW4ndCB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTAor CSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhlIHRhYmxlIHdpbGwgY2hlY2sgZm9yIGRlcGVuZGVu Y2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0b28KKwkgKiAoaW4gZmluZERlcGVuZGVudE9iamVj dHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtlIGFuIEFVVE8gZGVwZW5kZW5jeSBvbmUgd2F5IHdl IHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1bW4KKwkgKiB3aGVuIHdlIGRyb3AgdGhlIFBFUklP RCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVwZW5kZW5jeSB0aGUgb3RoZXIgd2F5IHdlIHdpbGwg Zm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW4gZGlyZWN0bHkuCisJICovCisJT2JqZWN0QWRk cmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgcmFuZ2VudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNl ZCwgJm15c2VsZiwgREVQRU5ERU5DWV9BVVRPKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15 c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qCisJICogVGhl IGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyB3ZSBtYXJrIGl0 IGFzIHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYgYW5kIHJlZmVyZW5jZWQgYXJlIHJl dmVyc2VkIGZvciB0aGlzIG9uZS4pCisJICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVu Y2VkLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29ub2lkKTsKKwlyZWNvcmREZXBlbmRlbmN5 T24oJnJlZmVyZW5jZWQsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCisJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBvaWQ7 Cit9CisKIC8qCiAgKiBTdG9yZSBhIGNoZWNrLWNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmb3Ig dGhlIGdpdmVuIHJlbGF0aW9uLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbAppbmRleCAxMGIzNGMzYzViLi4xMTA0MzMxMjg5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCkBAIC0xMjEwLDcg KzEyMTAsMjggQEAgR1JBTlQgU0VMRUNUIE9OIHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICog UEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVhdHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUg VklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNUIGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3Jt YXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAg ICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0 YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMucmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1h LnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25hbWUsCisgICAgICAgICAgIHAucGVybmFtZTo6 aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAg ICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAg ICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBz YS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAg ICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRl bnRpZmllcgorICAgICAgICAgICBFTkQgQVMgc3RhcnRfY29sdW1uX25hbWUsCisgICAgICAg ICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0 dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAg ICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyCisgICAgICAgICAgIEVORCBBUyBlbmRfY29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3Bl cmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFzcyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxp ZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFTIG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNw YWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5h dHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1 dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAu cGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQp CisgICAgICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBP TiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggZmE2NjA5ZTU3Ny4uYzQ5OWNkMmY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1 aWxkCkBAIC0yNiw2ICsyNiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3Bn X25hbWVzcGFjZS5jJywKICAgJ3BnX29wZXJhdG9yLmMnLAogICAncGdfcGFyYW1ldGVyX2Fj bC5jJywKKyAgJ3BnX3BlcmlvZC5jJywKICAgJ3BnX3Byb2MuYycsCiAgICdwZ19wdWJsaWNh dGlvbi5jJywKICAgJ3BnX3JhbmdlLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYwppbmRleCA3MTUyMDFmNWEyLi5mNWY4OGQ1ZmRkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24u aCIKQEAgLTczNiw2ICs3MzcsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlw ZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIsIE9CSkVDVF9ET01DT05TVFJBSU5U CiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJeworCQkicGVyaW9kIiwgT0JKRUNUX1BF UklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAl7CiAJCSJjb252ZXJzaW9u IiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEwMTQsNiArMTAxOSw3IEBAIGdldF9vYmplY3Rf YWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVjdCwKIAkJCWNhc2UgT0JK RUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgogCQkJY2FzZSBP QkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCWFkZHJlc3MgPSBn ZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9i amVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLCBtaXNzaW5nX29rKTsKIAkJCQli cmVhazsKQEAgLTE1MTIsNiArMTUxOCwxMyBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2Jq ZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2JqZWN0LAogCQkJCUludmFsaWRPaWQ7 CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVD VF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQkJ YWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9uID8KKwkJCQlnZXRfcmVsYXRpb25fcGVyaW9k X29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Npbmdfb2spIDoKKwkJCQlJbnZhbGlkT2lkOwor CQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgKGludCkgb2Jq dHlwZSk7CiAJfQpAQCAtMjMyOSw2ICsyMzQyLDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1JVTEU6CiAJCWNhc2UgT0JKRUNU X1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNU X1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1J TFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKQEAgLTI0MzksNiArMjQ1Myw3IEBA IGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNh c2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2Fz ZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJl bGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pLCByb2xlaWQpKQogCQkJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwKIAkJCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwpAQCAtMzA4Nyw2ICszMTAyLDM4 IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwg Ym9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BF UklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9k IHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJ CQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICgh SGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsK KwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJ aWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJCQkJeworCQkJCQlTdHJpbmdJbmZv RGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJnJlbCk7CisJCQkJCWdldFJlbGF0 aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5wZXJyZWxpZCwgZmFsc2UpOworCQkJCQlhcHBl bmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyBvbiAlcyIpLAorCQkJCQkJCQkJ IE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVsLmRhdGEpOworCQkJCQlwZnJlZShyZWwuZGF0 YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJCQkJCQkgTmFtZVN0cihwZXItPnBlcm5hbWUp KTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsK KwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBs ZQljb25UdXA7CkBAIC00NDUxLDYgKzQ0OTgsMTAgQEAgZ2V0T2JqZWN0VHlwZURlc2NyaXB0 aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJ CQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklP RDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInBlcmlvZCIpOworCQkJ YnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsKIAkJCWJyZWFrOwpAQCAtNDk1OCw2 ICs1MDA5LDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsK KworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJ IE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlw ZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZp ZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgm YnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpuYW1lLCBmYWxzZSk7CisJCQkJaWYgKG9iam5h bWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2JqbmFtZSwgcHN0cmR1cChOYW1lU3Ry KHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXApOworCQkJ CWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQl7CiAJCQkJ SGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2NWI1YjY3NWUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEsMTMyIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICByb3V0 aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9u CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nl c3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVs LmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworCisvKgorICogRGVsZXRlIGEg c2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lk IHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwOwor CisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVjdElk R2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyog c2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVyaW9kIGl0 c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2VsZik7 CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Ns b3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVs YXRpb25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCBy ZWxhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdz IE9JRC4KKyAqLworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNv bnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19w ZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2Nhbktl eURhdGEgc2tleVsyXTsKKwlPaWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmV0 Y2ggdGhlIHBlcmlvZCB0dXBsZSBmcm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJpb2QgPSB0 YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2Fu S2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShy ZWxpZCkpOworCVNjYW5LZXlJbml0KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVyaW9kX3Bl cm5hbWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3Ry aW5nR2V0RGF0dW0ocGVybmFtZSkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihw Z19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxM LCAyLCBza2V5KTsKKworCS8qIFRoZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRjaGluZyBy b3cgKi8KKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQo c2NhbikpKQorCQlwZXJPaWQgPSAoKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUp KS0+b2lkOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2gg cGVyaW9kIGV4aXN0cywgY29tcGxhaW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAm JiAhbWlzc2luZ19vaykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRh YmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25h bWUocmVsaWQpKSkpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHBlck9pZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2RfYXR0bm9z CisgKgkJR2V0IHRoZSBhdHRubyBvZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBjb2x1bW4K KyAqCQlmb3IgYWxsIFBFUklPRHMgaW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJuIEJpdG1h cHNldAorKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBzZXQgKmF0 dG5vcyA9IE5VTEw7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsK KwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlwZ19wZXJp b2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShyZWxpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2Qs IFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCBza2V5 KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4 dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9wZ19wZXJp b2QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoYXR0 bm9zLCBwZXJpb2QtPnBlcnJhbmdlKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4p OworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVy biBhdHRub3M7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXgg YjMzMDY1ZDdiZi4uNzc1MDkwYTZlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dApAQCAtNDQ5LDcgKzQ0OSw3IEBAIFQxNzYJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1 cHBvcnQJCQlOTwlzdXBwb3J0ZWQgZXhjZXB0IGZvciBORVhUIFZBTFVFIEZPUgogVDE3NwlT ZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydDogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVT CQogVDE3OAlJZGVudGl0eSBjb2x1bW5zOiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJ CiBUMTgwCVN5c3RlbS12ZXJzaW9uZWQgdGFibGVzCQkJTk8JCi1UMTgxCUFwcGxpY2F0aW9u LXRpbWUgcGVyaW9kIHRhYmxlcwkJCU5PCQorVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlv ZCB0YWJsZXMJCQlZRVMJCiBUMTkxCVJlZmVyZW50aWFsIGFjdGlvbiBSRVNUUklDVAkJCVlF UwkKIFQyMDAJVHJpZ2dlciBEREwJCQlOTwlzaW1pbGFyIGJ1dCBub3QgZnVsbHkgY29tcGF0 aWJsZQogVDIwMQlDb21wYXJhYmxlIGRhdGEgdHlwZXMgZm9yIHJlZmVyZW50aWFsIGNvbnN0 cmFpbnRzCQkJWUVTCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKaW5kZXggZmY4ZDAwMzg3Ni4uMmVi ZTQ1ODY0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC02NjksNiArNjY5LDcgQEAgQWx0 ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BP aWQsCiAKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoK KwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNl IE9DTEFTU19MQU5HVUFHRToKIAkJY2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb21tZW50LmMKaW5kZXggMjZjNGQ1OTIwMi4uNDUyYWYxZDQxMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbW1lbnQuYwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENv bW1lbnRTdG10ICpzdG10KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpLAogCQkJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRp b24tPnJkX3JlbC0+cmVsa2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BF UklPRDoKKwkJCS8qIFBlcmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAo cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRl ZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA0 NjlhNmMyZWU5Li4xYjk3NTRlOTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAg LTUwOSw2ICs1MDksNyBAQCBkb2VzX25vdF9leGlzdF9za2lwcGluZyhPYmplY3RUeXBlIG9i anR5cGUsIE5vZGUgKm9iamVjdCkKIAkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ Y2FzZSBPQkpFQ1RfTEFSR0VPQkpFQ1Q6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6 CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFN RVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCWNhc2UgT0JKRUNU X1RBQkNPTlNUUkFJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggYmQ4MTJlNDJkOS4uMjBkNjg3YjRmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYwpAQCAtOTc2LDYgKzk3Niw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2Jq ZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJ Y2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNl IE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1Rf UFJPQ0VEVVJFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKQEAgLTEwMzQsNiArMTAz NSw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0Q2xhc3MoT2JqZWN0Q2xhc3Mgb2Jq Y2xhc3MpCiAJCWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTExBVElPTjoK IAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQlj YXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNl IE9DTEFTU19MQU5HVUFHRToKQEAgLTIwNzUsNiArMjA3Nyw3IEBAIHN0cmluZ2lmeV9ncmFu dF9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoK IAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQlj YXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpF Q1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToK QEAgLTIxNTksNiArMjE2Miw3IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmpl Y3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVD VF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpF Q1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJ Q0FUSU9OOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc2VjbGFiZWwuYwppbmRleCA3ZmYxNmUzMjc2Li4zZGRjOTk1ODFhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlY2xhYmVsLmMKQEAgLTc5LDYgKzc5LDcgQEAgU2VjTGFiZWxTdXBwb3J0 c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUEVSQVRP UjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9B Q0w6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQlj YXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1BVQkxJ Q0FUSU9OX1JFTDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggYjlkZDU0MDQ5 Mi4uNWFlMGYxMTM2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQzLDYg KzQzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xh c3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFj ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgpAQCAtMTQ5LDEzICsxNTAs MTggQEAgc3RhdGljIExpc3QgKm9uX2NvbW1pdHMgPSBOSUw7CiAjZGVmaW5lIEFUX1BBU1Nf T0xEX0NPTlNUUgkJMwkvKiByZS1hZGQgZXhpc3RpbmcgY29uc3RyYWludHMgKi8KIC8qIFdl IGNvdWxkIHN1cHBvcnQgYSBSRU5BTUUgQ09MVU1OIHBhc3MgaGVyZSwgYnV0IG5vdCBjdXJy ZW50bHkgdXNlZCAqLwogI2RlZmluZSBBVF9QQVNTX0FERF9DT0wJCQk0CS8qIEFERCBDT0xV TU4gKi8KLSNkZWZpbmUgQVRfUEFTU19BRERfQ09OU1RSCQk1CS8qIEFERCBjb25zdHJhaW50 cyAoaW5pdGlhbCBleGFtaW5hdGlvbikgKi8KLSNkZWZpbmUgQVRfUEFTU19DT0xfQVRUUlMJ CTYJLyogc2V0IGNvbHVtbiBhdHRyaWJ1dGVzLCBlZyBOT1QgTlVMTCAqLwotI2RlZmluZSBB VF9QQVNTX0FERF9JTkRFWENPTlNUUgk3CS8qIEFERCBpbmRleC1iYXNlZCBjb25zdHJhaW50 cyAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9JTkRFWAkJOAkvKiBBREQgaW5kZXhlcyAqLwot I2RlZmluZSBBVF9QQVNTX0FERF9PVEhFUkNPTlNUUgk5CS8qIEFERCBvdGhlciBjb25zdHJh aW50cywgZGVmYXVsdHMgKi8KLSNkZWZpbmUgQVRfUEFTU19NSVNDCQkJMTAJLyogb3RoZXIg c3R1ZmYgKi8KLSNkZWZpbmUgQVRfTlVNX1BBU1NFUwkJCTExCisvKgorICogV2UgbXVzdCBh ZGQgUEVSSU9EcyBhZnRlciBjb2x1bW5zLCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNlIGEgbmV3 bHktYWRkZWQgY29sdW1uLAorICogYW5kIGJlZm9yZSBjb25zdHJhaW50cywgaW4gY2FzZSBh IG5ld2x5LWFkZGVkIFBLL0ZLIHJlZmVyZW5jZXMgdGhlbS4KKyAqLworI2RlZmluZSBBVF9Q QVNTX0FERF9QRVJJT0QJCTUJLyogQUREIFBFUklPRCAqLworI2RlZmluZSBBVF9QQVNTX0FE RF9DT05TVFIJCTYJLyogQUREIGNvbnN0cmFpbnRzIChpbml0aWFsIGV4YW1pbmF0aW9uKSAq LworI2RlZmluZSBBVF9QQVNTX0NPTF9BVFRSUwkJNwkvKiBzZXQgY29sdW1uIGF0dHJpYnV0 ZXMsIGVnIE5PVCBOVUxMICovCisjZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYQ09OU1RSCTgJ LyogQUREIGluZGV4LWJhc2VkIGNvbnN0cmFpbnRzICovCisjZGVmaW5lIEFUX1BBU1NfQURE X0lOREVYCQk5CS8qIEFERCBpbmRleGVzICovCisjZGVmaW5lIEFUX1BBU1NfQUREX09USEVS Q09OU1RSCTEwCS8qIEFERCBvdGhlciBjb25zdHJhaW50cywgZGVmYXVsdHMgKi8KKyNkZWZp bmUgQVRfUEFTU19NSVNDCQkJMTEJLyogb3RoZXIgc3R1ZmYgKi8KKyNkZWZpbmUgQVRfTlVN X1BBU1NFUwkJCTEyCiAKIHR5cGVkZWYgc3RydWN0IEFsdGVyZWRUYWJsZUluZm8KIHsKQEAg LTM1NCw2ICszNjAsNyBAQCBzdGF0aWMgdm9pZCBSYW5nZVZhckNhbGxiYWNrRm9yVHJ1bmNh dGUoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogc3RhdGljIExpc3QgKk1lcmdlQXR0cmli dXRlcyhMaXN0ICpzY2hlbWEsIExpc3QgKnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwK IAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24sIExpc3QgKipzdXBjb25zdHIsCiAJCQkJCQkJ IExpc3QgKipzdXBub3RudWxscyk7CitzdGF0aWMgTGlzdCAqTWVyZ2VQZXJpb2RzKGNoYXIg KnJlbG5hbWUsIExpc3QgKnBlcmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJz KTsKIHN0YXRpYyBib29sIE1lcmdlQ2hlY2tDb25zdHJhaW50KExpc3QgKmNvbnN0cmFpbnRz LCBjaGFyICpuYW1lLCBOb2RlICpleHByKTsKIHN0YXRpYyB2b2lkIE1lcmdlQXR0cmlidXRl c0ludG9FeGlzdGluZyhSZWxhdGlvbiBjaGlsZF9yZWwsIFJlbGF0aW9uIHBhcmVudF9yZWwp Owogc3RhdGljIHZvaWQgTWVyZ2VDb25zdHJhaW50c0ludG9FeGlzdGluZyhSZWxhdGlvbiBj aGlsZF9yZWwsIFJlbGF0aW9uIHBhcmVudF9yZWwpOwpAQCAtNDM1LDYgKzQ0Miw4IEBAIHN0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsCiAJCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0 ICpjb250ZXh0KTsKIHN0YXRpYyBib29sIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9jb2xsaXNp b24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQkJCQlib29s IGlmX25vdF9leGlzdHMpOworc3RhdGljIGJvb2wgY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2Nv bGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCQkJ CWJvb2wgaWZfbm90X2V4aXN0cyk7CiBzdGF0aWMgdm9pZCBhZGRfY29sdW1uX2RhdGF0eXBl X2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBhdHRudW0sIE9pZCB0eXBpZCk7CiBzdGF0 aWMgdm9pZCBhZGRfY29sdW1uX2NvbGxhdGlvbl9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50 MzIgYXR0bnVtLCBPaWQgY29sbGlkKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Ry b3BOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwgYm9vbCByZWN1 cnNlLApAQCAtNDU0LDYgKzQ2MywxMiBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWND b2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ CQkJCQkgTm9kZSAqbmV3RGVmYXVsdCwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9i amVjdEFkZHJlc3MgQVRFeGVjQ29va2VkQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0 dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCQkJCQkgICBOb2RlICpuZXdEZWZhdWx0KTsKK3N0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlv ZERlZiAqcGVyaW9kLAorCQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAor CQkJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkJCSBib29sIG1p c3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkSWRlbnRpdHkoUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQkJCQkJICAgTm9kZSAqZGVm LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRJ ZGVudGl0eShSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCkBAIC02NjIsNiAr Njc3LDEwIEBAIHN0YXRpYyBMaXN0ICpHZXRQYXJlbnRlZEZvcmVpZ25LZXlSZWZzKFJlbGF0 aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5 UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29t cHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0 aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAq c3RvcmFnZW1vZGUpOworc3RhdGljIHZvaWQgQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRp b24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgdm9pZCBWYWxpZGF0ZVBlcmlv ZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kKTsKK3N0YXRpYyBDb25zdHJhaW50 ICptYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAq cGVyaW9kKTsKK3N0YXRpYyBDb2x1bW5EZWYgKm1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJp b2QoUGVyaW9kRGVmICpwZXJpb2QpOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTg5MCw2ICs5 MDksMjYgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5k LCBPaWQgb3duZXJJZCwKIAkJCQkJCXN0bXQtPnBhcnRib3VuZCAhPSBOVUxMLAogCQkJCQkJ Jm9sZF9jb25zdHJhaW50cywgJm9sZF9ub3RudWxscyk7CiAKKwkvKgorCSAqIFVzaW5nIHRo ZSBjb2x1bW4gbGlzdCAoaW5jbHVkaW5nIGluaGVyaXRlZCBjb2x1bW5zKSwKKwkgKiBmaW5k IHRoZSBzdGFydC9lbmQgY29sdW1ucyBmb3IgZWFjaCBwZXJpb2QuCisJICogUEVSSU9EcyBz aG91bGQgYmUgaW5oZXJpdGVkIHRvbyAoYnV0IGFyZW4ndCB5ZXQpLgorCSAqLworCXN0bXQt PnBlcmlvZHMgPSBNZXJnZVBlcmlvZHMocmVsbmFtZSwgc3RtdC0+cGVyaW9kcywgc3RtdC0+ dGFibGVFbHRzLCBpbmhlcml0T2lkcyk7CisKKwkvKgorCSAqIEZvciBlYWNoIFBFUklPRCB3 ZSBuZWVkIHRvIGNyZWF0ZSBhIEdFTkVSQVRFRCBjb2x1bW4sCisJICogc28gYWRkIHRob3Nl IHRvIHRhYmxlRWx0cy4KKwkgKiBUaGVzZSBjb2x1bW5zIGFyZSBub3QgaW5oZXJpdGVkLAor CSAqIHNvIHdlIGRvbid0IHdvcnJ5IGFib3V0IGNvbmZsaWN0cyBpbiB0YWJsZUVsdHMuCisJ ICovCisJZm9yZWFjaChsaXN0cHRyLCBzdG10LT5wZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVm ICpwZXJpb2QgPSAoUGVyaW9kRGVmICopIGxmaXJzdChsaXN0cHRyKTsKKwkJQ29sdW1uRGVm ICpjb2wgPSBtYWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVyaW9kKHBlcmlvZCk7CisJCXN0bXQt PnRhYmxlRWx0cyA9IGxhcHBlbmQoc3RtdC0+dGFibGVFbHRzLCBjb2wpOworCX0KKwogCS8q CiAJICogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBmcm9tIHRoZSByZWxhdGlvbiBzY2hl bWEuICBOb3RlIHRoYXQgdGhpcwogCSAqIGRlYWxzIHdpdGggY29sdW1uIG5hbWVzLCB0eXBl cywgYW5kIGluLWRlc2NyaXB0b3IgTk9UIE5VTEwgZmxhZ3MsIGJ1dApAQCAtMTI4MSw2ICsx MzIwLDIxIEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2lu ZCwgT2lkIG93bmVySWQsCiAJZm9yZWFjaChsaXN0cHRyLCBubmNvbHMpCiAJCXNldF9hdHRu b3RudWxsKE5VTEwsIHJlbCwgbGZpcnN0X2ludChsaXN0cHRyKSwgZmFsc2UsIE5vTG9jayk7 CiAKKwkvKgorCSAqIENyZWF0ZSBwZXJpb2RzIGZvciB0aGUgdGFibGUuIFRoaXMgbXVzdCBj b21lIGFmdGVyIHdlIGNyZWF0ZSBjb2x1bW5zCisJICogYW5kIGJlZm9yZSB3ZSBjcmVhdGUg aW5kZXggY29uc3RyYWludHMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUKKwkgKiBh IENIRUNLIGNvbnN0cmFpbnQgZm9yIHRoZSBwZXJpb2QuCisJICovCisJZm9yZWFjaChsaXN0 cHRyLCBzdG10LT5wZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpwZXJpb2QgPSAoUGVyaW9k RGVmICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkvKiBEb24ndCB1cGRhdGUgdGhlIGNvdW50 IG9mIGNoZWNrIGNvbnN0cmFpbnRzIHR3aWNlICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CisKKwkJQWRkUmVsYXRpb25OZXdQZXJpb2QocmVsLCBwZXJpb2QpOworCX0KKwog CU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCByZWxhdGlv bklkKTsKIAogCS8qCkBAIC0xMjkyLDYgKzEzNDYsMjY0IEBAIERlZmluZVJlbGF0aW9uKENy ZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJcmV0dXJuIGFk ZHJlc3M7CiB9CiAKKy8qCisgKiBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZAorICoKKyAq IEJ1aWxkcyBhIENIRUNLIENvbnN0cmFpbnQgdG8gZW5zdXJlIHN0YXJ0IDwgZW5kLgorICog UmV0dXJucyB0aGUgQ0hFQ0sgQ29uc3RyYWludC4KKyAqIEFsc28gZmlsbHMgaW4gcGVyaW9k LT5jb25zdHJhaW50bmFtZSBpZiBuZWVkZWQuCisgKi8KK3N0YXRpYyBDb25zdHJhaW50ICoK K21ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpw ZXJpb2QpCit7CisJQ29sdW1uUmVmICAqc2NvbCwgKmVjb2w7CisJQ29uc3RyYWludCAqY29u c3RyOworCVR5cGVDYWNoZUVudHJ5ICp0eXBlOworCisJaWYgKHBlcmlvZC0+Y29uc3RyYWlu dG5hbWUgPT0gTlVMTCkKKwkJcGVyaW9kLT5jb25zdHJhaW50bmFtZSA9IENob29zZUNvbnN0 cmFpbnROYW1lKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJCQkJ ICBwZXJpb2QtPnBlcmlvZG5hbWUsCisJCQkJCQkJCQkJCQkJICAiY2hlY2siLAorCQkJCQkJ CQkJCQkJCSAgUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSwKKwkJCQkJCQkJCQkJCQkgIE5J TCk7CisJc2NvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJc2NvbC0+ZmllbGRzID0gbGlz dF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisJ c2NvbC0+bG9jYXRpb24gPSAwOworCisJZWNvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ ZWNvbC0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9kLT5l bmRjb2xuYW1lKSkpOworCWVjb2wtPmxvY2F0aW9uID0gMDsKKworCXR5cGUgPSBsb29rdXBf dHlwZV9jYWNoZShwZXJpb2QtPmNvbHR5cGlkLCBUWVBFQ0FDSEVfTFRfT1BSKTsKKwlpZiAo dHlwZS0+bHRfb3ByID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNv bHVtbiBcIiVzXCIgY2Fubm90IGJlIHVzZWQgaW4gYSBQRVJJT0QgYmVjYXVzZSBpdHMgdHlw ZSAlcyBoYXMgbm8gbGVzcyB0aGFuIG9wZXJhdG9yIiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRj b2xuYW1lLCBmb3JtYXRfdHlwZV9iZShwZXJpb2QtPmNvbHR5cGlkKSkpKTsKKworCWNvbnN0 ciA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCWNvbnN0ci0+Y29udHlwZSA9IENPTlNUUl9D SEVDSzsKKwljb25zdHItPmNvbm5hbWUgPSBwZXJpb2QtPmNvbnN0cmFpbnRuYW1lOworCWNv bnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJY29uc3RyLT5sb2NhdGlvbiA9IC0xOworCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9 IGZhbHNlOworCWNvbnN0ci0+cmF3X2V4cHIgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHBy KEFFWFBSX09QLAorCQkJCQkJCQkJCQkJIGdldF9vcG5hbWUodHlwZS0+bHRfb3ByKSwKKwkJ CQkJCQkJCQkJCSAoTm9kZSAqKSBzY29sLAorCQkJCQkJCQkJCQkJIChOb2RlICopIGVjb2ws CisJCQkJCQkJCQkJCQkgMCk7CisJY29uc3RyLT5jb29rZWRfZXhwciA9IE5VTEw7CisJY29u c3RyLT5za2lwX3ZhbGlkYXRpb24gPSBmYWxzZTsKKwljb25zdHItPmluaXRpYWxseV92YWxp ZCA9IHRydWU7CisKKwlyZXR1cm4gY29uc3RyOworfQorCisvKgorICogbWFrZV9yYW5nZV9j b2x1bW5fZm9yX3BlcmlvZAorICoKKyAqIEJ1aWxkcyBhIEdFTkVSQVRFRCBBTFdBWVMgcmFu Z2UgY29sdW1uIGJhc2VkIG9uIHRoZSBQRVJJT0QKKyAqIHN0YXJ0L2VuZCBjb2x1bW5zLiBS ZXR1cm5zIHRoZSBDb2x1bW5EZWYuCisgKi8KK0NvbHVtbkRlZiAqCittYWtlX3JhbmdlX2Nv bHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKQoreworCWNoYXIgKnJhbmdlX3R5 cGVfbmFtZXNwYWNlOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZTsKKwlDb2x1bW5EZWYgKmNv bCA9IG1ha2VOb2RlKENvbHVtbkRlZik7CisJQ29sdW1uUmVmICpzdGFydHZhciwgKmVuZHZh cjsKKwlFeHByICpyYW5nZUNvbnN0cnVjdG9yOworCisJaWYgKCFnZXRfdHlwbmFtZV9hbmRf bmFtZXNwYWNlKHBlcmlvZC0+cm5ndHlwaWQsICZyYW5nZV90eXBlX25hbWUsICZyYW5nZV90 eXBlX25hbWVzcGFjZSkpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIHJhbmdlIHR5cGUgJWQi LCBwZXJpb2QtPnJuZ3R5cGlkKTsKKworCXN0YXJ0dmFyID0gbWFrZU5vZGUoQ29sdW1uUmVm KTsKKwlzdGFydHZhci0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAo cGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisJZW5kdmFyID0gbWFrZU5vZGUoQ29sdW1uUmVm KTsKKwllbmR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBl cmlvZC0+ZW5kY29sbmFtZSkpKTsKKwlyYW5nZUNvbnN0cnVjdG9yID0gKEV4cHIgKikgbWFr ZUZ1bmNDYWxsKAorCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZXNw YWNlKSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCWxpc3RfbWFrZTIoc3Rh cnR2YXIsIGVuZHZhciksCisJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJCXBlcmlvZC0+ bG9jYXRpb24pOworCisJY29sLT5jb2xuYW1lID0gcHN0cmR1cChwZXJpb2QtPnBlcmlvZG5h bWUpOworCWNvbC0+dHlwZU5hbWUgPSBtYWtlVHlwZU5hbWUocmFuZ2VfdHlwZV9uYW1lKTsK Kwljb2wtPmNvbXByZXNzaW9uID0gTlVMTDsKKwljb2wtPmluaGNvdW50ID0gMDsKKwljb2wt PmlzX2xvY2FsID0gdHJ1ZTsKKwljb2wtPmlzX25vdF9udWxsID0gdHJ1ZTsKKwljb2wtPmlz X2Zyb21fdHlwZSA9IGZhbHNlOworCWNvbC0+c3RvcmFnZSA9IDA7CisJY29sLT5zdG9yYWdl X25hbWUgPSBOVUxMOworCWNvbC0+cmF3X2RlZmF1bHQgPSAoTm9kZSAqKSByYW5nZUNvbnN0 cnVjdG9yOworCWNvbC0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCWNvbC0+aWRlbnRpdHkg PSAwOworCWNvbC0+Z2VuZXJhdGVkID0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQ7CisJ Y29sLT5jb2xsQ2xhdXNlID0gTlVMTDsKKwljb2wtPmNvbGxPaWQgPSBJbnZhbGlkT2lkOwor CWNvbC0+ZmR3b3B0aW9ucyA9IE5JTDsKKwljb2wtPmxvY2F0aW9uID0gcGVyaW9kLT5sb2Nh dGlvbjsKKworCXJldHVybiBjb2w7Cit9CisKKy8qCisgKiBWYWxpZGF0ZVBlcmlvZAorICoK KyAqIExvb2sgdXAgdGhlIGF0dHJpYnV0ZXMgdXNlZCBieSB0aGUgUEVSSU9ELAorICogbWFr ZSBzdXJlIHRoZXkgZXhpc3QsIGFyZSBub3Qgc3lzdGVtIGNvbHVtbnMsCisgKiBhbmQgaGF2 ZSB0aGUgc2FtZSB0eXBlIGFuZCBjb2xsYXRpb24uCisgKgorICogWW91IG11c3QgaGF2ZSBh IFJvd0V4Y2x1c2l2ZUxvY2sgb24gcGdfYXR0cmlidXRlCisgKiBiZWZvcmUgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLgorICoKKyAqIEFkZCBvdXIgZmluZGluZ3MgdG8gdGhlc2UgUGVyaW9k RGVmIGZpZWxkczoKKyAqCisgKiBjb2x0eXBpZCAtIHRoZSB0eXBlIG9mIFBFUklPRCBjb2x1 bW5zLgorICogc3RhcnRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1bW4u CisgKiBlbmRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBlbmQgY29sdW1uLgorICovCitz dGF0aWMgdm9pZAorVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBl cmlvZCkKK3sKKwlIZWFwVHVwbGUgc3RhcnR0dXBsZTsKKwlIZWFwVHVwbGUgZW5kdHVwbGU7 CisJRm9ybV9wZ19hdHRyaWJ1dGUJYXR0dHVwbGU7CisJT2lkCWF0dGNvbGxhdGlvbjsKKwor CS8qIEZpbmQgdGhlIHN0YXJ0IGNvbHVtbiAqLworCXN0YXJ0dHVwbGUgPSBTZWFyY2hTeXND YWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5zdGFydGNv bG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChzdGFydHR1cGxlKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJ CSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJV Q1Qoc3RhcnR0dXBsZSk7CisJcGVyaW9kLT5jb2x0eXBpZCA9IGF0dHR1cGxlLT5hdHR0eXBp ZDsKKwlhdHRjb2xsYXRpb24gPSBhdHR0dXBsZS0+YXR0Y29sbGF0aW9uOworCXBlcmlvZC0+ c3RhcnRhdHRudW0gPSBhdHR0dXBsZS0+YXR0bnVtOworCisJLyogTWFrZSBzdXJlIGl0J3Mg bm90IGEgc3lzdGVtIGNvbHVtbiAqLworCWlmIChwZXJpb2QtPnN0YXJ0YXR0bnVtIDw9IDAp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBjb2x1bW4g XCIlc1wiIGluIHBlcmlvZCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSkpKTsKKwor CS8qIEZpbmQgdGhlIGVuZCBjb2x1bW4gKi8KKwllbmR0dXBsZSA9IFNlYXJjaFN5c0NhY2hl Q29weUF0dE5hbWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPmVuZGNvbG5hbWUp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChlbmR0dXBsZSkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNn KCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJ CQkJCQlwZXJpb2QtPmVuZGNvbG5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkp KSk7CisJYXR0dHVwbGUgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChlbmR0dXBs ZSk7CisJcGVyaW9kLT5lbmRhdHRudW0gPSBhdHR0dXBsZS0+YXR0bnVtOworCisJLyogTWFr ZSBzdXJlIGl0J3Mgbm90IGEgc3lzdGVtIGNvbHVtbiAqLworCWlmIChwZXJpb2QtPmVuZGF0 dG51bSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0 ZW0gY29sdW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1l KSkpOworCisJLyogQm90aCBjb2x1bW5zIG11c3QgYmUgb2Ygc2FtZSB0eXBlICovCisJaWYg KHBlcmlvZC0+Y29sdHlwaWQgIT0gYXR0dHVwbGUtPmF0dHR5cGlkKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBl cnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBvZiBzYW1l IHR5cGUiKSkpOworCisJLyogQm90aCBjb2x1bW5zIG11c3QgaGF2ZSB0aGUgc2FtZSBjb2xs YXRpb24gKi8KKwlpZiAoYXR0Y29sbGF0aW9uICE9IGF0dHR1cGxlLT5hdHRjb2xsYXRpb24p CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT0xMQVRJT05fTUlT TUFUQ0gpLAorCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2Qg bXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsKKworCWhlYXBfZnJlZXR1cGxlKHN0YXJ0 dHVwbGUpOworCWhlYXBfZnJlZXR1cGxlKGVuZHR1cGxlKTsKK30KKworLyoKKyAqIGNob29z ZV9yYW5nZXR5cGVfZm9yX3BlcmlvZAorICoKKyAqIEZpbmQgYSBzdWl0YWJsZSByYW5nZSB0 eXBlIGZvciBvcGVyYXRpb25zIGludm9sdmluZyB0aGlzIHBlcmlvZC4KKyAqIFVzZSB0aGUg cmFuZ2V0eXBlIG9wdGlvbiBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHRyeSB0byBmaW5kIGEK KyAqIG5vbi1hbWJpZ3VvdXMgZXhpc3RpbmcgdHlwZS4KKyAqLworLy8gVE9ETzogVGhpcyBj b3VsZCBiZSBzdGF0aWMgbm93CitPaWQKK2Nob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChQ ZXJpb2REZWYgKnBlcmlvZCkKK3sKKwlPaWQJcm5ndHlwaWQ7CisKKwlpZiAocGVyaW9kLT5y YW5nZXR5cGVuYW1lICE9IE5VTEwpCisJeworCQkvKiBNYWtlIHN1cmUgaXQgZXhpc3RzICov CisJCXJuZ3R5cGlkID0gVHlwZW5hbWVHZXRUeXBpZEV4dGVuZGVkKHBlcmlvZC0+cmFuZ2V0 eXBlbmFtZSwgZmFsc2UpOworCQlpZiAocm5ndHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJCWVy ZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJ CSBlcnJtc2coIlJhbmdlIHR5cGUgJXMgbm90IGZvdW5kIiwgcGVyaW9kLT5yYW5nZXR5cGVu YW1lKSkpOworCisJCS8qIE1ha2Ugc3VyZSBpdCBpcyBhIHJhbmdlIHR5cGUgKi8KKwkJaWYg KCF0eXBlX2lzX3JhbmdlKHJuZ3R5cGlkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJUeXBl ICVzIGlzIG5vdCBhIHJhbmdlIHR5cGUiLCBwZXJpb2QtPnJhbmdldHlwZW5hbWUpKSk7CisK KwkJLyogTWFrZSBzdXJlIGl0IG1hdGNoZXMgdGhlIGNvbHVtbiB0eXBlICovCisJCWlmIChn ZXRfcmFuZ2Vfc3VidHlwZShybmd0eXBpZCkgIT0gcGVyaW9kLT5jb2x0eXBpZCkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIGRvZXMgbm90IG1hdGNoIGNvbHVtbiB0 eXBlICVzIiwKKwkJCQkJCSBwZXJpb2QtPnJhbmdldHlwZW5hbWUsCisJCQkJCQkgZm9ybWF0 X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBpZCkpKSk7CisJfQorCWVsc2UKKwl7CisJCXJuZ3R5 cGlkID0gZ2V0X3N1YnR5cGVfcmFuZ2UocGVyaW9kLT5jb2x0eXBpZCk7CisJCWlmIChybmd0 eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gcmFuZ2UgdHlw ZSBmb3IgJXMgZm91bmQgZm9yIHBlcmlvZCAlcyIsCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUo cGVyaW9kLT5jb2x0eXBpZCksCisJCQkJCQkJcGVyaW9kLT5wZXJpb2RuYW1lKSwKKwkJCQkJ IGVycmhpbnQoIllvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIHJhbmdlIHR5cGUgd2l0aCBDUkVB VEUgVFlQRSIpKSk7CisKKwl9CisKKwlyZXR1cm4gcm5ndHlwaWQ7Cit9CisKK3N0YXRpYyB2 b2lkCitBZGRSZWxhdGlvbk5ld1BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVy aW9kKQoreworCVJlbGF0aW9uCWF0dHJlbGF0aW9uOworCU9pZAkJCWNvbm9pZDsKKwlDb25z dHJhaW50ICpjb25zdHI7CisJTGlzdAkgICAqbmV3Y29uc3RyczsKKworCWF0dHJlbGF0aW9u ID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK KworCS8qIEZpbmQgdGhlIEdFTkVSQVRFRCByYW5nZSBjb2x1bW4gKi8KKworCXBlcmlvZC0+ cm5nYXR0bnVtID0gZ2V0X2F0dG51bShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+ cGVyaW9kbmFtZSk7CisJaWYgKHBlcmlvZC0+cm5nYXR0bnVtID09IEludmFsaWRBdHRyTnVt YmVyKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyBhdHRyaWJ1dGUgJXMiLCBwZXJpb2QtPnBl cmlvZG5hbWUpOworCisJLyogVGhlIHBhcnNlciBoYXMgYWxyZWFkeSBmb3VuZCBwZXJpb2Qt PmNvbHR5cGlkICovCisKKwljb25zdHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChy ZWwsIHBlcmlvZCk7CisJbmV3Y29uc3RycyA9IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMo cmVsLCBOSUwsIGxpc3RfbWFrZTEoY29uc3RyKSwgZmFsc2UsIHRydWUsIHRydWUsIE5VTEwp OworCWNvbm9pZCA9ICgoQ29va2VkQ29uc3RyYWludCAqKSBsaW5pdGlhbChuZXdjb25zdHJz KSktPmNvbm9pZDsKKworCS8qIFNhdmUgaXQgKi8KKwlTdG9yZVBlcmlvZChyZWwsIHBlcmlv ZC0+cGVyaW9kbmFtZSwgcGVyaW9kLT5zdGFydGF0dG51bSwgcGVyaW9kLT5lbmRhdHRudW0s IHBlcmlvZC0+cm5nYXR0bnVtLCBjb25vaWQpOworCisJdGFibGVfY2xvc2UoYXR0cmVsYXRp b24sIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogRW1pdCB0aGUgcmlnaHQgZXJy b3Igb3Igd2FybmluZyBtZXNzYWdlIGZvciBhICJEUk9QIiBjb21tYW5kIGlzc3VlZCBvbiBh CiAgKiBub24tZXhpc3RlbnQgcmVsYXRpb24KQEAgLTMyODEsNiArMzU5MywxNjggQEAgTWVy Z2VBdHRyaWJ1dGVzKExpc3QgKnNjaGVtYSwgTGlzdCAqc3VwZXJzLCBjaGFyIHJlbHBlcnNp c3RlbmNlLAogfQogCiAKKy8qLS0tLS0tLS0tLQorICogTWVyZ2VQZXJpb2RzCisgKgkJUmV0 dXJucyBuZXcgcGVyaW9kIGxpc3QgZ2l2ZW4gaW5pdGlhbCBwZXJpb2RzIGFuZCBzdXBlcmNs YXNzZXMuCisgKgorICogRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IGluaGVyaXRlbmNlIHdp dGggUEVSSU9EcywKKyAqIGJ1dCB3ZSBtaWdodCBtYWtlIGl0IHdvcmsgZXZlbnR1YWxseS4K KyAqCisgKiBXZSBjYW4gb21pdCBsb3RzIG9mIGNoZWNrcyBoZXJlIGFuZCBhc3N1bWUgTWVy Z2VBdHRyaWJ1dGVzIGFscmVhZHkgZGlkIHRoZW0sCisgKiBmb3IgZXhhbXBsZSB0aGF0IGNo aWxkICYgcGFyZW50cyBhcmUgbm90IGEgbWl4IG9mIHBlcm1hbmVudCBhbmQgdGVtcC4KKyAq Lworc3RhdGljIExpc3QgKgorTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBl cmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKQoreworCUxpc3RDZWxsICAg KmVudHJ5OworCisJLyogSWYgd2UgaGF2ZSBhIFBFUklPRCB0aGVuIHN1cGVycyBtdXN0IGJl IGVtcHR5LiAqLworCisJaWYgKGxpc3RfbGVuZ3RoKHBlcmlvZHMpID4gMCAmJiBsaXN0X2xl bmd0aChzdXBlcnMpID4gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiSW5oZXJpdGluZyBp cyBub3Qgc3VwcG9ydGVkIHdoZW4gYSB0YWJsZSBoYXMgYSBQRVJJT0QiKSkpOworCisJLyog SWYgYW55IHBhcmVudCB0YWJsZSBoYXMgYSBQRVJJT0QsIHRoZW4gZmFpbC4gKi8KKworCWZv cmVhY2goZW50cnksIHN1cGVycykKKwl7CisJCU9pZAkJCXBhcmVudCA9IGxmaXJzdF9vaWQo ZW50cnkpOworCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJUmVsYXRpb24JcGdfcGVyaW9kOwor CQlTeXNTY2FuRGVzYyBzY2FuOworCQlTY2FuS2V5RGF0YSBza2V5WzFdOworCQlIZWFwVHVw bGUJdHVwbGU7CisKKwkJLyogY2FsbGVyIGFscmVhZHkgZ290IGxvY2sgKi8KKwkJcmVsYXRp b24gPSB0YWJsZV9vcGVuKHBhcmVudCwgTm9Mb2NrKTsKKwkJcGdfcGVyaW9kID0gdGFibGVf b3BlbihQZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCVNjYW5LZXlJ bml0KCZza2V5WzBdLAorCQkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQkJQlRF cXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlPYmplY3RJZEdldERhdHVtKHBh cmVudCkpOworCisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJp b2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCQkgIE5VTEwsIDEsIHNrZXkpOwor CisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2Fu KSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIkluaGVyaXRpbmcgZnJvbSBhIHRhYmxl IHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkJc3lzdGFibGVfZW5k c2NhbihzY2FuKTsKKwkJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxvY2sp OworCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIEZp bmQgdGhlIHN0YXJ0ICYgZW5kIGNvbHVtbnMgYW5kIGdldCB0aGVpciBhdHRubyBhbmQgdHlw ZS4KKwkgKiBJbiB0aGUgc2FtZSBwYXNzLCBtYWtlIHN1cmUgdGhlIHBlcmlvZCBkb2Vzbid0 IGNvbmZsaWN0IHdpdGggYW55IGNvbHVtbiBuYW1lcy4KKwkgKiBBbHNvIG1ha2Ugc3VyZSB0 aGUgc2FtZSBwZXJpb2QgbmFtZSBpc24ndCB1c2VkIG1vcmUgdGhhbiBvbmNlLgorCSAqLwor CWZvcmVhY2ggKGVudHJ5LCBwZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpwZXJpb2QgPSBs Zmlyc3QoZW50cnkpOworCQlMaXN0Q2VsbCAqZW50cnkyOworCQlpbnQgaSA9IDE7CisJCU9p ZCBzdGFydGNvbHR5cGlkID0gSW52YWxpZE9pZDsKKwkJT2lkIGVuZGNvbHR5cGlkID0gSW52 YWxpZE9pZDsKKwkJT2lkCXN0YXJ0Y29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJT2lk CWVuZGNvbGNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJcGVyaW9kLT5zdGFydGF0dG51 bSA9IEludmFsaWRBdHRyTnVtYmVyOworCQlwZXJpb2QtPmVuZGF0dG51bSA9IEludmFsaWRB dHRyTnVtYmVyOworCisJCWlmIChTeXN0ZW1BdHRyaWJ1dGVCeU5hbWUocGVyaW9kLT5wZXJp b2RuYW1lKSAhPSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIl c1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJCQkJCQlwZXJp b2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJZm9yZWFjaCAoZW50cnkyLCBwZXJpb2RzKQorCQl7 CisJCQlQZXJpb2REZWYgKnBlcmlvZDIgPSBsZmlyc3QoZW50cnkyKTsKKworCQkJaWYgKHBl cmlvZCAhPSBwZXJpb2QyICYmIHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZDIt PnBlcmlvZG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFt ZSBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIiwKKwkJCQkJCQkJcGVyaW9kLT5w ZXJpb2RuYW1lKSkpOworCQl9CisKKwkJZm9yZWFjaCAoZW50cnkyLCB0YWJsZUVsdHMpCisJ CXsKKwkJCUNvbHVtbkRlZiAqY29sID0gbGZpcnN0KGVudHJ5Mik7CisJCQlpbnQzMglhdHR0 eXBtb2Q7CisJCQlBY2xSZXN1bHQgYWNscmVzdWx0OworCisJCQlpZiAoc3RyY21wKHBlcmlv ZC0+cGVyaW9kbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkJIGVy cm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUi LAorCQkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJCWlmIChzdHJjbXAocGVy aW9kLT5zdGFydGNvbG5hbWUsIGNvbC0+Y29sbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZXJp b2QtPnN0YXJ0YXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEws IGNvbC0+dHlwZU5hbWUsICZzdGFydGNvbHR5cGlkLCAmYXR0dHlwbW9kKTsKKworCQkJCWFj bHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhUeXBlUmVsYXRpb25JZCwgc3RhcnRjb2x0eXBp ZCwgR2V0VXNlcklkKCksIEFDTF9VU0FHRSk7CisJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xD SEVDS19PSykKKwkJCQkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIHN0YXJ0Y29s dHlwaWQpOworCisJCQkJc3RhcnRjb2xjb2xsYXRpb24gPSBHZXRDb2x1bW5EZWZDb2xsYXRp b24oTlVMTCwgY29sLCBzdGFydGNvbHR5cGlkKTsKKwkJCX0KKworCQkJaWYgKHN0cmNtcChw ZXJpb2QtPmVuZGNvbG5hbWUsIGNvbC0+Y29sbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZXJp b2QtPmVuZGF0dG51bSA9IGk7CisKKwkJCQl0eXBlbmFtZVR5cGVJZEFuZE1vZChOVUxMLCBj b2wtPnR5cGVOYW1lLCAmZW5kY29sdHlwaWQsICZhdHR0eXBtb2QpOworCisJCQkJYWNscmVz dWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBlbmRjb2x0eXBpZCwgR2V0 VXNlcklkKCksIEFDTF9VU0FHRSk7CisJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19P SykKKwkJCQkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIGVuZGNvbHR5cGlkKTsK KworCQkJCWVuZGNvbGNvbGxhdGlvbiA9IEdldENvbHVtbkRlZkNvbGxhdGlvbihOVUxMLCBj b2wsIGVuZGNvbHR5cGlkKTsKKwkJCX0KKworCQkJaSsrOworCQl9CisKKwkJLyogRGlkIHdl IGZpbmQgdGhlIGNvbHVtbnM/ICovCisJCWlmIChwZXJpb2QtPnN0YXJ0YXR0bnVtID09IElu dmFsaWRBdHRyTnVtYmVyKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBv ZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBlcmlvZC0+c3Rh cnRjb2xuYW1lLCByZWxuYW1lKSkpOworCQlpZiAocGVyaW9kLT5lbmRhdHRudW0gPT0gSW52 YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9m IHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9kLT5lbmRj b2xuYW1lLCByZWxuYW1lKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNh bWUgdHlwZSAqLworCQlpZiAoc3RhcnRjb2x0eXBpZCAhPSBlbmRjb2x0eXBpZCkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3Qg YmUgb2Ygc2FtZSB0eXBlIikpKTsKKworCQkvKiBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIHRo ZSBzYW1lIGNvbGxhdGlvbiAqLworCQlpZiAoc3RhcnRjb2xjb2xsYXRpb24gIT0gZW5kY29s Y29sbGF0aW9uKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9D T0xMQVRJT05fTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVt bnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwkJcGVyaW9k LT5jb2x0eXBpZCA9IHN0YXJ0Y29sdHlwaWQ7CisJCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9v c2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QocGVyaW9kKTsKKwl9CisKKwlyZXR1cm4gcGVyaW9k czsKK30KKwogLyoKICAqIE1lcmdlQ2hlY2tDb25zdHJhaW50CiAgKgkJVHJ5IHRvIG1lcmdl IGFuIGluaGVyaXRlZCBDSEVDSyBjb25zdHJhaW50IHdpdGggcHJldmlvdXMgb25lcwpAQCAt NDMyNiwxMiArNDgwMCwxMiBAQCBBbHRlclRhYmxlKEFsdGVyVGFibGVTdG10ICpzdG10LCBM T0NLTU9ERSBsb2NrbW9kZSwKICAqIGV4aXN0aW5nIHF1ZXJ5IHBsYW5zLiAgT24gdGhlIGFz c3VtcHRpb24gaXQncyBub3QgdXNlZCBmb3Igc3VjaCwgd2UKICAqIGRvbid0IGhhdmUgdG8g cmVqZWN0IHBlbmRpbmcgQUZURVIgdHJpZ2dlcnMsIGVpdGhlci4KICAqCi0gKiBBbHNvLCBz aW5jZSB3ZSBkb24ndCBoYXZlIGFuIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCwgdGhpcyBj YW5ub3QgYmUKKyAqIEFsc28sIGlmIHlvdSBkb24ndCBwYXNzIGFuIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCwgdGhpcyBjYW5ub3QgYmUKICAqIHVzZWQgZm9yIGFueSBzdWJjb21tYW5k IHR5cGVzIHRoYXQgcmVxdWlyZSBwYXJzZSB0cmFuc2Zvcm1hdGlvbiBvcgogICogY291bGQg Z2VuZXJhdGUgc3ViY29tbWFuZHMgdGhhdCBoYXZlIHRvIGJlIHBhc3NlZCB0byBQcm9jZXNz VXRpbGl0eS4KICAqLwogdm9pZAotQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlz dCAqY21kcywgYm9vbCByZWN1cnNlKQorQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwg TGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUxPQ0tNT0RFCWxvY2ttb2RlID0gQWx0ZXJU YWJsZUdldExvY2tMZXZlbChjbWRzKTsKQEAgLTQzNDAsNyArNDgxNCw3IEBAIEFsdGVyVGFi bGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSkKIAogCUV2 ZW50VHJpZ2dlckFsdGVyVGFibGVSZWxpZChyZWxpZCk7CiAKLQlBVENvbnRyb2xsZXIoTlVM TCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgTlVMTCk7CisJQVRDb250cm9sbGVy KE5VTEwsIHJlbCwgY21kcywgcmVjdXJzZSwgbG9ja21vZGUsIGNvbnRleHQpOwogfQogCiAv KgpAQCAtNDQzMyw2ICs0OTA3LDggQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpj bWRzKQogCQkJY2FzZSBBVF9FbmFibGVSZXBsaWNhUnVsZToJLyogbWF5IGNoYW5nZSBTRUxF Q1QgcnVsZXMgKi8KIAkJCWNhc2UgQVRfRW5hYmxlUnVsZTogLyogbWF5IGNoYW5nZSBTRUxF Q1QgcnVsZXMgKi8KIAkJCWNhc2UgQVRfRGlzYWJsZVJ1bGU6CS8qIG1heSBjaGFuZ2UgU0VM RUNUIHJ1bGVzICovCisJCQljYXNlIEFUX0FkZFBlcmlvZDogLyogc2hhcmVzIG5hbWVzcGFj ZSB3aXRoIGNvbHVtbnMsIGFkZHMgY29uc3RyYWludCAqLworCQkJY2FzZSBBVF9Ecm9wUGVy aW9kOgogCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJl YWs7CiAKQEAgLTQ3NDgsNiArNTIyNCwxNCBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwg UmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBUaGlzIGNvbW1hbmQg bmV2ZXIgcmVjdXJzZXMgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9PVEhFUkNPTlNUUjsK IAkJCWJyZWFrOworCQljYXNlIEFUX0FkZFBlcmlvZDogLyogQUxURVIgVEFCTEUgLi4uIEFE RCBQRVJJT0QgRk9SIG5hbWUgKHN0YXJ0LCBlbmQpICovCisJCQlBVFNpbXBsZVBlcm1pc3Np b25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BBU1Nf QUREX1BFUklPRDsKKwkJCWJyZWFrOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6IC8qIEFMVEVS IFRBQkxFIC4uLiBEUk9QIFBFUklPRCBGT1IgbmFtZSAqLworCQkJQVRTaW1wbGVQZXJtaXNz aW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFKTsKKwkJCXBhc3MgPSBBVF9QQVNT X0RST1A7CisJCQlicmVhazsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCUFUU2ltcGxl UGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSB8IEFUVF9WSUVXIHwg QVRUX0ZPUkVJR05fVEFCTEUpOwogCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2Vz ICovCkBAIC01MTQ1LDYgKzU2MjksMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0Ogkv KiBhZGQgYSBwcmUtY29va2VkIGRlZmF1bHQgKi8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNDb29r ZWRDb2x1bW5EZWZhdWx0KHJlbCwgY21kLT5udW0sIGNtZC0+ZGVmKTsKIAkJCWJyZWFrOwor CQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCWFkZHJlc3MgPSBBVEV4ZWNBZGRQZXJpb2QocmVs LCAoUGVyaW9kRGVmICopIGNtZC0+ZGVmLCBjb250ZXh0KTsKKwkJCWJyZWFrOworCQljYXNl IEFUX0Ryb3BQZXJpb2Q6CisJCQlBVEV4ZWNEcm9wUGVyaW9kKHJlbCwgY21kLT5uYW1lLCBj bWQtPmJlaGF2aW9yLAorCQkJCQkJCQkgZmFsc2UsIGZhbHNlLAorCQkJCQkJCQkgY21kLT5t aXNzaW5nX29rKTsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJY21k ID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBs b2NrbW9kZSwKIAkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOwpAQCAtNjI4OSw2ICs2 NzgxLDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21k dHlwZSkKIAkJY2FzZSBBVF9BZGRDb2x1bW46CiAJCWNhc2UgQVRfQWRkQ29sdW1uVG9WaWV3 OgogCQkJcmV0dXJuICJBREQgQ09MVU1OIjsKKwkJY2FzZSBBVF9BZGRQZXJpb2Q6CisJCQly ZXR1cm4gIkFERCBQRVJJT0QiOwogCQljYXNlIEFUX0NvbHVtbkRlZmF1bHQ6CiAJCWNhc2Ug QVRfQ29va2VkQ29sdW1uRGVmYXVsdDoKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBT RVQgREVGQVVMVCI7CkBAIC02MzEyLDYgKzY4MDYsOCBAQCBhbHRlcl90YWJsZV90eXBlX3Rv X3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJBTFRFUiBDT0xV TU4gLi4uIFNFVCBDT01QUkVTU0lPTiI7CiAJCWNhc2UgQVRfRHJvcENvbHVtbjoKIAkJCXJl dHVybiAiRFJPUCBDT0xVTU4iOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQlyZXR1cm4g IkRST1AgUEVSSU9EIjsKIAkJY2FzZSBBVF9BZGRJbmRleDoKIAkJY2FzZSBBVF9SZUFkZElu ZGV4OgogCQkJcmV0dXJuIE5VTEw7CQkvKiBub3QgcmVhbCBncmFtbWFyICovCkBAIC03MzE3 LDE0ICs3ODEzLDI5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIC8qCiAgKiBJZiBhIG5ldyBvciByZW5h bWVkIGNvbHVtbiB3aWxsIGNvbGxpZGUgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZwog ICogY29sdW1uIGFuZCBpZl9ub3RfZXhpc3RzIGlzIGZhbHNlIHRoZW4gZXJyb3Igb3V0LCBl bHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX3BlcmlvZF9uYW1l X2NvbGxpc2lvbi4KICAqLwogc3RhdGljIGJvb2wKIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9j b2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQli b29sIGlmX25vdF9leGlzdHMpCiB7Ci0JSGVhcFR1cGxlCWF0dFR1cGxlOworCUhlYXBUdXBs ZQlhdHRUdXBsZSwgcGVyVHVwbGU7CiAJaW50CQkJYXR0bnVtOwogCisJLyogSWYgdGhlIG5h bWUgZXhpc3RzIGFzIGEgcGVyaW9kLCB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShS ZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShjb2xu YW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJUmVsZWFz ZVN5c0NhY2hlKHBlclR1cGxlKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBuYW1lIFwi JXNcIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lIiwKKwkJCQkJCWNvbG5hbWUpKSk7 CisJfQorCiAJLyoKIAkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRpc2Ry b3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bwogCSAqIGFkZCBhIGNvbHVtbiBt YXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3YXku CkBAIC03MzY4LDYgKzc4NzksNzggQEAgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lv bihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJcmV0dXJuIHRydWU7CiB9 CiAKKy8qCisgKiBJZiBhIG5ldyBwZXJpb2QgbmFtZSB3aWxsIGNvbGxpZGUgd2l0aCB0aGUg bmFtZSBvZiBhbiBleGlzdGluZyBjb2x1bW4gb3IKKyAqIHBlcmlvZCBbYW5kIGlmX25vdF9l eGlzdHMgaXMgZmFsc2VdIHRoZW4gZXJyb3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcuCisgKgor ICogU2VlIGFsc28gY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbi4KKyAqLworc3Rh dGljIGJvb2wKK2NoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpCit7 CisJSGVhcFR1cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKKwlpbnQJCQlhdHRudW07CisKKwkv KiBUT0RPOiBpbXBsZW1lbnQgSUYgW05PVF0gRVhJU1RTIGZvciBwZXJpb2RzICovCisJQXNz ZXJ0KCFpZl9ub3RfZXhpc3RzKTsKKworCS8qIElmIHRoZXJlIGlzIGFscmVhZHkgYSBwZXJp b2Qgd2l0aCB0aGlzIG5hbWUsIHRoZW4gd2UncmUgZG9uZS4gKi8KKwlwZXJUdXBsZSA9IFNl YXJjaFN5c0NhY2hlMihQRVJJT0ROQU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0o UmVsYXRpb25HZXRSZWxpZChyZWwpKSwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVy bmFtZSkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHBlclR1cGxlKSkKKwl7CisJCWlmIChp Zl9ub3RfZXhpc3RzKQorCQl7CisJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCisJ CQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09M VU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIg YWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQlwZXJuYW1lLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAor CQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGFscmVhZHkg ZXhpc3RzIiwKKwkJCQkJCXBlcm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkp KSk7CisJfQorCisJLyoKKwkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRp c2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bworCSAqIGFkZCBhIGNvbHVt biBtYXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3 YXkuCisJICoKKwkgKiBYWFg6IERvZXMgdGhpcyBob2xkIGZvciBwZXJpb2RzPworCSAqLwor CWF0dFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5BTUUsCisJCQkJCQkJICAgT2JqZWN0 SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJH ZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQoYXR0VHVwbGUpKQor CXsKKwkJYXR0bnVtID0gKChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxl KSktPmF0dG51bTsKKwkJUmVsZWFzZVN5c0NhY2hlKGF0dFR1cGxlKTsKKworCQkvKgorCQkg KiBXZSB0aHJvdyBhIGRpZmZlcmVudCBlcnJvciBtZXNzYWdlIGZvciBjb25mbGljdHMgd2l0 aCBzeXN0ZW0gY29sdW1uCisJCSAqIG5hbWVzLCBzaW5jZSB0aGV5IGFyZSBub3JtYWxseSBu b3Qgc2hvd24gYW5kIHRoZSB1c2VyIG1pZ2h0IG90aGVyd2lzZQorCQkgKiBiZSBjb25mdXNl ZCBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUgY29uZmxpY3QuCisJCSAqLworCQlpZiAoYXR0 bnVtIDw9IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RV UExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29u ZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7 CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09M VU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGgg YSBjb2x1bW4gbmFtZSIsCisJCQkJCQlwZXJuYW1lKSkpOworCX0KKworCXJldHVybiB0cnVl OworfQorCiAvKgogICogSW5zdGFsbCBhIGNvbHVtbidzIGRlcGVuZGVuY3kgb24gaXRzIGRh dGF0eXBlLgogICovCkBAIC04MDA4LDYgKzg1OTEsMTU1IEBAIEFURXhlY0Nvb2tlZENvbHVt bkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAlyZXR1cm4gYWRk cmVzczsKIH0KIAorLyoKKyAqIEFMVEVSIFRBQkxFIEFERCBQRVJJT0QKKyAqCisgKiBSZXR1 cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHBlcmlvZC4KKyAqLworc3RhdGljIE9iamVjdEFkZHJl c3MKK0FURXhlY0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kLCBB bHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24JCWF0dHJl bGF0aW9uOworCU9iamVjdEFkZHJlc3MJYWRkcmVzcyA9IEludmFsaWRPYmplY3RBZGRyZXNz OworCUNvbnN0cmFpbnQJICAgKmNvbnN0cjsKKwlDb2x1bW5EZWYJICAgKnJhbmdlY29sOwor CU9pZAkJCQljb25vaWQsIHBlcmlvZG9pZDsKKwlMaXN0CQkgICAqY21kcyA9IE5JTDsKKwlB bHRlclRhYmxlQ21kICAqY21kOworCisJLyoKKwkgKiBQRVJJT0QgRk9SIFNZU1RFTV9USU1F IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGJ1dCBtYWtlIHN1cmUgbm8gb25lIHVzZXMKKwkg KiB0aGUgbmFtZS4KKwkgKi8KKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgInN5 c3RlbV90aW1lIikgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiUEVSSU9EIEZP UiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCS8qIFRoZSBwZXJpb2Qg bmFtZSBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0ICovCisJKHZvaWQpIGNoZWNrX2Zvcl9wZXJp b2RfbmFtZV9jb2xsaXNpb24ocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIGZhbHNlKTsKKwor CS8qIFBhcnNlIG9wdGlvbnMgKi8KKwl0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKHBlcmlvZCk7 CisKKwlhdHRyZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisJVmFsaWRhdGVQZXJpb2QocmVsLCBwZXJpb2QpOworCisJcGVy aW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOwor CisJLyogTWFrZSB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNvbnN0ciA9IG1ha2VfY29u c3RyYWludF9mb3JfcGVyaW9kKHJlbCwgcGVyaW9kKTsKKwljbWQgPSBtYWtlTm9kZShBbHRl clRhYmxlQ21kKTsKKwljbWQtPnN1YnR5cGUgPSBBVF9BZGRDb25zdHJhaW50OworCWNtZC0+ ZGVmID0gKE5vZGUgKikgY29uc3RyOworCWNtZHMgPSBsYXBwZW5kKGNtZHMsIGNtZCk7CisJ QWx0ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgY21kcywgdHJ1ZSwg Y29udGV4dCk7CisJY29ub2lkID0gZ2V0X3JlbGF0aW9uX2NvbnN0cmFpbnRfb2lkKFJlbGF0 aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5jb25zdHJhaW50bmFtZSwgZmFsc2UpOworCisJ LyogTWFrZSB0aGUgcmFuZ2UgY29sdW1uICovCisJcmFuZ2Vjb2wgPSBtYWtlX3JhbmdlX2Nv bHVtbl9mb3JfcGVyaW9kKHBlcmlvZCk7CisJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNt ZCk7CisJY21kLT5zdWJ0eXBlID0gQVRfQWRkQ29sdW1uOworCWNtZC0+ZGVmID0gKE5vZGUg KikgcmFuZ2Vjb2w7CisJY21kLT5uYW1lID0gcGVyaW9kLT5wZXJpb2RuYW1lOworCWNtZC0+ cmVjdXJzZSA9IGZhbHNlOyAvKiBubywgbGV0IHRoZSBQRVJJT0QgcmVjdXJzZSBpbnN0ZWFk ICovCisJQWx0ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgbGlzdF9t YWtlMShjbWQpLCB0cnVlLCBjb250ZXh0KTsKKwlwZXJpb2QtPnJuZ2F0dG51bSA9IGdldF9h dHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCWlm IChwZXJpb2QtPnJuZ2F0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZWxvZyhFUlJP UiwgIm1pc3NpbmcgYXR0cmlidXRlICVzIiwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKworCS8q IFNhdmUgdGhlIFBlcmlvZCAqLworCXBlcmlvZG9pZCA9IFN0b3JlUGVyaW9kKHJlbCwgcGVy aW9kLT5wZXJpb2RuYW1lLCBwZXJpb2QtPnN0YXJ0YXR0bnVtLCBwZXJpb2QtPmVuZGF0dG51 bSwgcGVyaW9kLT5ybmdhdHRudW0sIGNvbm9pZCk7CisKKwlPYmplY3RBZGRyZXNzU2V0KGFk ZHJlc3MsIFBlcmlvZFJlbGF0aW9uSWQsIHBlcmlvZG9pZCk7CisKKwl0YWJsZV9jbG9zZShh dHRyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30K KworLyoKKyAqIEFMVEVSIFRBQkxFIERST1AgUEVSSU9ECisgKgorICogTGlrZSBEUk9QIENP TFVNTiwgd2UgY2FuJ3QgdXNlIHRoZSBub3JtYWwgQUxURVIgVEFCTEUgcmVjdXJzaW9uIG1l Y2hhbmlzbS4KKyAqLworc3RhdGljIHZvaWQKK0FURXhlY0Ryb3BQZXJpb2QoUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpwZXJpb2ROYW1lLAorCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2 aW9yLAorCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJIGJvb2wg bWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJRm9ybV9wZ19wZXJpb2Qg cGVyaW9kOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEga2V5OworCUhlYXBU dXBsZQl0dXBsZTsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCisJLyogQXQgdG9wIGxldmVs LCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25lIGluIEFUUHJlcENtZCwgZWxzZSBkbyBpdCAq LworCWlmIChyZWN1cnNpbmcpCisJCUFUU2ltcGxlUGVybWlzc2lvbnMoQVRfRHJvcFBlcmlv ZCwgcmVsLCBBVFRfVEFCTEUpOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RS ZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogRmluZCBhbmQgZHJv cCB0aGUgdGFyZ2V0IHBlcmlvZAorCSAqLworCVNjYW5LZXlJbml0KCZrZXksCisJCQkJQW51 bV9wZ19wZXJpb2RfcGVycmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09J REVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSk7CisJ c2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUlu ZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAma2V5KTsKKworCXdoaWxlIChIZWFw VHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlP YmplY3RBZGRyZXNzIHBlcm9iajsKKworCQlwZXJpb2QgPSAoRm9ybV9wZ19wZXJpb2QpIEdF VFNUUlVDVCh0dXBsZSk7CisKKwkJaWYgKHN0cmNtcChOYW1lU3RyKHBlcmlvZC0+cGVybmFt ZSksIHBlcmlvZE5hbWUpICE9IDApCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBQZXJm b3JtIHRoZSBhY3R1YWwgcGVyaW9kIGRlbGV0aW9uCisJCSAqLworCQlwZXJvYmouY2xhc3NJ ZCA9IFBlcmlvZFJlbGF0aW9uSWQ7CisJCXBlcm9iai5vYmplY3RJZCA9IHBlcmlvZC0+b2lk OworCQlwZXJvYmoub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlvbigmcGVy b2JqLCBiZWhhdmlvciwgMCk7CisKKwkJZm91bmQgPSB0cnVlOworCisJCS8qIHBlcmlvZCBm b3VuZCBhbmQgZHJvcHBlZCAtLSBubyBuZWVkIHRvIGtlZXAgbG9vcGluZyAqLworCQlicmVh azsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCisJaWYgKCFmb3VuZCkKKwl7 CisJCWlmICghbWlzc2luZ19vaykKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygicGVyaW9k IFwiJXNcIiBvbiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBl cmlvZE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCX0KKwkJZWxz ZQorCQl7CisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycm1zZygicGVyaW9kIFwiJXNc IiBvbiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIiwKKwkJCQkJ CQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJCXJldHVybjsKKwkJ fQorCX0KKworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9 CisKIC8qCiAgKiBBTFRFUiBUQUJMRSBBTFRFUiBDT0xVTU4gQUREIElERU5USVRZCiAgKgpA QCAtMTM1MTcsNiArMTQyNDksMTUgQEAgQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCVJlbWVtYmVyQ29uc3RyYWludEZv clJlYnVpbGRpbmcoZm91bmRPYmplY3Qub2JqZWN0SWQsIHRhYik7CiAJCQkJYnJlYWs7CiAK KwkJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygi Y2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBhIHBlcmlvZCIpLAorCQkJ CQkJIGVycmRldGFpbCgiJXMgZGVwZW5kcyBvbiBjb2x1bW4gXCIlc1wiIiwKKwkJCQkJCQkJ ICAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oJmZvdW5kT2JqZWN0LCBmYWxzZSksCisJCQkJCQkJ CSAgIGNvbE5hbWUpKSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgT0NMQVNTX1JFV1JJVEU6 CiAJCQkJLyogWFhYIHNvbWVkYXkgc2VlIGlmIHdlIGNhbiBjb3BlIHdpdGggcmV2aXNpbmcg dmlld3MgKi8KIAkJCQllcmVwb3J0KEVSUk9SLApAQCAtMTU1NzgsNyArMTYzMTksNyBAQCBB bHRlclRhYmxlTW92ZUFsbChBbHRlclRhYmxlTW92ZUFsbFN0bXQgKnN0bXQpCiAKIAkJRXZl bnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KChOb2RlICopIHN0bXQpOwogCQkvKiBPSUQgaXMg c2V0IGJ5IEFsdGVyVGFibGVJbnRlcm5hbCAqLwotCQlBbHRlclRhYmxlSW50ZXJuYWwobGZp cnN0X29pZChsKSwgY21kcywgZmFsc2UpOworCQlBbHRlclRhYmxlSW50ZXJuYWwobGZpcnN0 X29pZChsKSwgY21kcywgZmFsc2UsIE5VTEwpOwogCQlFdmVudFRyaWdnZXJBbHRlclRhYmxl RW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKaW5kZXggOWJkNzc1NDZiOS4uYmU0NjM3 Mjg3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYwpAQCAtMTY5LDcgKzE2OSw3IEBAIERlZmluZVZp cnR1YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJl cGxhY2UsCiAJCQl9CiAKIAkJCS8qIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxs ZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCQlBbHRlclRhYmxlSW50ZXJuYWwodmll d09pZCwgYXRjbWRzLCB0cnVlKTsKKwkJCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBh dGNtZHMsIHRydWUsIE5VTEwpOwogCiAJCQkvKiBNYWtlIHRoZSBuZXcgdmlldyBjb2x1bW5z IHZpc2libGUgKi8KIAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CkBAIC0yMDEsNyAr MjAxLDcgQEAgRGVmaW5lVmlydHVhbFJlbGF0aW9uKFJhbmdlVmFyICpyZWxhdGlvbiwgTGlz dCAqdGxpc3QsIGJvb2wgcmVwbGFjZSwKIAkJYXRjbWRzID0gbGlzdF9tYWtlMShhdGNtZCk7 CiAKIAkJLyogRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0IGNhbGxlZCBieSBQcm9jZXNz VXRpbGl0eVNsb3cgKi8KLQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywg dHJ1ZSk7CisJCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUsIE5V TEwpOwogCiAJCS8qCiAJCSAqIFRoZXJlIGlzIHZlcnkgbGl0dGxlIHRvIGRvIGhlcmUgdG8g dXBkYXRlIHRoZSB2aWV3J3MgZGVwZW5kZW5jaWVzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpp bmRleCA2MmNjYmY5ZDNjLi5hMGMwNjlmYzVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpA QCAtMTYzOSw2ICsxNjM5LDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJ CWNhc2UgVF9Db25zdHJhaW50OgogCQkJbG9jID0gKChjb25zdCBDb25zdHJhaW50ICopIGV4 cHIpLT5sb2NhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfUGVyaW9kRGVmOgorCQkJbG9j ID0gKChjb25zdCBQZXJpb2REZWYgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9GdW5jdGlvblBhcmFtZXRlcjoKIAkJCS8qIGp1c3QgdXNlIHR5cGVuYW1lJ3Mg bG9jYXRpb24gKi8KIAkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAoKGNvbnN0IEZ1 bmN0aW9uUGFyYW1ldGVyICopIGV4cHIpLT5hcmdUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4 IDVhNDliYTZmYTMuLjBlYjY3NTA5MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTk1LDcgKzU5 NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8a2V5d29yZD4gY29s X25hbWVfa2V5d29yZCByZXNlcnZlZF9rZXl3b3JkCiAldHlwZSA8a2V5d29yZD4gYmFyZV9s YWJlbF9rZXl3b3JkCiAKLSV0eXBlIDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtl Q2xhdXNlCisldHlwZSA8bm9kZT4JVGFibGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZSBU YWJsZVBlcmlvZAogJXR5cGUgPGl2YWw+CVRhYmxlTGlrZU9wdGlvbkxpc3QgVGFibGVMaWtl T3B0aW9uCiAldHlwZSA8c3RyPgkJY29sdW1uX2NvbXByZXNzaW9uIG9wdF9jb2x1bW5fY29t cHJlc3Npb24gY29sdW1uX3N0b3JhZ2Ugb3B0X2NvbHVtbl9zdG9yYWdlCiAldHlwZSA8bGlz dD4JQ29sUXVhbExpc3QKQEAgLTI2MDEsNiArMjYwMSwyNCBAQCBhbHRlcl90YWJsZV9jbWQ6 CiAJCQkJCW4tPmRlZiA9IChOb2RlICopICQ0OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBQRVJJT0QgRk9SIDxuYW1lPiAo PG5hbWU+LCA8bmFtZT4pICovCisJCQl8IEFERF9QIFRhYmxlUGVyaW9kCisJCQkJeworCQkJ CQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4t PnN1YnR5cGUgPSBBVF9BZGRQZXJpb2Q7CisJCQkJCW4tPmRlZiA9ICQyOworCQkJCQkkJCA9 IChOb2RlICopbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gRFJPUCBQRVJJ T0QgRk9SIDxuYW1lPiBbUkVTVFJJQ1R8Q0FTQ0FERV0gKi8KKwkJCXwgRFJPUCBQRVJJT0Qg Rk9SIG5hbWUgb3B0X2Ryb3BfYmVoYXZpb3IKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQg Km4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9IEFUX0Ry b3BQZXJpb2Q7CisJCQkJCW4tPm5hbWUgPSAkNDsKKwkJCQkJbi0+YmVoYXZpb3IgPSAkNTsK KwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQUREIENPTlNUUkFJTlQgLi4uICovCiAJ CQl8IEFERF9QIFRhYmxlQ29uc3RyYWludAogCQkJCXsKQEAgLTM3MTIsOCArMzczMCwxMCBA QCBUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5EZWYJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8 IFRhYmxlTGlrZUNsYXVzZQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWlu dAkJCQkJeyAkJCA9ICQxOyB9CisJCQl8IFRhYmxlUGVyaW9kCQkJCQkJeyAkJCA9ICQxOyB9 CiAJCTsKIAorCiBUeXBlZFRhYmxlRWxlbWVudDoKIAkJCWNvbHVtbk9wdGlvbnMJCQkJCQl7 ICQkID0gJDE7IH0KIAkJCXwgVGFibGVDb25zdHJhaW50CQkJCQl7ICQkID0gJDE7IH0KQEAg LTQwNjUsNiArNDA4NSwxOSBAQCBUYWJsZUxpa2VPcHRpb246CiAJCTsKIAogCitUYWJsZVBl cmlvZDoKKwkJCVBFUklPRCBGT1IgbmFtZSAnKCcgbmFtZSAnLCcgbmFtZSAnKScgb3B0X2Rl ZmluaXRpb24KKwkJCQl7CisJCQkJCVBlcmlvZERlZiAqbiA9IG1ha2VOb2RlKFBlcmlvZERl Zik7CisJCQkJCW4tPnBlcmlvZG5hbWUgPSAkMzsKKwkJCQkJbi0+c3RhcnRjb2xuYW1lID0g JDU7CisJCQkJCW4tPmVuZGNvbG5hbWUgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ5Owor CQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQor CQk7CisKIC8qIENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyBjb25zdHJhaW50IHN5bnRheCB3 aGljaCBpcyBub3QgZW1iZWRkZWQgaW50bwogICoJYSBjb2x1bW4gZGVmaW5pdGlvbi4gQ29s Q29uc3RyYWludEVsZW0gc3BlY2lmaWVzIHRoZSBlbWJlZGRlZCBmb3JtLgogICogLSB0aG9t YXMgMTk5Ny0xMi0wMwpAQCAtNzA5Niw2ICs3MTI5LDE0IEBAIENvbW1lbnRTdG10OgogCQkJ CQluLT5jb21tZW50ID0gJDk7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8 IENPTU1FTlQgT04gUEVSSU9EIGFueV9uYW1lIElTIGNvbW1lbnRfdGV4dAorCQkJCXsKKwkJ CQkJQ29tbWVudFN0bXQgKm4gPSBtYWtlTm9kZShDb21tZW50U3RtdCk7CisJCQkJCW4tPm9i anR5cGUgPSBPQkpFQ1RfUEVSSU9EOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNDsK KwkJCQkJbi0+Y29tbWVudCA9ICQ2OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQog CQkJfCBDT01NRU5UIE9OIExBUkdFX1AgT0JKRUNUX1AgTnVtZXJpY09ubHkgSVMgY29tbWVu dF90ZXh0CiAJCQkJewogCQkJCQlDb21tZW50U3RtdCAqbiA9IG1ha2VOb2RlKENvbW1lbnRT dG10KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKaW5kZXggODY0ZWE5YjBk NS4uZmJiYWRlNTE0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAg LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJj YXRhbG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpA QCAtMzE4OSw2ICszMTkwLDcgQEAgZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkgIGludCBzdWJsZXZlbHNf dXAsIGJvb2wgcmVxdWlyZV9jb2xfcHJpdnMsIGludCBsb2NhdGlvbikKIHsKIAlSYW5nZVRi bEVudHJ5ICpydGUgPSBuc2l0ZW0tPnBfcnRlOworCUJpdG1hcHNldCAgKnBlcmlvZGF0dHMg PSBOVUxMOwogCVJURVBlcm1pc3Npb25JbmZvICpwZXJtaW5mbyA9IG5zaXRlbS0+cF9wZXJt aW5mbzsKIAlMaXN0CSAgICpuYW1lcywKIAkJCSAgICp2YXJzOwpAQCAtMzIxMiwxMiArMzIx NCwyMCBAQCBleHBhbmROU0l0ZW1BdHRycyhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFt ZXNwYWNlSXRlbSAqbnNpdGVtLAogCQlwZXJtaW5mby0+cmVxdWlyZWRQZXJtcyB8PSBBQ0xf U0VMRUNUOwogCX0KIAorCS8qIEdldCBQRVJJT0QgY29sdW1ucyB0byBleGNsdWRlICovCisJ aWYgKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pCisJCXBlcmlvZGF0dHMgPSBnZXRf cGVyaW9kX2F0dG5vcyhydGUtPnJlbGlkKTsKKwogCWZvcmJvdGgobmFtZSwgbmFtZXMsIHZh ciwgdmFycykKIAl7CiAJCWNoYXIJICAgKmxhYmVsID0gc3RyVmFsKGxmaXJzdChuYW1lKSk7 CiAJCVZhcgkJICAgKnZhcm5vZGUgPSAoVmFyICopIGxmaXJzdCh2YXIpOwogCQlUYXJnZXRF bnRyeSAqdGU7CiAKKwkJLyogSWYgdGhpcyBjb2x1bW4gaXMgZnJvbSBhIFBFUklPRCwgc2tp cCBpdCAqLworCQlpZiAoYm1zX2lzX21lbWJlcihwc3RhdGUtPnBfbmV4dF9yZXNubywgcGVy aW9kYXR0cykpCisJCQkJY29udGludWU7CisKIAkJdGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4 cHIgKikgdmFybm9kZSwKIAkJCQkJCQkgKEF0dHJOdW1iZXIpIHBzdGF0ZS0+cF9uZXh0X3Jl c25vKyssCiAJCQkJCQkJIGxhYmVsLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK aW5kZXggZTE5NTQxMGMyMy4uMDNkY2RiOGNmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25z dHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgpAQCAtODAs NiArODEsNyBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCWlzZm9yZWlnbjsJCS8qIHRydWUg aWYgQ1JFQVRFL0FMVEVSIEZPUkVJR04gVEFCTEUgKi8KIAlib29sCQlpc2FsdGVyOwkJLyog dHJ1ZSBpZiBhbHRlcmluZyBleGlzdGluZyB0YWJsZSAqLwogCUxpc3QJICAgKmNvbHVtbnM7 CQkvKiBDb2x1bW5EZWYgaXRlbXMgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogUGVyaW9k RGVmIGl0ZW1zICovCiAJTGlzdAkgICAqY2tjb25zdHJhaW50czsJLyogQ0hFQ0sgY29uc3Ry YWludHMgKi8KIAlMaXN0CSAgICpubmNvbnN0cmFpbnRzOwkvKiBOT1QgTlVMTCBjb25zdHJh aW50cyAqLwogCUxpc3QJICAgKmZrY29uc3RyYWludHM7CS8qIEZPUkVJR04gS0VZIGNvbnN0 cmFpbnRzICovCkBAIC0xMTEsNiArMTEzLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAogc3RhdGlj IHZvaWQgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0 LAogCQkJCQkJCQkJICBDb2x1bW5EZWYgKmNvbHVtbik7CitzdGF0aWMgdm9pZCB0cmFuc2Zv cm1UYWJsZVBlcmlvZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAorCQkJCQkJCQkgUGVyaW9k RGVmICpwZXJpb2QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgQ29uc3RyYWludCAqY29uc3RyYWlu dCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENv bnRleHQgKmN4dCwKQEAgLTI0Miw2ICsyNDYsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENy ZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCWN4dC5pbmhSZWxh dGlvbnMgPSBzdG10LT5pbmhSZWxhdGlvbnM7CiAJY3h0LmlzYWx0ZXIgPSBmYWxzZTsKIAlj eHQuY29sdW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJh aW50cyA9IE5JTDsKIAljeHQubm5jb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJh aW50cyA9IE5JTDsKQEAgLTI4Miw2ICsyODcsMTAgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChD cmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJCQl0cmFuc2Zv cm1Db2x1bW5EZWZpbml0aW9uKCZjeHQsIChDb2x1bW5EZWYgKikgZWxlbWVudCk7CiAJCQkJ YnJlYWs7CiAKKwkJCWNhc2UgVF9QZXJpb2REZWY6CisJCQkJdHJhbnNmb3JtVGFibGVQZXJp b2QoJmN4dCwgKFBlcmlvZERlZiAqKSBlbGVtZW50KTsKKwkJCQlicmVhazsKKwogCQkJY2Fz ZSBUX0NvbnN0cmFpbnQ6CiAJCQkJdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KCZjeHQsIChD b25zdHJhaW50ICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwpAQCAtMzQ5LDYgKzM1OCw3IEBA IHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcpCiAJICogT3V0cHV0IHJlc3VsdHMuCiAJICovCiAJc3RtdC0+dGFibGVFbHRz ID0gY3h0LmNvbHVtbnM7CisJc3RtdC0+cGVyaW9kcyA9IGN4dC5wZXJpb2RzOwogCXN0bXQt PmNvbnN0cmFpbnRzID0gY3h0LmNrY29uc3RyYWludHM7CiAJc3RtdC0+bm5jb25zdHJhaW50 cyA9IGN4dC5ubmNvbnN0cmFpbnRzOwogCkBAIC05MTUsNiArOTI1LDExMyBAQCB0cmFuc2Zv cm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAq Y29sdW1uKQogCX0KIH0KIAordm9pZAordHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhQZXJpb2RE ZWYgKnBlcmlvZCkKK3sKKwlMaXN0Q2VsbCAgICpvcHRpb247CisJRGVmRWxlbQkgICAqZGNv bnN0cmFpbnRuYW1lID0gTlVMTDsKKwlEZWZFbGVtCSAgICpkcmFuZ2V0eXBlbmFtZSA9IE5V TEw7CisKKwlmb3JlYWNoKG9wdGlvbiwgcGVyaW9kLT5vcHRpb25zKQorCXsKKwkJRGVmRWxl bSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3Qob3B0aW9uKTsKKworCQlpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAiY2hlY2tfY29uc3RyYWludF9uYW1lIikgPT0gMCkKKwkJ eworCQkJaWYgKGRjb25zdHJhaW50bmFtZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxp Y3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOworCQkJZGNvbnN0cmFpbnRuYW1lID0g ZGVmZWw7CisJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAicmFuZ2V0 eXBlIikgPT0gMCkKKwkJeworCQkJaWYgKGRyYW5nZXR5cGVuYW1lKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkg ZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7CisJCQlkcmFu Z2V0eXBlbmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygib3B0 aW9uIFwiJXNcIiBub3QgcmVjb2duaXplZCIsIGRlZmVsLT5kZWZuYW1lKSkpOworCX0KKwor CWlmIChkY29uc3RyYWludG5hbWUgIT0gTlVMTCkKKwkJcGVyaW9kLT5jb25zdHJhaW50bmFt ZSA9IGRlZkdldFN0cmluZyhkY29uc3RyYWludG5hbWUpOworCWVsc2UKKwkJcGVyaW9kLT5j b25zdHJhaW50bmFtZSA9IE5VTEw7CisKKwlpZiAoZHJhbmdldHlwZW5hbWUgIT0gTlVMTCkK KwkJcGVyaW9kLT5yYW5nZXR5cGVuYW1lID0gZGVmR2V0U3RyaW5nKGRyYW5nZXR5cGVuYW1l KTsKKwllbHNlCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFtZSA9IE5VTEw7Cit9CisKKy8qCisg KiB0cmFuc2Zvcm1UYWJsZVBlcmlvZAorICoJCXRyYW5zZm9ybSBhIFBlcmlvZERlZiBub2Rl IHdpdGhpbiBDUkVBVEUgVEFCTEUgb3IgQUxURVIgVEFCTEUKKyAqCQlUT0RPOiBEb2VzIEFM VEVSIFRBQkxFIHJlYWxseSBjYWxsIHVzPz8gSXQgZG9lc24ndCBzZWVtIGxpa2UgaXQgZG9l cy4gTWF5YmUgaXQgc2hvdWxkLiBEaWQgaXQgaW4gVmlrJ3Mgb3JpZ2luYWwgcGF0Y2g/Cisg Ki8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1UYWJsZVBlcmlvZChDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwkvLyBPaWQJCQljb2x0eXBpZDsKKwkv LyBDb2x1bW5EZWYgICpjb2w7CisJLy8gTGlzdENlbGwgICAqY29sdW1uczsKKworCWlmIChz dHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCAic3lzdGVtX3RpbWUiKSA9PSAwKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkgZXJybXNnKCJQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBw b3J0ZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJCQkJ CQkJCQlwZXJpb2QtPmxvY2F0aW9uKSkpOworCisJaWYgKHN0cmNtcChwZXJpb2QtPnN0YXJ0 Y29sbmFtZSwgcGVyaW9kLT5lbmRjb2xuYW1lKSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLCAo ZXJybXNnKCJjb2x1bW4gXCIlc1wiIGNhbid0IGJlIHRoZSBzdGFydCBhbmQgZW5kIGNvbHVt biBmb3IgcGVyaW9kIFwiJXNcIiIsCisJCQkJCSAgICBwZXJpb2QtPnN0YXJ0Y29sbmFtZSwg cGVyaW9kLT5wZXJpb2RuYW1lKSkpOworCisJLyoKKwkgKiBEZXRlcm1pbmUgdGhlIGNvbHVt biBpbmZvIGFuZCByYW5nZSB0eXBlIHNvIHRoYXQgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50 cworCSAqIGtub3dzIGhvdyB0byBjcmVhdGUgUFJJTUFSWSBLRVkvVU5JUVVFIGNvbnN0cmFp bnRzIHVzaW5nIHRoaXMgUEVSSU9ELgorCSAqLworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMo cGVyaW9kKTsKKworCS8qCisJICogRmluZCBhIHN1aXRhYmxlIHJhbmdlIHR5cGUgZm9yIG9w ZXJhdGlvbnMgaW52b2x2aW5nIHRoaXMgcGVyaW9kLgorCSAqIFVzZSB0aGUgcmFuZ2V0eXBl IG9wdGlvbiBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHRyeSB0byBmaW5kIGEKKwkgKiBub24t YW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisJICovCisKKyNpZmRlZiBhc2RzZGZhCisJLyog Rmlyc3QgZmluZCBvdXQgdGhlIHR5cGUgb2YgdGhlIHBlcmlvZCdzIGNvbHVtbnMgKi8KKwkv LyBUT0RPOiBJJ20gZG9pbmcgdGhpcyBpbiBEZWZpbmVSZWxhdGlvbiBub3csCisJLy8gd2hp Y2ggc2VlbXMgbGlrZSBhIGJldHRlciBwbGFjZSBzaW5jZSBpdCBrbm93cyBhYm91dCBpbmhl cml0ZWQgY29sdW1ucy4KKwlwZXJpb2QtPmNvbHR5cGlkID0gSW52YWxpZE9pZDsKKwlwZXJp b2QtPnJuZ3R5cGlkID0gSW52YWxpZE9pZDsKKwlmb3JlYWNoIChjb2x1bW5zLCBjeHQtPmNv bHVtbnMpCisJeworCQljb2wgPSAoQ29sdW1uRGVmICopIGxmaXJzdChjb2x1bW5zKTsKKwkJ aWYgKHN0cmNtcChjb2wtPmNvbG5hbWUsIHBlcmlvZC0+c3RhcnRjb2xuYW1lKSA9PSAwKQor CQl7CisJCQljb2x0eXBpZCA9IHR5cGVuYW1lVHlwZUlkKGN4dC0+cHN0YXRlLCBjb2wtPnR5 cGVOYW1lKTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChjb2x0eXBpZCA9PSBJbnZhbGlk T2lkKQorCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0 aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFt ZSwgY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSkpKTsKKworCXBlcmlvZC0+Y29sdHlwaWQgPSBj b2x0eXBpZDsKKworCS8qIE5vdyBtYWtlIHN1cmUgaXQgbWF0Y2hlcyByYW5nZXR5cGVuYW1l IG9yIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgcmFuZ2UgKi8KKwlwZXJpb2QtPnJuZ3R5cGlk ID0gY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKHBlcmlvZCk7CisjZW5kaWYKKworCWN4 dC0+cGVyaW9kcyA9IGxhcHBlbmQoY3h0LT5wZXJpb2RzLCBwZXJpb2QpOworfQorCiAvKgog ICogdHJhbnNmb3JtVGFibGVDb25zdHJhaW50CiAgKgkJdHJhbnNmb3JtIGEgQ29uc3RyYWlu dCBub2RlIHdpdGhpbiBDUkVBVEUgVEFCTEUgb3IgQUxURVIgVEFCTEUKQEAgLTEwMDUsNiAr MTEyMiw3IEBAIHRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhCiAJQXR0ck51bWJlcglwYXJl bnRfYXR0bm87CiAJUmVsYXRpb24JcmVsYXRpb247CiAJVHVwbGVEZXNjCXR1cGxlRGVzYzsK KwlCaXRtYXBzZXQgICpwZXJpb2RhdHRzOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJY2hh cgkgICAqY29tbWVudDsKIAlQYXJzZUNhbGxiYWNrU3RhdGUgcGNic3RhdGU7CkBAIC0xMDU3 LDYgKzExNzUsNyBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRl eHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCX0KIAogCXR1cGxl RGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCXBlcmlvZGF0dHMgPSBnZXRf cGVyaW9kX2F0dG5vcyhSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSk7CiAKIAkvKgogCSAq IEluc2VydCB0aGUgY29waWVkIGF0dHJpYnV0ZXMgaW50byB0aGUgY3h0IGZvciB0aGUgbmV3 IHRhYmxlIGRlZmluaXRpb24uCkBAIC0xMDY2LDEwICsxMTg1LDE4IEBAIHRyYW5zZm9ybVRh YmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBUYWJsZUxpa2VDbGF1c2Ug KnRhYmxlX2xpa2VfY2xhCiAJZm9yIChwYXJlbnRfYXR0bm8gPSAxOyBwYXJlbnRfYXR0bm8g PD0gdHVwbGVEZXNjLT5uYXR0czsKIAkJIHBhcmVudF9hdHRubysrKQogCXsKLQkJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0dXBsZURlc2MsCi0JCQkJ CQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJp YnV0ZTsKIAkJQ29sdW1uRGVmICAqZGVmOwogCisJCS8qCisJCSAqIElmIHRoaXMgY29sdW1u IGlzIGZyb20gYSBQRVJJT0QsIHNraXAgaXQKKwkJICogKHNpbmNlIExJS0UgbmV2ZXIgY29w aWVzIFBFUklPRHMpLgorCQkgKi8KKwkJaWYgKGJtc19pc19tZW1iZXIocGFyZW50X2F0dG5v LCBwZXJpb2RhdHRzKSkKKwkJCWNvbnRpbnVlOworCisJCWF0dHJpYnV0ZSA9IFR1cGxlRGVz Y0F0dHIodHVwbGVEZXNjLCBwYXJlbnRfYXR0bm8gLSAxKTsKKwogCQkvKgogCQkgKiBJZ25v cmUgZHJvcHBlZCBjb2x1bW5zIGluIHRoZSBwYXJlbnQuCiAJCSAqLwpAQCAtMzExMyw2ICsz MjQwLDEwIEBAIHRyYW5zZm9ybUluZGV4U3RtdChPaWQgcmVsaWQsIEluZGV4U3RtdCAqc3Rt dCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAJCX0KIAl9CiAKKwkvKiB0YWtlIGNhcmUg b2YgdGhlIHBlcmlvZCAqLworCWlmIChzdG10LT5wZXJpb2QpCisJCXN0bXQtPnBlcmlvZC0+ b2lkID0gZ2V0X3BlcmlvZF9vaWQocmVsaWQsIHN0bXQtPnBlcmlvZC0+cGVyaW9kbmFtZSwg ZmFsc2UpOworCiAJLyoKIAkgKiBDaGVjayB0aGF0IG9ubHkgdGhlIGJhc2UgcmVsIGlzIG1l bnRpb25lZC4gIChUaGlzIHNob3VsZCBiZSBkZWFkIGNvZGUKIAkgKiBub3cgdGhhdCBhZGRf bWlzc2luZ19mcm9tIGlzIGhpc3RvcnkuKQpAQCAtMzU3MCw2ICszNzAxLDcgQEAgdHJhbnNm b3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAlj eHQuaW5oUmVsYXRpb25zID0gTklMOwogCWN4dC5pc2FsdGVyID0gdHJ1ZTsKIAljeHQuY29s dW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJhaW50cyA9 IE5JTDsKIAljeHQubm5jb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJhaW50cyA9 IE5JTDsKQEAgLTM2MzIsNiArMzc2NCwxNSBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQkJIChpbnQpIG5vZGVUYWco Y21kLT5kZWYpKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9BZGRQZXJpb2Q6CisJCQkJ eworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQkvLyBXaHkg bm90IGNhbGwgdHJhbnNmb3JtVGFibGVQZXJpb2QgaGVyZT8KKwkJCQkJLy8gQWggYmVjYXVz ZSBpdCBsb29rcyBhdCBjeHQtPmNvbHVtbnMKKwkJCQkJLy8gYW5kIGluIGFuIEFMVEVSIHN0 YXRlbWVudCB0aGUgY29sdW1ucyBtaWdodCBhbHJlYWR5IGV4aXN0IChvciBub3QpLgorCQkJ CQlicmVhazsKKwkJCQl9CisKIAkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5UeXBlOgogCQkJCXsK IAkJCQkJQ29sdW1uRGVmICAqZGVmID0gY2FzdE5vZGUoQ29sdW1uRGVmLCBjbWQtPmRlZik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IDM5MTc2MmYzMDguLjRj Mjk2NWMxNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0zMCw2 ICszMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9y LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19zdGF0aXN0aWMuaCIKQEAgLTEwMjEsNiArMTAyMiw2OCBAQCBnZXRfYXR0 b3B0aW9ucyhPaWQgcmVsaWQsIGludDE2IGF0dG51bSkKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgkJCQktLS0tLS0tLS0tIFBHX1BFUklPRCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwor CisvKgorICogZ2V0X3BlcmlvZG5hbWUgLSBnaXZlbiBpdHMgT0lELCBsb29rIHVwIGEgcGVy aW9kCisgKgorICogSWYgbWlzc2luZ19vayBpcyBmYWxzZSwgdGhyb3cgYW4gZXJyb3IgaWYg dGhlIHBlcmlvZCBpcyBub3QgZm91bmQuCisgKiBJZiB0cnVlLCBqdXN0IHJldHVybiBJbnZh bGlkT2lkLgorICovCitjaGFyICoKK2dldF9wZXJpb2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9v bCBtaXNzaW5nX29rKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2Fj aGUxKFBFUklPRE9JRCwKKwkJCQkJCSBPYmplY3RJZEdldERhdHVtKHBlcmlvZGlkKSk7CisJ aWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ19wZXJpb2QgcGVyaW9k X3R1cCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkgICAqcmVz dWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFtZVN0cihwZXJpb2RfdHVwLT5wZXJuYW1l KSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJ aWYgKCFtaXNzaW5nX29rKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgcGVyaW9kICVkIiwKKwkJCSBwZXJpb2RpZCk7CisJcmV0dXJuIE5VTEw7Cit9CisKKy8q CisgKiBnZXRfcGVyaW9kX29pZCAtIGdldHMgaXRzIHJlbGF0aW9uIGFuZCBuYW1lLCBsb29r IHVwIGEgcGVyaW9kCisgKgorICogSWYgbWlzc2luZ19vayBpcyBmYWxzZSwgdGhyb3cgYW4g ZXJyb3IgaWYgdGhlIGNhc3QgaXMgbm90IGZvdW5kLiAgSWYKKyAqIHRydWUsIGp1c3QgcmV0 dXJuIEludmFsaWRPaWQuCisgKi8KK09pZAorZ2V0X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBj b25zdCBjaGFyICpwZXJpb2RuYW1lLCBib29sIG1pc3Npbmdfb2spCit7CisJSGVhcFR1cGxl CXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCSBPYmpl Y3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCSBQb2ludGVyR2V0RGF0dW0ocGVyaW9kbmFt ZSkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ19wZXJp b2QgcGVyaW9kX3R1cCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHRwKTsKKwkJT2lk IHJlc3VsdDsKKworCQlyZXN1bHQgPSBwZXJpb2RfdHVwLT5vaWQ7CisJCVJlbGVhc2VTeXND YWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJaWYgKCFtaXNzaW5nX29rKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICVzIiwKKwkJ CSBwZXJpb2RuYW1lKTsKKwlyZXR1cm4gSW52YWxpZE9pZDsKK30KKwogLyoJCQkJLS0tLS0t LS0tLSBQR19DQVNUIENBQ0hFIC0tLS0tLS0tLS0JCQkJCSAqLwogCiAvKgpAQCAtMzUzMiw2 ICszNTk1LDMwIEBAIGdldF9tdWx0aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJhbmdlT2lkKQog CQlyZXR1cm4gSW52YWxpZE9pZDsKIH0KIAorT2lkCitnZXRfc3VidHlwZV9yYW5nZShPaWQg c3VidHlwZU9pZCkKK3sKKwlDYXRDTGlzdCAqY2F0bGlzdDsKKwlPaWQJcmVzdWx0ID0gSW52 YWxpZE9pZDsKKworCWNhdGxpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKFJBTkdFU1VCVFlQ RSwgT2JqZWN0SWRHZXREYXR1bShzdWJ0eXBlT2lkKSk7CisKKwlpZiAoY2F0bGlzdC0+bl9t ZW1iZXJzID09IDEpCisJeworCQlIZWFwVHVwbGUJdHVwbGUgPSAmY2F0bGlzdC0+bWVtYmVy c1swXS0+dHVwbGU7CisJCUZvcm1fcGdfcmFuZ2Ugcm5ndHVwID0gKEZvcm1fcGdfcmFuZ2Up IEdFVFNUUlVDVCh0dXBsZSk7CisJCXJlc3VsdCA9IHJuZ3R1cC0+cm5ndHlwaWQ7CisJCVJl bGVhc2VDYXRDYWNoZUxpc3QoY2F0bGlzdCk7CisJfQorCWVsc2UgaWYgKGNhdGxpc3QtPm5f bWVtYmVycyA+IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TkRFVEVSTUlOQVRFX0RBVEFUWVBFKSwKKwkJCQkgZXJybXNnKCJhbWJpZ3VvdXMgcmFuZ2Ug Zm9yIHR5cGUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoc3VidHlwZU9pZCkpKSk7CisK KwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgkJCQktLS0tLS0tLS0tIFBHX0lOREVYIENBQ0hF IC0tLS0tLS0tLS0JCQkJICovCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9zeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUu YwppbmRleCA4ZGJkYTAwMjRmLi40NGU2MzZlNWJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3N5c2NhY2hlLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29w ZmFtaWx5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVi bGljYXRpb25fbmFtZXNwYWNlLmgiCkBAIC00MjIsNiArNDIzLDE5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgY2FjaGVkZXNjIGNhY2hlaW5mb1tdID0gewogCQlLRVkoQW51bV9wZ19wYXJ0 aXRpb25lZF90YWJsZV9wYXJ0cmVsaWQpLAogCQkzMgogCX0sCisJW1BFUklPRE5BTUVdID0g eworCQlQZXJpb2RSZWxhdGlvbklkLAorCQlQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQlL RVkoQW51bV9wZ19wZXJpb2RfcGVycmVsaWQsCisJCQlBbnVtX3BnX3BlcmlvZF9wZXJuYW1l KSwKKwkJMzIKKwl9LAorCVtQRVJJT0RPSURdID0geworCQlQZXJpb2RSZWxhdGlvbklkLAor CQlQZXJpb2RPYmplY3RJbmRleElkLAorCQlLRVkoQW51bV9wZ19wZXJpb2Rfb2lkKSwKKwkJ MzIKKwl9LAogCVtQUk9DTkFNRUFSR1NOU1BdID0gewogCQlQcm9jZWR1cmVSZWxhdGlvbklk LAogCQlQcm9jZWR1cmVOYW1lQXJnc05zcEluZGV4SWQsCkBAIC00ODAsNiArNDk0LDEzIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNjIGNhY2hlaW5mb1tdID0gewogCQlLRVko QW51bV9wZ19yYW5nZV9ybmdtdWx0aXR5cGlkKSwKIAkJNAogCX0sCisJW1JBTkdFU1VCVFlQ RV0gPSB7CisJCVJhbmdlUmVsYXRpb25JZCwKKwkJUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJ ZCwKKwkJS0VZKEFudW1fcGdfcmFuZ2Vfcm5nc3VidHlwZSwKKwkJCUFudW1fcGdfcmFuZ2Vf cm5ndHlwaWQpLAorCQk0CisJfSwKIAlbUkFOR0VUWVBFXSA9IHsKIAkJUmFuZ2VSZWxhdGlv bklkLAogCQlSYW5nZVR5cGlkSW5kZXhJZCwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJj aGl2ZXIuYwppbmRleCBjYzA2ZjFjODE3Li5kMjk0MjQ5ZmJkIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zNTAwLDYgKzM1MDAsNyBAQCBfZ2V0T2JqZWN0 RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBUb2NFbnRyeSAqdGUpCiAJCQkg c3RyY21wKHR5cGUsICJEQVRBQkFTRSBQUk9QRVJUSUVTIikgPT0gMCB8fAogCQkJIHN0cmNt cCh0eXBlLCAiREVGQVVMVCIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIkZLIENPTlNU UkFJTlQiKSA9PSAwIHx8CisJCQkgc3RyY21wKHR5cGUsICJQRVJJT0QiKSA9PSAwIHx8CiAJ CQkgc3RyY21wKHR5cGUsICJJTkRFWCIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlJV TEUiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5cGUsICJUUklHR0VSIikgPT0gMCB8fApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKaW5kZXggZWZlOGQ3MmIzMi4uZWE3NDRiYzNlMyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CkBAIC02MzMzLDYgKzYzMzMsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpu dW1UYWJsZXMpCiAJaW50CQkJaV9yZWx0eXBlOwogCWludAkJCWlfcmVsb3duZXI7CiAJaW50 CQkJaV9yZWxjaGVja3M7CisJaW50CQkJaV9ucGVyaW9kOwogCWludAkJCWlfcmVsaGFzaW5k ZXg7CiAJaW50CQkJaV9yZWxoYXNydWxlczsKIAlpbnQJCQlpX3JlbHBhZ2VzOwpAQCAtNjQx MCw2ICs2NDExLDE0IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxl cykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJjLnJlbGhhc29p ZHMsICIpOwogCisJLyogSW4gUEcxNiB1cHdhcmRzIHdlIGhhdmUgUEVSSU9Ecy4gKi8KKwlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAorCQkJCQkJCSAiKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3BlcmlvZCBX SEVSRSBwZXJyZWxpZCA9IGMub2lkKSBBUyBucGVyaW9kcywgIik7CisJZWxzZQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIjAgQVMgbnBlcmlvZHMsICIpOwor CiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTAzMDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiYy5yZWxpc3BvcHVsYXRlZCwgIik7CkBAIC02NTQ3 LDYgKzY1NTYsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMp CiAJaV9yZWx0eXBlID0gUFFmbnVtYmVyKHJlcywgInJlbHR5cGUiKTsKIAlpX3JlbG93bmVy ID0gUFFmbnVtYmVyKHJlcywgInJlbG93bmVyIik7CiAJaV9yZWxjaGVja3MgPSBQUWZudW1i ZXIocmVzLCAicmVsY2hlY2tzIik7CisJaV9ucGVyaW9kID0gUFFmbnVtYmVyKHJlcywgIm5w ZXJpb2RzIik7CiAJaV9yZWxoYXNpbmRleCA9IFBRZm51bWJlcihyZXMsICJyZWxoYXNpbmRl eCIpOwogCWlfcmVsaGFzcnVsZXMgPSBQUWZudW1iZXIocmVzLCAicmVsaGFzcnVsZXMiKTsK IAlpX3JlbHBhZ2VzID0gUFFmbnVtYmVyKHJlcywgInJlbHBhZ2VzIik7CkBAIC02NjMwLDYg KzY2NDAsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJ CX0KIAkJdGJsaW5mb1tpXS5yZWx0YWJsZXNwYWNlID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3JlbHRhYmxlc3BhY2UpKTsKIAkJdGJsaW5mb1tpXS5oYXNvaWRzID0gKHN0 cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxoYXNvaWRzKSwgInQiKSA9PSAwKTsKKwkJ dGJsaW5mb1tpXS5ucGVyaW9kID0gYXRvaShQUWdldHZhbHVlKHJlcywgaSwgaV9ucGVyaW9k KSk7CiAJCXRibGluZm9baV0uaGFzdHJpZ2dlcnMgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3JlbGhhc3RyaWdnZXJzKSwgInQiKSA9PSAwKTsKIAkJdGJsaW5mb1tpXS5yZWxw ZXJzaXN0ZW5jZSA9ICooUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVscGVyc2lzdGVuY2UpKTsK IAkJdGJsaW5mb1tpXS5yZWxpc3BvcHVsYXRlZCA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMs IGksIGlfcmVsaXNwb3B1bGF0ZWQpLCAidCIpID09IDApOwpAQCAtODM2NCw3ICs4Mzc1LDcg QEAgZ2V0VHJhbnNmb3JtcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRyYW5zZm9ybXMpCiAv KgogICogZ2V0VGFibGVBdHRycyAtCiAgKgkgIGZvciBlYWNoIGludGVyZXN0aW5nIHRhYmxl LCByZWFkIGluZm8gYWJvdXQgaXRzIGF0dHJpYnV0ZXMKLSAqCSAgKG5hbWVzLCB0eXBlcywg ZGVmYXVsdCB2YWx1ZXMsIENIRUNLIGNvbnN0cmFpbnRzLCBldGMpCisgKgkgIChuYW1lcywg dHlwZXMsIGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgUEVSSU9EcywgZXRj KQogICoKICAqCW1vZGlmaWVzIHRibGluZm8KICAqLwpAQCAtODQxNyw2ICs4NDI4LDggQEAg Z2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBu dW1UYWJsZXMpCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKIAl7CiAJ CVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0YmxpbmZvW2ldOworCQlpbnQJCQluZHVtcGFibGVj aGVja3M7CS8qIG51bWJlciBvZiBDSEVDSyBjb25zdHJhaW50cyB0aGF0IGRvCisJCQkJCQkJ CQkJICAgbm90IGJlbG9uZyB0byBhIHBlcmlvZCAqLwogCiAJCS8qIERvbid0IGJvdGhlciB0 byBjb2xsZWN0IGluZm8gZm9yIHNlcXVlbmNlcyAqLwogCQlpZiAodGJpbmZvLT5yZWxraW5k ID09IFJFTEtJTkRfU0VRVUVOQ0UpCkBAIC04NDMxLDcgKzg0NDQsOCBAQCBnZXRUYWJsZUF0 dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykK IAkJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcih0YmxvaWRzLCAnLCcpOwogCQlhcHBlbmRQUUV4 cEJ1ZmZlcih0YmxvaWRzLCAiJXUiLCB0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKIAotCQlp ZiAodGJpbmZvLT5uY2hlY2sgPiAwKQorCQluZHVtcGFibGVjaGVja3MgPSB0YmluZm8tPm5j aGVjayAtIHRiaW5mby0+bnBlcmlvZDsKKwkJaWYgKG5kdW1wYWJsZWNoZWNrcyA+IDApCiAJ CXsKIAkJCS8qIEFsc28gbWFrZSBhIGxpc3Qgb2YgdGhlIG9uZXMgd2l0aCBjaGVjayBjb25z dHJhaW50cyAqLwogCQkJaWYgKGNoZWNrb2lkcy0+bGVuID4gMSkgLyogZG8gd2UgaGF2ZSBt b3JlIHRoYW4gdGhlICd7Jz8gKi8KQEAgLTg5NjcsMTUgKzg5ODEsMzYgQEAgZ2V0VGFibGVB dHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMp CiAJCXBnX2xvZ19pbmZvKCJmaW5kaW5nIHRhYmxlIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAK IAkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKLQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKLQkJCQkJ CSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKLQkJ CQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQpIEFTIGNvbnNy YywgIgotCQkJCQkJICAiY29uaXNsb2NhbCwgY29udmFsaWRhdGVkICIKLQkJCQkJCSAgIkZS T00gdW5uZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCi0J CQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjIE9OIChzcmMudGJsb2lk ID0gYy5jb25yZWxpZClcbiIKLQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgotCQkJ CQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5jb25uYW1lIiwKLQkJCQkJCSAgY2hlY2tv aWRzLT5kYXRhKTsKKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKQorCQl7 CisJCQkvKgorCQkJICogUEVSSU9EcyB3ZXJlIGFkZGVkIGluIHYxNyBhbmQgd2UgZG9uJ3Qg ZHVtcCBDSEVDSworCQkJICogY29uc3RyYWludHMgZm9yIHRoZW0uCisJCQkgKi8KKwkJCWFw cGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQsIGMub2lk LCBjb25yZWxpZCwgY29ubmFtZSwgIgorCQkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2Nv bnN0cmFpbnRkZWYoYy5vaWQpIEFTIGNvbnNyYywgIgorCQkJCQkJCSAgImNvbmlzbG9jYWws IGNvbnZhbGlkYXRlZCAiCisJCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxv Zy5vaWRbXSkgQVMgc3JjKHRibG9pZClcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cu cGdfY29uc3RyYWludCBjIE9OIChzcmMudGJsb2lkID0gYy5jb25yZWxpZClcbiIKKwkJCQkJ CQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKKwkJCQkJCQkgICIgICBBTkQgTk9UIEVYSVNU UyAoU0VMRUNUIEZST00gcGdfcGVyaW9kICIKKwkJCQkJCQkgICIgICAgICAgICAgICAgICAg ICAgV0hFUkUgKHBlcnJlbGlkLCBwZXJjb25zdHJhaW50KSA9IChjb25yZWxpZCwgYy5vaWQp KSAiCisJCQkJCQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5jb25uYW1lIiwKKwkJCQkJ CQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9pZCwgY29ucmVs aWQsIGNvbm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50 ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxp ZGF0ZWQgIgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10p IEFTIHNyYyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0 cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCisJCQkJCQkJICAiV0hF UkUgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5j b25uYW1lIiwKKwkJCQkJCQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCX0KIAogCQlyZXMgPSBF eGVjdXRlU3FsUXVlcnkoZm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIApAQCAt ODk5Nyw2ICs5MDMyLDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlPaWQJCQljb25yZWxpZCA9IGF0b29p ZChQUWdldHZhbHVlKHJlcywgaiwgaV9jb25yZWxpZCkpOwogCQkJVGFibGVJbmZvICAqdGJp bmZvID0gTlVMTDsKIAkJCWludAkJCW51bWNvbnM7CisJCQlpbnQJCQluZHVtcGFibGVjaGVj a3M7CiAKIAkJCS8qIENvdW50IHJvd3MgZm9yIHRoaXMgdGFibGUgKi8KIAkJCWZvciAobnVt Y29ucyA9IDE7IG51bWNvbnMgPCBudW1Db25zdHJzIC0gajsgbnVtY29ucysrKQpAQCAtOTAx NiwxMiArOTA1MiwxMyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCWlmIChjdXJ0YmxpbmR4ID49IG51bVRh YmxlcykKIAkJCQlwZ19mYXRhbCgidW5yZWNvZ25pemVkIHRhYmxlIE9JRCAldSIsIGNvbnJl bGlkKTsKIAotCQkJaWYgKG51bWNvbnMgIT0gdGJpbmZvLT5uY2hlY2spCisJCQluZHVtcGFi bGVjaGVja3MgPSB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsKKwkJCWlmIChu dW1jb25zICE9IG5kdW1wYWJsZWNoZWNrcykKIAkJCXsKIAkJCQlwZ19sb2dfZXJyb3Iobmdl dHRleHQoImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnQgb24gdGFibGUgXCIlc1wiIGJ1 dCBmb3VuZCAlZCIsCiAJCQkJCQkJCQkgICJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50 cyBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwKLQkJCQkJCQkJCSAgdGJpbmZvLT5u Y2hlY2spLAotCQkJCQkJCSB0YmluZm8tPm5jaGVjaywgdGJpbmZvLT5kb2JqLm5hbWUsIG51 bWNvbnMpOworCQkJCQkJCQkJICBuZHVtcGFibGVjaGVja3MpLAorCQkJCQkJCSBuZHVtcGFi bGVjaGVja3MsIHRiaW5mby0+ZG9iai5uYW1lLCBudW1jb25zKTsKIAkJCQlwZ19sb2dfZXJy b3JfaGludCgiVGhlIHN5c3RlbSBjYXRhbG9ncyBtaWdodCBiZSBjb3JydXB0ZWQuIik7CiAJ CQkJZXhpdF9uaWNlbHkoMSk7CiAJCQl9CkBAIC05MDgwLDYgKzkxMTcsNzkgQEAgZ2V0VGFi bGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJs ZXMpCiAJCVBRY2xlYXIocmVzKTsKIAl9CiAKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bVRh YmxlczsgaSsrKQorCXsKKwkJVGFibGVJbmZvICAqdGJpbmZvID0gJnRibGluZm9baV07CisK KwkJLyoKKwkJICogR2V0IGluZm8gYWJvdXQgUEVSSU9EIGRlZmluaXRpb25zCisJCSAqLwor CQlpZiAodGJpbmZvLT5ucGVyaW9kID4gMCkKKwkJeworCQkJUGVyaW9kSW5mbyAqcGVyaW9k czsKKwkJCWludAkJCW51bVBlcmlvZHM7CisJCQlpbnQJCQlqOworCisJCQkvKiBXZSBzaG91 bGRuJ3QgaGF2ZSBhbnkgcGVyaW9kcyBiZWZvcmUgdjE3ICovCisJCQlBc3NlcnQoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApOworCisJCQlwZ19sb2dfaW5mbygiZmluZGluZyBw ZXJpb2RzIGZvciB0YWJsZSBcIiVzLiVzXCIiLAorCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWVz cGFjZS0+ZG9iai5uYW1lLAorCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOworCisJCQlyZXNl dFBRRXhwQnVmZmVyKHEpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkiU0VMRUNU IHAudGFibGVvaWQsIHAub2lkLCBwLnBlcm5hbWUsICIKKwkJCQkiICAgICAgIHNhLmF0dG5h bWUgQVMgcGVyc3RhcnQsIGVhLmF0dG5hbWUgQVMgcGVyZW5kLCAiCisJCQkJIiAgICAgICBy LnR5cG5hbWUgQVMgcm5ndHlwZSwgIgorCQkJCSIgICAgICAgYy5jb25uYW1lIEFTIGNvbm5h bWUgIgorCQkJCSJGUk9NIHBnX2NhdGFsb2cucGdfcGVyaW9kIEFTIHAgIgorCQkJCSJKT0lO IHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIHNhIE9OIChzYS5hdHRyZWxpZCwgc2EuYXR0 bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KSAiCisJCQkJIkpPSU4gcGdfY2F0YWxv Zy5wZ19hdHRyaWJ1dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAu cGVycmVsaWQsIHAucGVyZW5kKSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ190eXBlIEFT IHIgT04gci5vaWQgPSBwLnBlcnJuZ3R5cGUgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdf Y29uc3RyYWludCBBUyBjIE9OIGMub2lkID0gcC5wZXJjb25zdHJhaW50ICIKKwkJCQkiV0hF UkUgcC5wZXJyZWxpZCA9ICcldSc6OnBnX2NhdGFsb2cub2lkICIKKwkJCQkiT1JERVIgQlkg cC5wZXJuYW1lIiwKKwkJCQl0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKKworCQkJcmVzID0g RXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisKKwkJ CS8qCisJCQkgKiBJZiB3ZSBkaWRuJ3QgZ2V0IHRoZSBudW1iZXIgb2Ygcm93cyB3ZSB0aG91 Z2h0IHdlIHdlcmUgZ29pbmcgdG8sCisJCQkgKiB0aGVuIHRob3NlIEpPSU5zIGRpZG4ndCB3 b3JrLgorCQkJICovCisJCQludW1QZXJpb2RzID0gUFFudHVwbGVzKHJlcyk7CisJCQlpZiAo bnVtUGVyaW9kcyAhPSB0YmluZm8tPm5wZXJpb2QpCisJCQl7CisJCQkJcGdfbG9nX2luZm8o bmdldHRleHQoImV4cGVjdGVkICVkIHBlcmlvZCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5k ICVkIiwKKwkJCQkJCQkJCSAiZXhwZWN0ZWQgJWQgcGVyaW9kcyBvbiB0YWJsZSBcIiVzXCIg YnV0IGZvdW5kICVkIiwKKwkJCQkJCQkJCSB0YmluZm8tPm5wZXJpb2QpLAorCQkJCQkJCXRi aW5mby0+bnBlcmlvZCwgdGJpbmZvLT5kb2JqLm5hbWUsIG51bVBlcmlvZHMpOworCQkJCXBn X2xvZ19pbmZvKCIoVGhlIHN5c3RlbSBjYXRhbG9ncyBtaWdodCBiZSBjb3JydXB0ZWQuKSIp OworCQkJCWV4aXRfbmljZWx5KDEpOworCQkJfQorCisJCQlwZXJpb2RzID0gKFBlcmlvZElu Zm8gKikgcGdfbWFsbG9jKG51bVBlcmlvZHMgKiBzaXplb2YoUGVyaW9kSW5mbykpOworCQkJ dGJpbmZvLT5wZXJpb2RzID0gcGVyaW9kczsKKworCQkJZm9yIChqID0gMDsgaiA8IG51bVBl cmlvZHM7IGorKykKKwkJCXsKKwkJCQlwZXJpb2RzW2pdLmRvYmoub2JqVHlwZSA9IERPX1BF UklPRDsKKwkJCQlwZXJpb2RzW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPSBhdG9vaWQoUFFn ZXR2YWx1ZShyZXMsIGosIDApKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmouY2F0SWQub2lkID0g YXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAxKSk7CisJCQkJQXNzaWduRHVtcElkKCZwZXJp b2RzW2pdLmRvYmopOworCQkJCXBlcmlvZHNbal0uZG9iai5uYW1lID0gcGdfc3RyZHVwKFBR Z2V0dmFsdWUocmVzLCBqLCAyKSk7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm5hbWVzcGFjZSA9 IHRiaW5mby0+ZG9iai5uYW1lc3BhY2U7CisJCQkJcGVyaW9kc1tqXS5wZXJ0YWJsZSA9IHRi aW5mbzsKKwkJCQlwZXJpb2RzW2pdLnBlcnN0YXJ0ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCBqLCAzKSk7CisJCQkJcGVyaW9kc1tqXS5wZXJlbmQgPSBwZ19zdHJkdXAoUFFnZXR2 YWx1ZShyZXMsIGosIDQpKTsKKwkJCQlwZXJpb2RzW2pdLnJuZ3R5cGUgPSBwZ19zdHJkdXAo UFFnZXR2YWx1ZShyZXMsIGosIDUpKTsKKwkJCQlwZXJpb2RzW2pdLmNvbm5hbWUgPSBwZ19z dHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDYpKTsKKwkJCX0KKwkJCVBRY2xlYXIocmVzKTsK KwkJfQorCX0KKwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxKTsKIAlkZXN0cm95UFFFeHBCdWZm ZXIodGJsb2lkcyk7CiAJZGVzdHJveVBRRXhwQnVmZmVyKGNoZWNrb2lkcyk7CkBAIC0xMDM1 MCw2ICsxMDQ2MCw4IEBAIGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBEdW1w YWJsZU9iamVjdCAqZG9iaikKIAkJY2FzZSBET19GS19DT05TVFJBSU5UOgogCQkJZHVtcENv bnN0cmFpbnQoZm91dCwgKGNvbnN0IENvbnN0cmFpbnRJbmZvICopIGRvYmopOwogCQkJYnJl YWs7CisJCWNhc2UgRE9fUEVSSU9EOgorCQkJYnJlYWs7CiAJCWNhc2UgRE9fUFJPQ0xBTkc6 CiAJCQlkdW1wUHJvY0xhbmcoZm91dCwgKGNvbnN0IFByb2NMYW5nSW5mbyAqKSBkb2JqKTsK IAkJCWJyZWFrOwpAQCAtMTU4ODUsNiArMTU5OTcsMzIgQEAgZHVtcFRhYmxlU2NoZW1hKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCX0KIAkJCX0KIAor CQkJLyoKKwkJCSAqIEFkZCBub24taW5oZXJpdGVkIFBFUklPRCBkZWZpbml0aW9ucywgaWYg YW55LgorCQkJICovCisJCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5ucGVyaW9kOyBqKysp CisJCQl7CisJCQkJUGVyaW9kSW5mbyAqcGVyaW9kID0gJih0YmluZm8tPnBlcmlvZHNbal0p OworCisJCQkJY2hhcgkgICAqbmFtZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPmRvYmou bmFtZSkpOworCQkJCWNoYXIJICAgKnN0YXJ0ID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ cGVyc3RhcnQpKTsKKwkJCQljaGFyCSAgICplbmQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9k LT5wZXJlbmQpKTsKKwkJCQljaGFyCSAgICpybmd0eXBlID0gcGdfc3RyZHVwKGZtdElkKHBl cmlvZC0+cm5ndHlwZSkpOworCQkJCWNoYXIJICAgKmNvbm5hbWUgPSBwZ19zdHJkdXAoZm10 SWQocGVyaW9kLT5jb25uYW1lKSk7CisKKwkJCQlpZiAoYWN0dWFsX2F0dHMgPT0gMCkKKwkJ CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiAoXG4gICAgIik7CisJCQkJZWxzZQorCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiLFxuICAgICIpOworCisJCQkJYXBwZW5kUFFF eHBCdWZmZXIocSwgIlBFUklPRCBGT1IgJXMgKCVzLCAlcykgIgorCQkJCQkJIldJVEggKHJh bmdldHlwZSA9ICVzLCBjaGVja19jb25zdHJhaW50X25hbWUgPSAlcykiLAorCQkJCQkJCQkg IG5hbWUsIHN0YXJ0LCBlbmQsCisJCQkJCQkJCSAgcm5ndHlwZSwgY29ubmFtZSk7CisKKwkJ CQlhY3R1YWxfYXR0cysrOworCQkJfQorCiAJCQkvKgogCQkJICogQWRkIG5vbi1pbmhlcml0 ZWQgQ0hFQ0sgY29uc3RyYWludHMsIGlmIGFueS4KIAkJCSAqCkBAIC0xNTg5Myw3ICsxNjAz MSw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8g KnRiaW5mbykKIAkJCSAqIFBBUlRJVElPTiB0aGF0IHdlJ2xsIGVtaXQgbGF0ZXIgZXhwZWN0 cyB0aGUgY29uc3RyYWludCB0byBiZQogCQkJICogdGhlcmUuICAoTm8gbmVlZCB0byBmaXgg Y29uaXNsb2NhbDogQVRUQUNIIFBBUlRJVElPTiBkb2VzIHRoYXQpCiAJCQkgKi8KLQkJCWZv ciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjazsgaisrKQorCQkJZm9yIChqID0gMDsgaiA8 IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJCQl7CiAJCQkJQ29u c3RyYWludEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2pdKTsKIApAQCAt MTYxMTEsNyArMTYyNDksNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29u c3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBGb3IgcGFydGl0aW9ucywgdGhleSB3ZXJl IGFscmVhZHkgZHVtcGVkLCBhbmQgY29uaXNsb2NhbAogCQkJICogZG9lc24ndCBuZWVkIGZp eGluZy4KIAkJCSAqLwotCQkJZm9yIChrID0gMDsgayA8IHRiaW5mby0+bmNoZWNrOyBrKysp CisJCQlmb3IgKGsgPSAwOyBrIDwgdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7 IGsrKykKIAkJCXsKIAkJCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNo ZWNrZXhwcnNba10pOwogCkBAIC0xNjQxMyw3ICsxNjU1MSw3IEBAIGR1bXBUYWJsZVNjaGVt YShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJZHVtcFRhYmxl U2VjTGFiZWwoZm91dCwgdGJpbmZvLCByZWx0eXBlbmFtZSk7CiAKIAkvKiBEdW1wIGNvbW1l bnRzIG9uIGlubGluZWQgdGFibGUgY29uc3RyYWludHMgKi8KLQlmb3IgKGogPSAwOyBqIDwg dGJpbmZvLT5uY2hlY2s7IGorKykKKwlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2sg LSB0YmluZm8tPm5wZXJpb2Q7IGorKykKIAl7CiAJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIg PSAmKHRiaW5mby0+Y2hlY2tleHByc1tqXSk7CiAKQEAgLTE4NTA5LDYgKzE4NjQ3LDcgQEAg YWRkQm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVPYmplY3QgKipkb2JqcywgaW50IG51 bU9ianMsCiAJCQljYXNlIERPX1RSSUdHRVI6CiAJCQljYXNlIERPX0VWRU5UX1RSSUdHRVI6 CiAJCQljYXNlIERPX0RFRkFVTFRfQUNMOgorCQkJY2FzZSBET19QRVJJT0Q6CiAJCQljYXNl IERPX1BPTElDWToKIAkJCWNhc2UgRE9fUFVCTElDQVRJT046CiAJCQljYXNlIERPX1BVQkxJ Q0FUSU9OX1JFTDoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDc3M2EyZGUxOGIuLjE5OWIyNTU3MWIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIGVudW0KIAlET19U UklHR0VSLAogCURPX0NPTlNUUkFJTlQsCiAJRE9fRktfQ09OU1RSQUlOVCwJCQkvKiBzZWUg bm90ZSBmb3IgQ29uc3RyYWludEluZm8gKi8KKwlET19QRVJJT0QsCiAJRE9fUFJPQ0xBTkcs CiAJRE9fQ0FTVCwKIAlET19UQUJMRV9EQVRBLApAQCAtMjk5LDEyICszMDAsMTQgQEAgdHlw ZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJCXJvd3NlYzsJCQkvKiBpcyByb3cgc2Vj dXJpdHkgZW5hYmxlZD8gKi8KIAlib29sCQlmb3JjZXJvd3NlYzsJLyogaXMgcm93IHNlY3Vy aXR5IGZvcmNlZD8gKi8KIAlib29sCQloYXNvaWRzOwkJLyogZG9lcyBpdCBoYXZlIE9JRHM/ ICovCisJYm9vbAkJaGFzcGVyaW9kczsJCS8qIGRvZXMgaXQgaGF2ZSBhbnkgcGVyaW9kcz8g Ki8KIAl1aW50MzIJCWZyb3plbnhpZDsJCS8qIHRhYmxlJ3MgcmVsZnJvemVueGlkICovCiAJ dWludDMyCQltaW5teGlkOwkJLyogdGFibGUncyByZWxtaW5teGlkICovCiAJT2lkCQkJdG9h c3Rfb2lkOwkJLyogdG9hc3QgdGFibGUncyBPSUQsIG9yIDAgaWYgbm9uZSAqLwogCXVpbnQz MgkJdG9hc3RfZnJvemVueGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbGZyb3plbnhpZCwgaWYg YW55ICovCiAJdWludDMyCQl0b2FzdF9taW5teGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbG1p bm14aWQgKi8KIAlpbnQJCQluY2hlY2s7CQkJLyogIyBvZiBDSEVDSyBleHByZXNzaW9ucyAq LworCWludAkJCW5wZXJpb2Q7CQkvKiAjIG9mIFBFUklPRCBkZWZpbml0aW9ucyAqLwogCU9p ZAkJCXJlbHR5cGU7CQkvKiBPSUQgb2YgdGFibGUncyBjb21wb3NpdGUgdHlwZSwgaWYgYW55 ICovCiAJT2lkCQkJcmVsb2Z0eXBlOwkJLyogdW5kZXJseWluZyB0eXBlIGZvciB0eXBlZCB0 YWJsZSAqLwogCU9pZAkJCWZvcmVpZ25fc2VydmVyOyAvKiBmb3JlaWduIHNlcnZlciBvaWQs IGlmIGFwcGxpY2FibGUgKi8KQEAgLTM1NCw2ICszNTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBf dGFibGVJbmZvCiAJYm9vbAkgICAqbm90bnVsbF9pbmg7CS8qIHRydWUgaWYgTk9UIE5VTEwg aGFzIG5vIGxvY2FsIGRlZmluaXRpb24gKi8KIAlzdHJ1Y3QgX2F0dHJEZWZJbmZvICoqYXR0 cmRlZnM7IC8qIERFRkFVTFQgZXhwcmVzc2lvbnMgKi8KIAlzdHJ1Y3QgX2NvbnN0cmFpbnRJ bmZvICpjaGVja2V4cHJzOyAvKiBDSEVDSyBjb25zdHJhaW50cyAqLworCXN0cnVjdCBfcGVy aW9kSW5mbyAqcGVyaW9kczsJLyogUEVSSU9EIGRlZmluaXRpb25zICovCiAJYm9vbAkJbmVl ZHNfb3ZlcnJpZGU7IC8qIGhhcyBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZICovCiAJ Y2hhcgkgICAqYW1uYW1lOwkJCS8qIHJlbGF0aW9uIGFjY2VzcyBtZXRob2QgKi8KIApAQCAt NDkyLDYgKzQ5NiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAlib29s CQl3aXRob3V0b3ZlcmxhcHM7CS8qIHRydWUgaWYgdGhlIGxhc3QgZWxlbSBpcyBXSVRIT1VU IE9WRVJMQVBTICovCiB9IENvbnN0cmFpbnRJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBfcGVy aW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJVGFibGVJbmZvICAqcGVydGFi bGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0aGUgbmFtZSBvZiB0aGUgc3RhcnQgY29s dW1uICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRoZSBuYW1lIG9mIHRoZSBlbmQgY29s dW1uICovCisJY2hhcgkgICAqcm5ndHlwZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSByYW5nZSB0 eXBlICovCisJY2hhcgkgICAqY29ubmFtZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSBDSEVDSyBj b25zdHJhaW50ICovCit9IFBlcmlvZEluZm87CisKIHR5cGVkZWYgc3RydWN0IF9wcm9jTGFu Z0luZm8KIHsKIAlEdW1wYWJsZU9iamVjdCBkb2JqOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5j CmluZGV4IGFiZmVhMTVjMDkuLjgzMjRmNTAyZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0 LmMKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSBkYk9iamVjdFR5cGVQcmlvcml0aWVzCiAJUFJJ T19DT05TVFJBSU5ULAogCVBSSU9fSU5ERVgsCiAJUFJJT19JTkRFWF9BVFRBQ0gsCisJUFJJ T19QRVJJT0QsCiAJUFJJT19TVEFUU0VYVCwKIAlQUklPX1JVTEUsCiAJUFJJT19UUklHR0VS LApAQCAtMTE5LDYgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJp b3JpdHlbXSA9CiAJUFJJT19BVFRSREVGLAkJCQkvKiBET19BVFRSREVGICovCiAJUFJJT19J TkRFWCwJCQkJCS8qIERPX0lOREVYICovCiAJUFJJT19JTkRFWF9BVFRBQ0gsCQkJLyogRE9f SU5ERVhfQVRUQUNIICovCisJUFJJT19QRVJJT0QsCQkJCS8qIERPX1BFUklPRCAqLwogCVBS SU9fU1RBVFNFWFQsCQkJCS8qIERPX1NUQVRTRVhUICovCiAJUFJJT19SVUxFLAkJCQkJLyog RE9fUlVMRSAqLwogCVBSSU9fVFJJR0dFUiwJCQkJLyogRE9fVFJJR0dFUiAqLwpAQCAtMTM2 OCw2ICsxMzcwLDExIEBAIGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3Qg Km9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJGSyBDT05TVFJBSU5UICVz ICAoSUQgJWQgT0lEICV1KSIsCiAJCQkJCSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmot PmNhdElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9fUEVSSU9EOgorCQkJc25wcmlu dGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlBFUklPRCAlcyAgKElEICVkIE9JRCAldSkiLAor CQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOworCQkJcmV0 dXJuOwogCQljYXNlIERPX1BST0NMQU5HOgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAog CQkJCQkgIlBST0NFRFVSQUwgTEFOR1VBR0UgJXMgIChJRCAlZCBPSUQgJXUpIiwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggNGZiZmMwNzQ2MC4uYmZiMjkwOWI5NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE5NDgs NiArMTk0OCw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiXG5GUk9NIHBnX2NhdGFs b2cucGdfYXR0cmlidXRlIGEiKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiXG5XSEVS RSBhLmF0dHJlbGlkID0gJyVzJyBBTkQgYS5hdHRudW0gPiAwIEFORCBOT1QgYS5hdHRpc2Ry b3BwZWQiLCBvaWQpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwgIlxuQU5EIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf Y2F0YWxvZy5wZ19wZXJpb2QgcCBXSEVSRSBwLnBlcnJlbGlkID0gYS5hdHRyZWxpZCBBTkQg cC5wZXJyYW5nZSA9IGEuYXR0bnVtKSIpOwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs ICJcbk9SREVSIEJZIGEuYXR0bnVtOyIpOwogCiAJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEp OwpAQCAtMjM3MCw2ICsyMzcyLDQwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7CiAJCWlu dAkJCXR1cGxlcyA9IDA7CiAKKwkJLyogcHJpbnQgcGVyaW9kcyAqLworCQlpZiAocHNldC5z dmVyc2lvbiA+PSAxNTAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCQkJICAiU0VMRUNUIHF1b3RlX2lkZW50KHAucGVybmFtZSksIHF1b3RlX2lkZW50KHMu YXR0bmFtZSkgQVMgc3RhcnRhdHQsIHF1b3RlX2lkZW50KGUuYXR0bmFtZSkgQVMgZW5kYXR0 XG4iCisJCQkJCQkJICAiRlJPTSBwZ19wZXJpb2QgQVMgcFxuIgorCQkJCQkJCSAgIkpPSU4g cGdfYXR0cmlidXRlIEFTIHMgT04gKHMuYXR0cmVsaWQsIHMuYXR0bnVtKSA9IChwLnBlcnJl bGlkLCBwLnBlcnN0YXJ0KVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIGUg T04gKGUuYXR0cmVsaWQsIGUuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZClcbiIK KwkJCQkJCQkgICJXSEVSRSBwLnBlcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCSAgIk9SREVS IEJZIDE7IiwKKwkJCQkJCQkgIG9pZCk7CisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0 YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UK KwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDAp CisJCQl7CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgXygiUGVyaW9kczoiKSk7 CisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJCXsKKwkJCQkJLyogdW50 cmFuc2xhdGVkIGNvbnN0cmFpbnQgbmFtZSBhbmQgZGVmICovCisJCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsICIgICAgJXMgKCVzLCAlcykiLAorCQkJCQkJCQkJICBQUWdldHZhbHVl KHJlc3VsdCwgaSwgMCksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxKSwK KwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpKTsKKworCQkJCQlwcmludFRh YmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQkJfQorCQkJfQorCQkJUFFjbGVh cihyZXN1bHQpOworCQl9CisKIAkJLyogcHJpbnQgaW5kZXhlcyAqLwogCQlpZiAodGFibGVp bmZvLmhhc2luZGV4KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2Rl cGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IGZm ZDVlOWRjODIuLjhmMDNiZjNkZTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBA IC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19DQVNU LAkJCQkvKiBwZ19jYXN0ICovCiAJT0NMQVNTX0NPTExBVElPTiwJCQkvKiBwZ19jb2xsYXRp b24gKi8KIAlPQ0xBU1NfQ09OU1RSQUlOVCwJCQkvKiBwZ19jb25zdHJhaW50ICovCisJT0NM QVNTX1BFUklPRCwJCQkJLyogcGdfcGVyaW9kICovCiAJT0NMQVNTX0NPTlZFUlNJT04sCQkJ LyogcGdfY29udmVyc2lvbiAqLwogCU9DTEFTU19ERUZBVUxULAkJCQkvKiBwZ19hdHRyZGVm ICovCiAJT0NMQVNTX0xBTkdVQUdFLAkJCS8qIHBnX2xhbmd1YWdlICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVh cC5oCmluZGV4IDUxZjdiMTJhYTMuLjFmNjQ2ZjNkM2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCkBA IC0xMjEsNiArMTIxLDEwIEBAIGV4dGVybiBMaXN0ICpBZGRSZWxhdGlvbk5vdE51bGxDb25z dHJhaW50cyhSZWxhdGlvbiByZWwsCiBleHRlcm4gdm9pZCBSZWxhdGlvbkNsZWFyTWlzc2lu ZyhSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlk LCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSk7CiAKK2V4dGVybiBPaWQgU3RvcmVQZXJp b2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2QsCisJCQkJCSAgIEF0dHJOdW1i ZXIgc3RhcnRudW0sIEF0dHJOdW1iZXIgZW5kbnVtLAorCQkJCQkgICBBdHRyTnVtYmVyIHJh bmdlbnVtLCBPaWQgY29ub2lkKTsKKwogZXh0ZXJuIE5vZGUgKmNvb2tEZWZhdWx0KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSBOb2RlICpyYXdfZGVmYXVsdCwKIAkJCQkJCSBPaWQg YXR0dHlwaWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxk IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCBkY2IzYzVmNzY2Li4x OTQzNzI5MWE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxk CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTYxLDYgKzYxLDcg QEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfY29sbGF0aW9uLmgnLAogICAncGdfcGFy YW1ldGVyX2FjbC5oJywKICAgJ3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgnLAorICAncGdfcGVy aW9kLmgnLAogICAncGdfcmFuZ2UuaCcsCiAgICdwZ190cmFuc2Zvcm0uaCcsCiAgICdwZ19z ZXF1ZW5jZS5oJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaAppbmRleCAzMjkzMDQxMWI2Li5h NGUwMmRkY2E3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCkBAIC00OCw3ICs0OCw2IEBA IENBVEFMT0cocGdfaW5kZXgsMjYxMCxJbmRleFJlbGF0aW9uSWQpIEJLSV9TQ0hFTUFfTUFD Uk8KIAkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUsIGJ1dCB3ZSBhbGxv dyBkaXJlY3QgYWNjZXNzIHRvIGluZGtleSAqLwogCWludDJ2ZWN0b3IJaW5ka2V5IEJLSV9G T1JDRV9OT1RfTlVMTDsJLyogY29sdW1uIG51bWJlcnMgb2YgaW5kZXhlZCBjb2xzLAogCQkJ CQkJCQkJCQkgKiBvciAwICovCi0KICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgogCW9pZHZlY3Rv cglpbmRjb2xsYXRpb24gQktJX0xPT0tVUF9PUFQocGdfY29sbGF0aW9uKSBCS0lfRk9SQ0Vf Tk9UX05VTEw7CS8qIGNvbGxhdGlvbiBpZGVudGlmaWVycyAqLwogCW9pZHZlY3RvcglpbmRj bGFzcyBCS0lfTE9PS1VQKHBnX29wY2xhc3MpIEJLSV9GT1JDRV9OT1RfTlVMTDsgLyogb3Bj bGFzcyBpZGVudGlmaWVycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wZXJpb2QuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDJjZmZhMDdiYwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKQEAgLTAsMCArMSw1NCBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcGVyaW9kLmgKKyAqCSAgZGVm aW5pdGlvbiBvZiB0aGUgInBlcmlvZCIgc3lzdGVtIGNhdGFsb2cgKHBnX3BlcmlvZCkKKyAq CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wZXJpb2QuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSBy ZWFkcyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1BFUklPRF9ICisj ZGVmaW5lIFBHX1BFUklPRF9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kX2QuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLQor ICoJCXBnX3BlcmlvZCBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5 cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3BlcmlvZAorICogLS0tLS0tLS0tLS0tLS0tLQor ICovCitDQVRBTE9HKHBnX3BlcmlvZCw4MDAwLFBlcmlvZFJlbGF0aW9uSWQpCit7CisJT2lk CQkJb2lkOwkJCS8qIE9JRCBvZiB0aGUgcGVyaW9kICovCisJTmFtZURhdGEJcGVybmFtZTsJ CS8qIG5hbWUgb2YgcGVyaW9kICovCisJT2lkCQkJcGVycmVsaWQ7CQkvKiBPSUQgb2YgcmVs YXRpb24gY29udGFpbmluZyB0aGlzIHBlcmlvZCAqLworCWludDE2CQlwZXJzdGFydDsJCS8q IGNvbHVtbiBmb3Igc3RhcnQgdmFsdWUgKi8KKwlpbnQxNgkJcGVyZW5kOwkJCS8qIGNvbHVt biBmb3IgZW5kIHZhbHVlICovCisJaW50MTYJCXBlcnJhbmdlOwkJLyogY29sdW1uIGZvciBy YW5nZSB2YWx1ZSAqLworCU9pZAkJCXBlcmNvbnN0cmFpbnQ7CS8qIE9JRCBvZiAoc3RhcnQg PCBlbmQpIGNvbnN0cmFpbnQgKi8KK30gRm9ybURhdGFfcGdfcGVyaW9kOworCisvKiAtLS0t LS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ19wZXJpb2QgY29ycmVzcG9uZHMgdG8gYSBwb2lu dGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfcGVyaW9kIHJlbGF0 aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3Bl cmlvZCAqRm9ybV9wZ19wZXJpb2Q7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdf cGVyaW9kX29pZF9pbmRleCwgODAwMSwgUGVyaW9kT2JqZWN0SW5kZXhJZCwgcGdfcGVyaW9k LCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcGVyaW9k X3BlcnJlbGlkX3Blcm5hbWVfaW5kZXgsIDgwMDIsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQs IHBnX3BlcmlvZCwgYnRyZWUocGVycmVsaWQgb2lkX29wcywgcGVybmFtZSBuYW1lX29wcykp OworCitleHRlcm4gdm9pZCBSZW1vdmVQZXJpb2RCeUlkKE9pZCBwZXJpb2RJZCk7CisKK2V4 dGVybiBPaWQgZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFy ICpwZXJuYW1lLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X3Bl cmlvZF9hdHRub3MoT2lkIHJlbGlkKTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BFUklPRF9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKaW5kZXggMTI0N2ZhN2M3Ny4uN2VkMDE0Yjcx ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVm IEZvcm1EYXRhX3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwogCiBERUNMQVJFX1VOSVFVRV9J TkRFWF9QS0VZKHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAzNTQyLCBSYW5nZVR5cGlkSW5k ZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ3R5cGlkIG9pZF9vcHMpKTsKIERFQ0xBUkVfVU5J UVVFX0lOREVYKHBnX3JhbmdlX3JuZ211bHRpdHlwaWRfaW5kZXgsIDIyMjgsIFJhbmdlTXVs dGlyYW5nZVR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ211bHRpdHlwaWQgb2lk X29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nc3VidHlwZV9ybmd0 eXBpZF9pbmRleCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwgcGdfcmFuZ2Us IGJ0cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQgb2lkX29wcykpOwogCiAvKgog ICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3JhbmdlLmMKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdGFibGVjbWRzLmgKaW5kZXggMTZiNjEyNjY2OS4uZTkxOGQ5YTYzMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdGFibGVjbWRzLmgKQEAgLTM4LDcgKzM4LDggQEAgZXh0ZXJuIExPQ0tNT0RF IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcyk7CiAKIGV4dGVybiB2b2lkIEFU RXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJvb2wg cmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKLWV4dGVybiB2b2lkIEFsdGVyVGFi bGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSk7CitleHRl cm4gdm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29s IHJlY3Vyc2UsCisJCQkJCQkJICAgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCk7CiAKIGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1v dmVBbGxTdG10ICpzdG10KTsKIApAQCAtMTAzLDUgKzEwNCw2IEBAIGV4dGVybiB2b2lkIFJh bmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAog CQkJCQkJCQkJCSBPaWQgcmVsSWQsIE9pZCBvbGRSZWxJZCwgdm9pZCAqYXJnKTsKIGV4dGVy biBib29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBz Y2FucmVsLAogCQkJCQkJCQkJCQkJIExpc3QgKnBhcnRDb25zdHJhaW50KTsKK2V4dGVybiBP aWQgY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKTsKIAog I2VuZGlmCQkJCQkJCS8qIFRBQkxFQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggMTc3ZGY5NmM4Ni4uNTJkZTYxOGQxZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aApAQCAtMjE2Myw2ICsyMTYzLDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpF Q1RfT1BFUkFUT1IsCiAJT0JKRUNUX09QRkFNSUxZLAogCU9CSkVDVF9QQVJBTUVURVJfQUNM LAorCU9CSkVDVF9QRVJJT0QsCiAJT0JKRUNUX1BPTElDWSwKIAlPQkpFQ1RfUFJPQ0VEVVJF LAogCU9CSkVDVF9QVUJMSUNBVElPTiwKQEAgLTIyNTAsNiArMjI1MSw4IEBAIHR5cGVkZWYg ZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX1ZhbGlkYXRlQ29uc3RyYWludCwJCS8qIHZhbGlk YXRlIGNvbnN0cmFpbnQgKi8KIAlBVF9BZGRJbmRleENvbnN0cmFpbnQsCQkvKiBhZGQgY29u c3RyYWludCB1c2luZyBleGlzdGluZyBpbmRleCAqLwogCUFUX0Ryb3BDb25zdHJhaW50LAkJ CS8qIGRyb3AgY29uc3RyYWludCAqLworCUFUX0FkZFBlcmlvZCwJCQkJLyogQUREIFBFUklP RCAqLworCUFUX0Ryb3BQZXJpb2QsCQkJCS8qIERST1AgUEVSSU9EICovCiAJQVRfUmVBZGRD b21tZW50LAkJCS8qIGludGVybmFsIHRvIGNvbW1hbmRzL3RhYmxlY21kcy5jICovCiAJQVRf QWx0ZXJDb2x1bW5UeXBlLAkJCS8qIGFsdGVyIGNvbHVtbiB0eXBlICovCiAJQVRfQWx0ZXJD b2x1bW5HZW5lcmljT3B0aW9ucywJLyogYWx0ZXIgY29sdW1uIE9QVElPTlMgKC4uLikgKi8K QEAgLTI1MTYsMTEgKzI1MTksMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFyaWFibGVTaG93U3Rt dAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUNyZWF0ZSBUYWJsZSBTdGF0ZW1l bnQKICAqCi0gKiBOT1RFOiBpbiB0aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiBh bmQgQ29uc3RyYWludCBub2RlcyBhcmUKLSAqIGludGVybWl4ZWQgaW4gdGFibGVFbHRzLCBh bmQgY29uc3RyYWludHMgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4gIEFmdGVyCi0gKiBw YXJzZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgbm5j b25zdHJhaW50cyBjb250YWlucwotICogQ29uc3RyYWludCBub2RlcyBvZiBDT05TVFJfTk9U TlVMTCB0eXBlIGZyb20gdmFyaW91cyBzb3VyY2VzLCBhbmQKLSAqIGNvbnN0cmFpbnRzIGNv bnRhaW5zIGp1c3QgQ09OU1RSX0NIRUNLIENvbnN0cmFpbnQgbm9kZXMuCisgKiBOT1RFOiBp biB0aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiwgUGVyaW9kRGVmLCBhbmQgQ29u c3RyYWludCBub2RlcyBhcmUKKyAqIGludGVybWl4ZWQgaW4gdGFibGVFbHRzOyBwZXJpb2Rz LCBjb25zdHJhaW50cywgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4gIEFmdGVyCisgKiBw YXJzZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgcGVy aW9kcyBjb250YWlucyBqdXN0IFBlcmlvZERlZnMsCisgKiBubmNvbnN0cmFpbnRzIGNvbnRh aW5zIENvbnN0cmFpbnQgbm9kZXMgb2YgQ09OU1RSX05PVE5VTEwgdHlwZSBmcm9tIHZhcmlv dXMgc291cmNlcywKKyAqIGFuZCBjb25zdHJhaW50cyBjb250YWlucyBqdXN0IENPTlNUUl9D SEVDSyBDb25zdHJhaW50IG5vZGVzLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICov CiAKQEAgLTI1MjksNiArMjUzMiw3IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVN0bXQKIAlO b2RlVGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8g Y3JlYXRlICovCiAJTGlzdAkgICAqdGFibGVFbHRzOwkJLyogY29sdW1uIGRlZmluaXRpb25z IChsaXN0IG9mIENvbHVtbkRlZikgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogcGVyaW9k cyAobGlzdCBvZiBQZXJpb2REZWYgbm9kZXMpICovCiAJTGlzdAkgICAqaW5oUmVsYXRpb25z OwkvKiByZWxhdGlvbnMgdG8gaW5oZXJpdCBmcm9tIChsaXN0IG9mCiAJCQkJCQkJCSAqIFJh bmdlVmFyKSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJvdW5kOwkvKiBGT1IgVkFM VUVTIGNsYXVzZSAqLwpAQCAtMjU0Myw2ICsyNTQ3LDMwIEBAIHR5cGVkZWYgc3RydWN0IENy ZWF0ZVN0bXQKIAlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhpbmcgaWYg aXQgYWxyZWFkeSBleGlzdHM/ICovCiB9IENyZWF0ZVN0bXQ7CiAKKworLyogLS0tLS0tLS0t LQorICogRGVmaW5pdGlvbnMgZm9yIHBlcmlvZHMgaW4gQ3JlYXRlU3RtdAorICogLS0tLS0t LS0tLQorICovCisKK3R5cGVkZWYgc3RydWN0IFBlcmlvZERlZgoreworCU5vZGVUYWcJCXR5 cGU7CisJT2lkCQkJb2lkOwkJCS8qIHBlcmlvZCBvaWQsIG9uY2UgaXQncyB0cmFuc2Zvcm1l ZCAqLworCWNoYXIJICAgKnBlcmlvZG5hbWU7CQkvKiBwZXJpb2QgbmFtZSAqLworCWNoYXIJ ICAgKnN0YXJ0Y29sbmFtZTsJLyogbmFtZSBvZiBzdGFydCBjb2x1bW4gKi8KKwljaGFyCSAg ICplbmRjb2xuYW1lOwkJLyogbmFtZSBvZiBlbmQgY29sdW1uICovCisJQXR0ck51bWJlcglz dGFydGF0dG51bTsJLyogYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlBdHRyTnVt YmVyCWVuZGF0dG51bTsJCS8qIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVtbiAqLworCUF0dHJO dW1iZXIJcm5nYXR0bnVtOwkJLyogYXR0bnVtIG9mIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29s dW1uICovCisJTGlzdAkgICAqb3B0aW9uczsJCS8qIG9wdGlvbnMgZnJvbSBXSVRIIGNsYXVz ZSAqLworCWNoYXIJICAgKmNvbnN0cmFpbnRuYW1lOwkvKiBuYW1lIG9mIHRoZSBDSEVDSyBj b25zdHJhaW50ICovCisJY2hhcgkgICAqcmFuZ2V0eXBlbmFtZTsJLyogbmFtZSBvZiB0aGUg cmFuZ2UgdHlwZSAqLworCU9pZAkJCWNvbHR5cGlkOwkJLyogdGhlIHN0YXJ0L2VuZCBjb2wg dHlwZSAqLworCU9pZAkJCXJuZ3R5cGlkOwkJLyogdGhlIHJhbmdlIHR5cGUgdG8gdXNlICov CisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93 biAqLworfSBQZXJpb2REZWY7CisKIC8qIC0tLS0tLS0tLS0KICAqIERlZmluaXRpb25zIGZv ciBjb25zdHJhaW50cyBpbiBDcmVhdGVTdG10CiAgKgpAQCAtMzI1Miw2ICszMjgwLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgSW5kZXhTdG10CiAJTGlzdAkgICAqaW5kZXhQYXJhbXM7CS8qIGNv bHVtbnMgdG8gaW5kZXg6IGEgbGlzdCBvZiBJbmRleEVsZW0gKi8KIAlMaXN0CSAgICppbmRl eEluY2x1ZGluZ1BhcmFtczsJLyogYWRkaXRpb25hbCBjb2x1bW5zIHRvIGluZGV4OiBhIGxp c3QKIAkJCQkJCQkJCQkgKiBvZiBJbmRleEVsZW0gKi8KKwlQZXJpb2REZWYgICpwZXJpb2Q7 CQkJLyogVGhlIHBlcmlvZCBpbmNsdWRlZCBpbiB0aGUgaW5kZXggKi8KIAlMaXN0CSAgICpv cHRpb25zOwkJLyogV0lUSCBjbGF1c2Ugb3B0aW9uczogYSBsaXN0IG9mIERlZkVsZW0gKi8K IAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbiAocGFydGlhbC1pbmRl eCBwcmVkaWNhdGUpICovCiAJTGlzdAkgICAqZXhjbHVkZU9wTmFtZXM7IC8qIGV4Y2x1c2lv biBvcGVyYXRvciBuYW1lcywgb3IgTklMIGlmIG5vbmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfdXRpbGNtZC5oCmluZGV4IDJiNDBhMGI1YjEuLmZlYjZjMjYwMDcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX3V0aWxjbWQuaApAQCAtNDAsNSArNDAsNiBAQCBleHRlcm4gSW5kZXhT dG10ICpnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwKIAkJCQkJ CQkJCQkgIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCQkJCQkJCQkJICBjb25zdCBzdHJ1Y3Qg QXR0ck1hcCAqYXR0bWFwLAogCQkJCQkJCQkJCSAgT2lkICpjb25zdHJhaW50T2lkKTsKK2V4 dGVybiB2b2lkIHRyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpOwog CiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfVVRJTENNRF9IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNo ZS5oCmluZGV4IGExMTc1MjdkOGEuLmYwMTViNTFjODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNo ZS5oCkBAIC05Niw2ICs5Niw4IEBAIGV4dGVybiBPaWQJZ2V0X2F0dHR5cGUoT2lkIHJlbGlk LCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4gdm9pZCBnZXRfYXR0dHlwZXR5cG1vZGNv bGwoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJICBPaWQgKnR5cGlk LCBpbnQzMiAqdHlwbW9kLCBPaWQgKmNvbGxpZCk7CiBleHRlcm4gRGF0dW0gZ2V0X2F0dG9w dGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pOworZXh0ZXJuIGNoYXIgKmdldF9wZXJp b2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBPaWQJZ2V0 X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpwZXJpb2RuYW1lLCBib29sIG1p c3Npbmdfb2spOwogZXh0ZXJuIE9pZAlnZXRfY2FzdF9vaWQoT2lkIHNvdXJjZXR5cGVpZCwg T2lkIHRhcmdldHR5cGVpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRf Y29sbGF0aW9uX25hbWUoT2lkIGNvbGxvaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMoT2lkIGNvbGxvaWQpOwpAQCAtMTk3LDYgKzE5OSw3IEBAIGV4 dGVybiBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJ Z2V0X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFu Z2VfbXVsdGlyYW5nZShPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfbXVsdGlyYW5n ZV9yYW5nZShPaWQgbXVsdGlyYW5nZU9pZCk7CitleHRlcm4gT2lkCWdldF9zdWJ0eXBlX3Jh bmdlKE9pZCBzdWJ0eXBlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X2luZGV4X2NvbHVtbl9vcGNs YXNzKE9pZCBpbmRleF9vaWQsIGludCBhdHRubyk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhf aXNyZXBsaWRlbnQoT2lkIGluZGV4X29pZCk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhfaXN2 YWxpZChPaWQgaW5kZXhfb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5 c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCmluZGV4IDY3ZWE2ZTQ5 NDUuLjMzYmFiNDA2MWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hl LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApAQCAtNzUsNiArNzUsOCBA QCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVBBUkFNRVRFUkFDTE5BTUUsCiAJUEFSQU1F VEVSQUNMT0lELAogCVBBUlRSRUxJRCwKKwlQRVJJT0ROQU1FLAorCVBFUklPRE9JRCwKIAlQ Uk9DTkFNRUFSR1NOU1AsCiAJUFJPQ09JRCwKIAlQVUJMSUNBVElPTk5BTUUsCkBAIC04NCw2 ICs4Niw3IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJUFVCTElDQVRJT05SRUwsCiAJ UFVCTElDQVRJT05SRUxNQVAsCiAJUkFOR0VNVUxUSVJBTkdFLAorCVJBTkdFU1VCVFlQRSwK IAlSQU5HRVRZUEUsCiAJUkVMTkFNRU5TUCwKIAlSRUxPSUQsCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRl eCAwMzAyZjc5YmI3Li4wNWY5NzgwZWNmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTE4MCw2ICsx ODAsMTIgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQog CQkJY2FzZSBBVF9Ecm9wQ29uc3RyYWludDoKIAkJCQlzdHJ0eXBlID0gIkRST1AgQ09OU1RS QUlOVCI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQlzdHJ0eXBl ID0gIkFERCBQRVJJT0QiOworCQkJCWJyZWFrOworCQkJY2FzZSBBVF9Ecm9wUGVyaW9kOgor CQkJCXN0cnR5cGUgPSAiRFJPUCBQRVJJT0QiOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9S ZUFkZENvbW1lbnQ6CiAJCQkJc3RydHlwZSA9ICIocmUpIEFERCBDT01NRU5UIjsKIAkJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBmMmIyZDQ1M2QKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0CkBAIC0wLDAgKzEs MTczIEBACisvKiBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IGltcGxlbWVudGVkICovCitjcmVh dGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Ig c3lzdGVtX3RpbWUgKGRzLCBkZSkpOworRVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1F IGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUgMjogY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2Vy LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5Li4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLyogUGVyaW9kcyBt dXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK0VS Uk9SOiAgY29sdW1uICJib2d1cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAor Y3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIHAgKGRzLCBib2d1cykpOworRVJST1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlv biAicHQiIGRvZXMgbm90IGV4aXN0CisvKiBEYXRhIHR5cGVzIG11c3QgbWF0Y2ggZXhhY3Rs eSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSB0aW1lc3Rh bXAsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBvZiBzYW1lIHR5cGUKK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJ WCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uCisvKiBQZXJpb2RzIG11 c3QgaGF2ZSBhIGRlZmF1bHQgQlRyZWUgb3BlcmF0b3IgY2xhc3MgKi8KK2NyZWF0ZSB0YWJs ZSBwdCAoaWQgaW50ZWdlciwgZHMgeG1sLCBkZSB4bWwsIHBlcmlvZCBmb3IgcCAoZHMsIGRl KSk7CitFUlJPUjogIG5vIHJhbmdlIHR5cGUgZm9yIHhtbCBmb3VuZCBmb3IgcGVyaW9kIHAK K0hJTlQ6ICBZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRF IFRZUEUKKy8qIFBlcmlvZCBhbmQgY29sdW1uIG5hbWVzIGFyZSBpbiB0aGUgc2FtZSBuYW1l c3BhY2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0 ZSwgcGVyaW9kIGZvciBjdGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImN0 aWQiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBk ZSkpOworRVJST1I6ICBwZXJpb2QgbmFtZSAiaWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1u IG5hbWUKKy8qIFBlcmlvZCBuYW1lIGNhbid0IGJlIGdpdmVuIG1vcmUgdGhhbiBvbmNlICov CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgcGVy aW9kIG5hbWUgInAiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZQorLyogTm93IG1ha2Ugb25l IHRoYXQgd29ya3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVz IHRoZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEn LCAnMjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAg fCAgICAgZGUgICAgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCAw MS0wMS0yMDAwIHwgMDEtMDEtMjAwMQorKDEgcm93KQorCisvKiBZb3UgY2FuIGdldCBpdCBp ZiB5b3Ugd2FudCAqLworc2VsZWN0ICosIHAgZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAg fCAgICAgZGUgICAgIHwgICAgICAgICAgICBwICAgICAgICAgICAgCistLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAxIHwgMDEt MDEtMjAwMCB8IDAxLTAxLTIwMDEgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAxKQorKDEgcm93 KQorCisvKiBUd28gYXJlIG9rYXkgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSksIHBlcmlvZCBmb3Ig cDIgKGRzLCBkZSkpOworZHJvcCB0YWJsZSBwdDI7CisvKgorICogQUxURVIgVEFCTEUgdGVz dHMKKyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBwZXJpb2QgZm9yIHA7CithbHRlciB0YWJs ZSBwdCBhZGQgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRlKTsKK0VSUk9SOiAgUEVS SU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCithbHRlciB0YWJsZSBwdCBh ZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworLyogQWRkaW5nIGEgc2Vjb25kIG9uZSAqLwor Y3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBwMSAoZHMsIGRlKSk7CithbHRlciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcDIg KGRzLCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qIENhbid0IGRyb3AgaXRzIGNvbHVtbnMg Ki8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRzOworRVJST1I6ICBjYW5ub3QgZHJv cCBjb2x1bW4gZHMgb2YgdGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBv biBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4g ZHMgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRo ZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBk ZTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGRlIG9mIHRhYmxlIHB0IGJlY2F1c2Ug b3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxl IHB0IGRlcGVuZHMgb24gY29sdW1uIGRlIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1Ag Li4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLyogQ2Fu J3QgY2hhbmdlIHRoZSBkYXRhIHR5cGVzICovCithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1 bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0eXBlIG9mIGEg Y29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0 IGRlcGVuZHMgb24gY29sdW1uICJkcyIKK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBk cyB0eXBlIHRpbWVzdGFtcDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1 bW4gdXNlZCBieSBhIHBlcmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVw ZW5kcyBvbiBjb2x1bW4gImRzIgorLyogY29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxp Y3RzICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdlcjsKK0VSUk9SOiAg Y29sdW1uIG5hbWUgInAiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUKK2FsdGVyIHRh YmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK0VSUk9SOiAgY29sdW1uIG5hbWUgInAi IGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUKKy8qIGFkZGluZyBjb2x1bW5zIGFuZCB0 aGUgcGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGlu dGVnZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBjb2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVt biBkZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7 CisvKiBBbWJpZ3VvdXMgcmFuZ2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0 eXBlIG15ZGF0ZXJhbmdlIGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUg cHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7 CitFUlJPUjogIGFtYmlndW91cyByYW5nZSBmb3IgdHlwZSBkYXRlCisvKiBZb3UgY2FuIGdp dmUgYW4gZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50 LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0 eXBlID0gJ215ZGF0ZXJhbmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworRVJST1I6 ICBjYW5ub3QgZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBk ZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0MiBkZXBlbmRzIG9u IHR5cGUgbXlkYXRlcmFuZ2UKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9w IHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgY2Fz Y2FkZTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gcGVyaW9kIHAgb24gdGFibGUgcHQy Citkcm9wIHRhYmxlIHB0MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRl cmFuZ2UnKSk7CisvKiBSYW5nZSB0eXBlIGlzIG5vdCBmb3VuZCAqLworY3JlYXRlIHRhYmxl IHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkg d2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScpKTsKK0VSUk9SOiAgUmFuZ2UgdHlwZSBu b3RhcmFuZ2Ugbm90IGZvdW5kCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBlICov CitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOworRVJST1I6 ICBSYW5nZSB0eXBlIHRzdHpyYW5nZSBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSBkYXRl Citkcm9wIHRhYmxlIHB0MjsKKy8qIENSRUFURSBUQUJMRSAoTElLRSAuLi4pICovCisvKiBQ ZXJpb2RzIGFyZSBub3QgY29waWVkIGJ5IExJS0UsIHNvIHRoZWlyIGNvbHVtbnMgYXJlbid0 IGVpdGhlciAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCk7CitcZCBwdDIKKyAgICAg ICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8g TElLRSdkIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2Qg Zm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1Ymxp Yy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRz ICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRh dGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywg ZGUpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8 IGRlKQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCB0aGUg c2FtZSBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAg KGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAK Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQor IGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8 IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywgZGUpCitD aGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8IGRlKQor Citkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCBhIGRpZmZlcmVu dCBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAyIChk cywgZGUpKTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQyIgor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBp ZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAgfCBk YXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKK1BlcmlvZHM6CisgICAgcDIgKGRzLCBkZSkKK0No ZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcDJfY2hlY2siIENIRUNLIChkcyA8IGRlKQor Citkcm9wIHRhYmxlIHB0MjsKKy8qIENhbid0IGFkZCBhIHBlcmlvZCB3aG9zZSBuYW1lIGNv bmZsaWN0cyB3aXRoIGEgTElLRSdkIGNvbHVtbiAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlr ZSBwdCwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJp ZCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogQ1JFQVRFIFRBTEJFIElOSEVS SVRTICovCisvKiBDYW4ndCBpbmhlcml0IGZyb20gYSB0YWJsZSB3aXRoIGEgcGVyaW9kICov CitjcmVhdGUgdGFibGUgcHQyIChuYW1lIHRleHQpIGluaGVyaXRzIChwdCk7CitFUlJPUjog IEluaGVyaXRpbmcgZnJvbSBhIHRhYmxlIHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRl ZAorLyogQ2FuJ3QgaW5oZXJpdCB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQy IChkMnMgZGF0ZSwgZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZDJzLCBkMmUpKSBpbmhlcml0 cyAobm90X3ApOworRVJST1I6ICBJbmhlcml0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBh IHRhYmxlIGhhcyBhIFBFUklPRAorZHJvcCB0YWJsZSBub3RfcDsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCmluZGV4IDk5Y2Y2ZjE4ZDYuLjI1MTY3NzEyYzkgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtNDMsNyArNDMsNyBAQCB0ZXN0OiBjb3B5 IGNvcHlzZWxlY3QgY29weWRtbCBpbnNlcnQgaW5zZXJ0X2NvbmZsaWN0CiAjIE5vdGU6IG1h bnkgb2YgdGhlIHRlc3RzIGluIGxhdGVyIGdyb3VwcyBkZXBlbmQgb24gY3JlYXRlX2luZGV4 CiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGNyZWF0ZV9mdW5jdGlvbl9jIGNyZWF0ZV9taXNjIGNy ZWF0ZV9vcGVyYXRvciBjcmVhdGVfcHJvY2VkdXJlIGNyZWF0ZV90YWJsZSBjcmVhdGVfdHlw ZSBjcmVhdGVfc2NoZW1hCi10ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lz dCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5nX2dpc3QKK3Rl c3Q6IGNyZWF0ZV9pbmRleCBjcmVhdGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4 X2luY2x1ZGluZyBpbmRleF9pbmNsdWRpbmdfZ2lzdCBwZXJpb2RzCiAKICMgLS0tLS0tLS0t LQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bl cmlvZHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUxNmYx Y2VmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2Rz LnNxbApAQCAtMCwwICsxLDExNyBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBs ZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBt dXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK2Ny ZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgYm9ndXMpKTsKKworLyogRGF0YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkg Ki8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1w LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2Vy LCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9k IGZvciBwIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJU cmVlIG9wZXJhdG9yIGNsYXNzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IHhtbCwgZGUgeG1sLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgYW5k IGNvbHVtbiBuYW1lcyBhcmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFi bGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAo ZHMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBi ZSBnaXZlbiBtb3JlIHRoYW4gb25jZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2Vy LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKSk7CisKKy8qIE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUg dGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAo ZHMsIGRlKSk7CisKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2Vy dCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2Vs ZWN0ICogZnJvbSBwdDsKKworLyogWW91IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3Nl bGVjdCAqLCBwIGZyb20gcHQ7CisKKy8qIFR3byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxl IHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMs IGRlKSwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyoK KyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9k IGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRz LCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworCisv KiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2Vy LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywgZGUpKTsKK2FsdGVyIHRh YmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOwor CisvKiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNv bHVtbiBkczsKK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRlOworCisvKiBDYW4ndCBj aGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBk cyB0eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBl IHRpbWVzdGFtcDsKKworLyogY29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxpY3RzICov CithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdlcjsKK2FsdGVyIHRhYmxlIHB0 IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKKworLyogYWRkaW5nIGNvbHVtbnMgYW5kIHRoZSBw ZXJpb2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdl cik7CithbHRlciB0YWJsZSBwdDIgYWRkIGNvbHVtbiBkcyBkYXRlLCBhZGQgY29sdW1uIGRl IGRhdGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKwor LyogQW1iaWd1b3VzIHJhbmdlIHR5cGVzIHJhaXNlIGFuIGVycm9yICovCitjcmVhdGUgdHlw ZSBteWRhdGVyYW5nZSBhcyByYW5nZShzdWJ0eXBlPWRhdGUpOworY3JlYXRlIHRhYmxlIHB0 MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOwor CisvKiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRlIHRh YmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJhbmdlJykpOworZHJvcCB0eXBlIG15ZGF0 ZXJhbmdlOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGNhc2NhZGU7Citkcm9wIHRhYmxlIHB0 MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRlcmFuZ2UnKSk7CisKKy8q IFJhbmdlIHR5cGUgaXMgbm90IGZvdW5kICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5 cGUgPSAnbm90YXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBl ICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOworZHJv cCB0YWJsZSBwdDI7CisKKy8qIENSRUFURSBUQUJMRSAoTElLRSAuLi4pICovCisKKy8qIFBl cmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElLRSwgc28gdGhlaXIgY29sdW1ucyBhcmVuJ3Qg ZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0KTsKK1xkIHB0MgorZHJvcCB0 YWJsZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJpb2QgcmVmZXJyaW5nIHRvIExJS0UnZCBj b2x1bW5zICovCitjcmVhdGUgdGFibGUgbm90X3AgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRl IGRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBub3RfcCwgcGVyaW9kIGZvciBwIChk cywgZGUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJp b2Qgd2l0aCB0aGUgc2FtZSBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyog Q2FuIGFkZCBhIHBlcmlvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJs ZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCitkcm9w IHRhYmxlIHB0MjsKKworLyogQ2FuJ3QgYWRkIGEgcGVyaW9kIHdob3NlIG5hbWUgY29uZmxp Y3RzIHdpdGggYSBMSUtFJ2QgY29sdW1uICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0 LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKworLyogQ1JFQVRFIFRBTEJFIElOSEVSSVRT ICovCisKKy8qIENhbid0IGluaGVyaXQgZnJvbSBhIHRhYmxlIHdpdGggYSBwZXJpb2QgKi8K K2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4dCkgaW5oZXJpdHMgKHB0KTsKKworLyogQ2Fu J3QgaW5oZXJpdCB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQyIChkMnMgZGF0 ZSwgZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZDJzLCBkMmUpKSBpbmhlcml0cyAobm90X3Ap OworCitkcm9wIHRhYmxlIG5vdF9wOwotLSAKMi4yNS4xCgo= --------------G957IccwHqpC3R9IYdyZoS1g--