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 1rfcGO-001C4a-Ss for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Feb 2024 08:59:38 +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 1rfcGN-001Uq1-Do for pgsql-hackers@arkaria.postgresql.org; Thu, 29 Feb 2024 08:59:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rfcGM-001Upt-QB for pgsql-hackers@lists.postgresql.org; Thu, 29 Feb 2024 08:59:35 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rfcGJ-0021KF-3a for pgsql-hackers@postgresql.org; Thu, 29 Feb 2024 08:59:34 +0000 Received: from [192.168.1.58] (unknown [1.20.175.240]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id E5614E2111E; Thu, 29 Feb 2024 11:59:25 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1709197169; bh=2SxVxQrQMFTOhe3P1mKq8ahuv0nOT5osPKE9yjKNtiw=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=weOXQ56mMRBTepbnuAFhVrQTCRRlPuwJONEwkliSYGvDB3cO4O3/i0BG9JZ/K+bRG c2EmZGqmJQhVkNg+Pfeq9rDqxTgLBmaCKKC0qVDQ7ptPiaYn4IdChjCujSxIRj87e2 bvBkh8XNSu3GIvO7iv7509k8ZHFZUOIvwcJMBBZ8sDhqPhF+OCAPCMt6IRknZC8wMD 0ssD5CqJKX4zGpVE6U4iJB0rTTuDfXF9kMJdMZYe3mF4/WPfQYbjEgPREnTi9F2kYO WFGz6uabVORvDX+5d86XJyr5cqLIS4VsPfhJR0PmQCLF7qeON4Y5HHWMpZCbEWGT72 zu3ioqIUMP29w== Content-Type: multipart/mixed; boundary="------------auBqnJYXFpNTOmzPPAFvhjpF" Message-ID: <380e5683-cdfd-4220-ab9b-7cccb9d3e480@postgrespro.ru> Date: Thu, 29 Feb 2024 15:59:23 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes To: Alena Rybakina , jian he Cc: Alexander Korotkov , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <1cf6b382-6e27-4268-9f2a-54ada66eb2eb@postgrespro.ru> <5f119769-ab11-4807-abcc-71d5dd914ea0@postgrespro.ru> <21088129-7cd3-424a-bcce-6a3427ba3276@postgrespro.ru> <11ee9c04-281f-43c8-a0ff-d481c1e01c09@postgrespro.ru> <54009ba5-4aea-4344-a30d-e3558a59e2a9@postgrespro.ru> Content-Language: en-US From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: <54009ba5-4aea-4344-a30d-e3558a59e2a9@postgrespro.ru> 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. --------------auBqnJYXFpNTOmzPPAFvhjpF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 28/2/2024 17:27, Alena Rybakina wrote: > Maybe like that: > > It also considers the way to generate a path using BitmapScan indexes, > converting the transformed expression into expressions separated by "OR" > operations, and if it turns out to be the best and finally selects the > best one. Thanks, I spent some time describing the feature with documentation. A condensed description of the GUC is in the runtime-config file. Feature description has spread between TransformOrExprToANY and generate_saop_pathlist routines. Also, I've made tiny changes in the code to look more smoothly. All modifications are integrated into the two new patches. Feel free to add, change or totally rewrite these changes. -- regards, Andrei Lepikhov Postgres Professional --------------auBqnJYXFpNTOmzPPAFvhjpF Content-Type: text/plain; charset=UTF-8; name="v18-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Disposition: attachment; filename="v18-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSAwMTVhNTY0Y2M3ODQxMzljODA2YTcwMDRmMjViZjVmN2E0YjRhMjlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogRnJpLCAyIEZlYiAyMDI0IDIyOjAxOjA5ICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Npb25z LgoKUmVwbGFjZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4cHIg b3AgQU5ZKEMxLCBDMiwgLi4uKSBvbiB0aGUKcHJlbGltaW5hcnkgc3RhZ2Ugb2Ygb3B0aW1p emF0aW9uIHdoZW4gd2UgYXJlIHN0aWxsIHdvcmtpbmcgd2l0aCB0aGUgdHJlZQpleHByZXNz aW9uLgpIZXJlIEM8WD4gaXMgYSBjb25zdGFudCBleHByZXNzaW9uLCAnZXhwcicgaXMgbm9u LWNvbnN0YW50IGV4cHJlc3Npb24sICdvcCcgaXMKYW4gb3BlcmF0b3Igd2hpY2ggcmV0dXJu cyBib29sZWFuIHJlc3VsdCBhbmQgaGFzIGEgY29tbXV0ZXIgKGZvciB0aGUgY2FzZSBvZgpy ZXZlcnNlIG9yZGVyIG9mIGNvbnN0YW50IGFuZCBub24tY29uc3RhbnQgcGFydHMgb2YgdGhl IGV4cHJlc3Npb24sCmxpa2UgJ0NYIG9wIGV4cHInKS4KU29tZXRpbWVzIGl0IGNhbiBsZWFk IHRvIG5vdCBvcHRpbWFsIHBsYW4uIEJ1dCB3ZSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gaGF2 ZQphcnJheSBvZiBlbGVtZW50cyBpbnN0ZWFkIG9mIGEgbG90IG9mIE9SIGNsYXVzZXMuIEhl cmUgaXMgYSByb29tIGZvciBmdXJ0aGVyCm9wdGltaXphdGlvbnMgb24gZGVjb21wb3Npbmcg dGhhdCBhcnJheSBpbnRvIG1vcmUgb3B0aW1hbCBwYXJ0cy4KQXV0aG9yczogQWxlbmEgUnli YWtpbmEgPGxlbmEucmliYWNraW5hQHlhbmRleC5ydT4sIEFuZHJleSBMZXBpa2hvdiA8YS5s ZXBpa2hvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IFBldGVyIEdlb2doZWdhbiA8 cGdAYm93dC5pZT4sIFJhbmllciBWaWxlbGEgPHJhbmllci52ZkBnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPiwgUm9i ZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IGppYW4gaGUg PGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KLS0tCiAuLi4vcG9zdGdyZXNfZmR3L2V4 cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgMTYgKy0KIGRvYy9zcmMvc2dtbC9jb25m aWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArCiBzcmMvYmFja2VuZC9ub2Rl cy9xdWVyeWp1bWJsZWZ1bmNzLmMgICAgICAgICAgfCAgMjcgKysKIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8IDM0MCArKysrKysrKysrKysrKysr KysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAx MSArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAg IDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwg ICA2ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgICAg IHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCAg ICB8IDE1NiArKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91 dCAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0 ICAgICAgICAgICAgfCAgNjIgKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fcHJ1bmUub3V0IHwgMjE5ICsrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCAgICAgICB8ICAxMiArLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0ICAgICAgICAgfCAgMjMgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICAgICB8ICAzNSArKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvam9pbi5zcWwgICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8ICAyMiArKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwgICAgICAgICAgICAgIHwgICA2ICsKIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMiArCiAyMiBm aWxlcyBjaGFuZ2VkLCA5MDggaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91 dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5k ZXggYzM1NWU4ZjNmNy4uMDUyM2JiZDhmNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0xMzQ5LDcgKzEzNDksNyBAQCBT RUxFQ1QgdDEuYzEsIHQxLmMyLCB0Mi5jMSwgdDIuYzIgRlJPTSBmdDQgdDEgTEVGVCBKT0lO IChTRUxFQ1QgKiBGUk9NIGZ0NSBXSEVSRQogIEZvcmVpZ24gU2NhbgogICAgT3V0cHV0OiB0 MS5jMSwgdDEuYzIsIGZ0NS5jMSwgZnQ1LmMyCiAgICBSZWxhdGlvbnM6IChwdWJsaWMuZnQ0 IHQxKSBMRUZUIEpPSU4gKHB1YmxpYy5mdDUpCi0gICBSZW1vdGUgU1FMOiBTRUxFQ1QgcjEu YzEsIHIxLmMyLCByNC5jMSwgcjQuYzIgRlJPTSAoIlMgMSIuIlQgMyIgcjEgTEVGVCBKT0lO ICJTIDEiLiJUIDQiIHI0IE9OICgoKHIxLmMxID0gcjQuYzEpKSBBTkQgKChyNC5jMSA8IDEw KSkpKSBXSEVSRSAoKChyNC5jMSA8IDEwKSBPUiAocjQuYzEgSVMgTlVMTCkpKSBBTkQgKChy MS5jMSA8IDEwKSkKKyAgIFJlbW90ZSBTUUw6IFNFTEVDVCByMS5jMSwgcjEuYzIsIHI0LmMx LCByNC5jMiBGUk9NICgiUyAxIi4iVCAzIiByMSBMRUZUIEpPSU4gIlMgMSIuIlQgNCIgcjQg T04gKCgocjEuYzEgPSByNC5jMSkpIEFORCAoKHI0LmMxIDwgMTApKSkpIFdIRVJFICgoKHI0 LmMxIElTIE5VTEwpIE9SIChyNC5jMSA8IDEwKSkpIEFORCAoKHIxLmMxIDwgMTApKQogKDQg cm93cykKIAogU0VMRUNUIHQxLmMxLCB0MS5jMiwgdDIuYzEsIHQyLmMyIEZST00gZnQ0IHQx IExFRlQgSk9JTiAoU0VMRUNUICogRlJPTSBmdDUgV0hFUkUgYzEgPCAxMCkgdDIgT04gKHQx LmMxID0gdDIuYzEpCkBAIC0zMTA1LDcgKzMxMDUsNyBAQCBzZWxlY3QgYXJyYXlfYWdnKGRp c3RpbmN0ICh0MS5jMSklNSkgZnJvbSBmdDQgdDEgZnVsbCBqb2luIGZ0NSB0MiBvbiAodDEu YzEgPSB0MgogIEZvcmVpZ24gU2NhbgogICAgT3V0cHV0OiAoYXJyYXlfYWdnKERJU1RJTkNU ICh0MS5jMSAlIDUpKSksICgodDIuYzEgJSAzKSkKICAgIFJlbGF0aW9uczogQWdncmVnYXRl IG9uICgocHVibGljLmZ0NCB0MSkgRlVMTCBKT0lOIChwdWJsaWMuZnQ1IHQyKSkKLSAgIFJl bW90ZSBTUUw6IFNFTEVDVCBhcnJheV9hZ2coRElTVElOQ1QgKHIxLmMxICUgNSkpLCAocjIu YzEgJSAzKSBGUk9NICgiUyAxIi4iVCAzIiByMSBGVUxMIEpPSU4gIlMgMSIuIlQgNCIgcjIg T04gKCgocjEuYzEgPSByMi5jMSkpKSkgV0hFUkUgKCgocjEuYzEgPCAyMCkgT1IgKChyMS5j MSBJUyBOVUxMKSBBTkQgKHIyLmMxIDwgNSkpKSkgR1JPVVAgQlkgMiBPUkRFUiBCWSBhcnJh eV9hZ2coRElTVElOQ1QgKHIxLmMxICUgNSkpIEFTQyBOVUxMUyBMQVNUCisgICBSZW1vdGUg U1FMOiBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpKSwgKHIyLmMxICUg MykgRlJPTSAoIlMgMSIuIlQgMyIgcjEgRlVMTCBKT0lOICJTIDEiLiJUIDQiIHIyIE9OICgo KHIxLmMxID0gcjIuYzEpKSkpIFdIRVJFICgoKChyMS5jMSBJUyBOVUxMKSBBTkQgKHIyLmMx IDwgNSkpIE9SIChyMS5jMSA8IDIwKSkpIEdST1VQIEJZIDIgT1JERVIgQlkgYXJyYXlfYWdn KERJU1RJTkNUIChyMS5jMSAlIDUpKSBBU0MgTlVMTFMgTEFTVAogKDQgcm93cykKIAogc2Vs ZWN0IGFycmF5X2FnZyhkaXN0aW5jdCAodDEuYzEpJTUpIGZyb20gZnQ0IHQxIGZ1bGwgam9p biBmdDUgdDIgb24gKHQxLmMxID0gdDIuYzEpIHdoZXJlIHQxLmMxIDwgMjAgb3IgKHQxLmMx IGlzIG51bGwgYW5kIHQyLmMxIDwgNSkgZ3JvdXAgYnkgKHQyLmMxKSUzIG9yZGVyIGJ5IDE7 CkBAIC0zMTIzLDcgKzMxMjMsNyBAQCBzZWxlY3QgYXJyYXlfYWdnKGRpc3RpbmN0ICh0MS5j MSklNSBvcmRlciBieSAodDEuYzEpJTUpIGZyb20gZnQ0IHQxIGZ1bGwgam9pbiBmdAogIEZv cmVpZ24gU2NhbgogICAgT3V0cHV0OiAoYXJyYXlfYWdnKERJU1RJTkNUICh0MS5jMSAlIDUp IE9SREVSIEJZICh0MS5jMSAlIDUpKSksICgodDIuYzEgJSAzKSkKICAgIFJlbGF0aW9uczog QWdncmVnYXRlIG9uICgocHVibGljLmZ0NCB0MSkgRlVMTCBKT0lOIChwdWJsaWMuZnQ1IHQy KSkKLSAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhcnJheV9hZ2coRElTVElOQ1QgKHIxLmMxICUg NSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBBU0MgTlVMTFMgTEFTVCksIChyMi5jMSAlIDMp IEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiByMiBPTiAoKChy MS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKChyMS5jMSA8IDIwKSBPUiAoKHIxLmMxIElTIE5V TEwpIEFORCAocjIuYzEgPCA1KSkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFycmF5X2FnZyhE SVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIEFTQyBOVUxMUyBM QVNUKSBBU0MgTlVMTFMgTEFTVAorICAgUmVtb3RlIFNRTDogU0VMRUNUIGFycmF5X2FnZyhE SVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIEFTQyBOVUxMUyBM QVNUKSwgKHIyLmMxICUgMykgRlJPTSAoIlMgMSIuIlQgMyIgcjEgRlVMTCBKT0lOICJTIDEi LiJUIDQiIHIyIE9OICgoKHIxLmMxID0gcjIuYzEpKSkpIFdIRVJFICgoKChyMS5jMSBJUyBO VUxMKSBBTkQgKHIyLmMxIDwgNSkpIE9SIChyMS5jMSA8IDIwKSkpIEdST1VQIEJZIDIgT1JE RVIgQlkgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpIE9SREVSIEJZICgocjEuYzEg JSA1KSkgQVNDIE5VTExTIExBU1QpIEFTQyBOVUxMUyBMQVNUCiAoNCByb3dzKQogCiBzZWxl Y3QgYXJyYXlfYWdnKGRpc3RpbmN0ICh0MS5jMSklNSBvcmRlciBieSAodDEuYzEpJTUpIGZy b20gZnQ0IHQxIGZ1bGwgam9pbiBmdDUgdDIgb24gKHQxLmMxID0gdDIuYzEpIHdoZXJlIHQx LmMxIDwgMjAgb3IgKHQxLmMxIGlzIG51bGwgYW5kIHQyLmMxIDwgNSkgZ3JvdXAgYnkgKHQy LmMxKSUzIG9yZGVyIGJ5IDE7CkBAIC0zMTQwLDcgKzMxNDAsNyBAQCBzZWxlY3QgYXJyYXlf YWdnKGRpc3RpbmN0ICh0MS5jMSklNSBvcmRlciBieSAodDEuYzEpJTUgZGVzYyBudWxscyBs YXN0KSBmcm9tIGZ0NAogIEZvcmVpZ24gU2NhbgogICAgT3V0cHV0OiAoYXJyYXlfYWdnKERJ U1RJTkNUICh0MS5jMSAlIDUpIE9SREVSIEJZICh0MS5jMSAlIDUpIERFU0MgTlVMTFMgTEFT VCkpLCAoKHQyLmMxICUgMykpCiAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAoKHB1Ymxp Yy5mdDQgdDEpIEZVTEwgSk9JTiAocHVibGljLmZ0NSB0MikpCi0gICBSZW1vdGUgU1FMOiBT RUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpIE9SREVSIEJZICgocjEuYzEg JSA1KSkgREVTQyBOVUxMUyBMQVNUKSwgKHIyLmMxICUgMykgRlJPTSAoIlMgMSIuIlQgMyIg cjEgRlVMTCBKT0lOICJTIDEiLiJUIDQiIHIyIE9OICgoKHIxLmMxID0gcjIuYzEpKSkpIFdI RVJFICgoKHIxLmMxIDwgMjApIE9SICgocjEuYzEgSVMgTlVMTCkgQU5EIChyMi5jMSA8IDUp KSkpIEdST1VQIEJZIDIgT1JERVIgQlkgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUp IE9SREVSIEJZICgocjEuYzEgJSA1KSkgREVTQyBOVUxMUyBMQVNUKSBBU0MgTlVMTFMgTEFT VAorICAgUmVtb3RlIFNRTDogU0VMRUNUIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1 KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIERFU0MgTlVMTFMgTEFTVCksIChyMi5jMSAlIDMp IEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiByMiBPTiAoKChy MS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKCgocjEuYzEgSVMgTlVMTCkgQU5EIChyMi5jMSA8 IDUpKSBPUiAocjEuYzEgPCAyMCkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFycmF5X2FnZyhE SVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIERFU0MgTlVMTFMg TEFTVCkgQVNDIE5VTExTIExBU1QKICg0IHJvd3MpCiAKIHNlbGVjdCBhcnJheV9hZ2coZGlz dGluY3QgKHQxLmMxKSU1IG9yZGVyIGJ5ICh0MS5jMSklNSBkZXNjIG51bGxzIGxhc3QpIGZy b20gZnQ0IHQxIGZ1bGwgam9pbiBmdDUgdDIgb24gKHQxLmMxID0gdDIuYzEpIHdoZXJlIHQx LmMxIDwgMjAgb3IgKHQxLmMxIGlzIG51bGwgYW5kIHQyLmMxIDwgNSkgZ3JvdXAgYnkgKHQy LmMxKSUzIG9yZGVyIGJ5IDE7CkBAIC04Nzk3LDE4ICs4Nzk3LDE4IEBAIGluc2VydCBpbnRv IHV0cnRlc3QgdmFsdWVzICgyLCAncXV4Jyk7CiAtLSBDaGVjayBjYXNlIHdoZXJlIHRoZSBm b3JlaWduIHBhcnRpdGlvbiBpcyBhIHN1YnBsYW4gdGFyZ2V0IHJlbAogZXhwbGFpbiAodmVy Ym9zZSwgY29zdHMgb2ZmKQogdXBkYXRlIHV0cnRlc3Qgc2V0IGEgPSAxIHdoZXJlIGEgPSAx IG9yIGEgPSAyIHJldHVybmluZyAqOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgVXBkYXRlIG9uIHB1YmxpYy51dHJ0ZXN0CiAgICBPdXRw dXQ6IHV0cnRlc3RfMS5hLCB1dHJ0ZXN0XzEuYgogICAgRm9yZWlnbiBVcGRhdGUgb24gcHVi bGljLnJlbXAgdXRydGVzdF8xCiAgICBVcGRhdGUgb24gcHVibGljLmxvY3AgdXRydGVzdF8y CiAgICAtPiAgQXBwZW5kCiAgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGlj LnJlbXAgdXRydGVzdF8xCi0gICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVi bGljLmxvY3QgU0VUIGEgPSAxIFdIRVJFICgoKGEgPSAxKSBPUiAoYSA9IDIpKSkgUkVUVVJO SU5HIGEsIGIKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQREFURSBwdWJsaWMubG9j dCBTRVQgYSA9IDEgV0hFUkUgKChhID0gQU5ZICgnezEsMn0nOjppbnRlZ2VyW10pKSkgUkVU VVJOSU5HIGEsIGIKICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMubG9jcCB1dHJ0 ZXN0XzIKICAgICAgICAgICAgICAgIE91dHB1dDogMSwgdXRydGVzdF8yLnRhYmxlb2lkLCB1 dHJ0ZXN0XzIuY3RpZCwgTlVMTDo6cmVjb3JkCi0gICAgICAgICAgICAgICBGaWx0ZXI6ICgo dXRydGVzdF8yLmEgPSAxKSBPUiAodXRydGVzdF8yLmEgPSAyKSkKKyAgICAgICAgICAgICAg IEZpbHRlcjogKHV0cnRlc3RfMi5hID0gQU5ZICgnezEsMn0nOjppbnRlZ2VyW10pKQogKDEw IHJvd3MpCiAKIC0tIFRoZSBuZXcgdmFsdWVzIGFyZSBjb25jYXRlbmF0ZWQgd2l0aCAnIHRy aWdnZXJlZCAhJwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDQzYjFhMTMyYTIuLmFiYWQwMmY5MmMgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwKQEAgLTU0MzMsNiArNTQzMywyNCBAQCBBTlkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUg Y2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg ICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1vci10cmFuc2Zvcm1hdGlvbiIgeHJl ZmxhYmVsPSJlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24iPgorICAgICAgPHRlcm0+PHZhcm5h bWU+ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwv dHlwZT4pCisgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+ ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFt ZXRlcjwvcHJpbWFyeT4KKyAgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAg ICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRW5hYmxlcyBvciBkaXNh YmxlcyB0aGUgcXVlcnkgcGxhbm5lcidzIGFiaWxpdHkgdG8gbG9va3VwIGFuZCBncm91cCBt dWx0aXBsZQorICAgICAgICBzaW1pbGFyIE9SIGV4cHJlc3Npb25zIHRvIEFOWSAoPHhyZWYg bGlua2VuZD0iZnVuY3Rpb25zLWNvbXBhcmlzb25zLWFueS1zb21lIi8+KSBleHByZXNzaW9u cy4KKyAgICAgICAgVGhlIGdyb3VwaW5nIHRlY2huaXF1ZSBvZiB0aGlzIHRyYW5zZm9ybWF0 aW9uIGlzIGJhc2VkIG9uIHRoZSBzaW1pbGFyaXR5IG9mIHZhcmlhYmxlIHNpZGVzLgorICAg ICAgICBJdCBhcHBsaWVzIHRvIGVxdWFsaXR5IGV4cHJlc3Npb25zIG9ubHkuIE9uZSBzaWRl IG9mIHN1Y2ggYW4gZXhwcmVzc2lvbgorICAgICAgICBtdXN0IGJlIGEgY29uc3RhbnQgY2xh dXNlLCBhbmQgdGhlIG90aGVyIG11c3QgY29udGFpbiBhIHZhcmlhYmxlIGNsYXVzZS4KKyAg ICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLXBhcmFsbGVsLWFwcGVuZCIgeHJlZmxh YmVsPSJlbmFibGVfcGFyYWxsZWxfYXBwZW5kIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmVu YWJsZV9wYXJhbGxlbF9hcHBlbmQ8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikK ICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9xdWVy eWp1bWJsZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMK aW5kZXggODJmNzI1YmFhYS4uYjIwMzc0NmJlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5 anVtYmxlZnVuY3MuYwpAQCAtMTQxLDYgKzE0MSwzMyBAQCBKdW1ibGVRdWVyeShRdWVyeSAq cXVlcnkpCiAJcmV0dXJuIGpzdGF0ZTsKIH0KIAorSnVtYmxlU3RhdGUgKgorSnVtYmxlRXhw cihFeHByICpleHByLCB1aW50NjQgKnF1ZXJ5SWQpCit7CisJSnVtYmxlU3RhdGUgKmpzdGF0 ZSA9IE5VTEw7CisKKwlBc3NlcnQocXVlcnlJZCAhPSBOVUxMKTsKKworCWpzdGF0ZSA9IChK dW1ibGVTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEp1bWJsZVN0YXRlKSk7CisKKwkvKiBTZXQg dXAgd29ya3NwYWNlIGZvciBxdWVyeSBqdW1ibGluZyAqLworCWpzdGF0ZS0+anVtYmxlID0g KHVuc2lnbmVkIGNoYXIgKikgcGFsbG9jKEpVTUJMRV9TSVpFKTsKKwlqc3RhdGUtPmp1bWJs ZV9sZW4gPSAwOworCWpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSA9IDMyOworCWpzdGF0 ZS0+Y2xvY2F0aW9ucyA9IChMb2NhdGlvbkxlbiAqKQorCQlwYWxsb2MoanN0YXRlLT5jbG9j YXRpb25zX2J1Zl9zaXplICogc2l6ZW9mKExvY2F0aW9uTGVuKSk7CisJanN0YXRlLT5jbG9j YXRpb25zX2NvdW50ID0gMDsKKwlqc3RhdGUtPmhpZ2hlc3RfZXh0ZXJuX3BhcmFtX2lkID0g MDsKKworCS8qIENvbXB1dGUgcXVlcnkgSUQgKi8KKwlfanVtYmxlTm9kZShqc3RhdGUsIChO b2RlICopIGV4cHIpOworCSpxdWVyeUlkID0gRGF0dW1HZXRVSW50NjQoaGFzaF9hbnlfZXh0 ZW5kZWQoanN0YXRlLT5qdW1ibGUsCisJCQkJCQkJCQkJCQlqc3RhdGUtPmp1bWJsZV9sZW4s CisJCQkJCQkJCQkJCQkwKSk7CisKKwlyZXR1cm4ganN0YXRlOworfQorCiAvKgogICogRW5h YmxlcyBxdWVyeSBpZGVudGlmaWVyIGNvbXB1dGF0aW9uLgogICoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWIuLjEwY2VjY2M4MGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYwpAQCAtMTYsMTIgKzE2LDE0IEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRlLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFu ZHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9x dWVyeWp1bWJsZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNs dWRlICJwYXJzZXIvYW5hbHl6ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9hZ2cuaCIK QEAgLTM4LDExICs0MCwxMyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKICNpbmNsdWRl ICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgi CiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBib29s CQlUcmFuc2Zvcm1fbnVsbF9lcXVhbHMgPSBmYWxzZTsKK2Jvb2wJCWVuYWJsZV9vcl90cmFu c2Zvcm1hdGlvbiA9IHRydWU7CiAKIAogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUV4cHJSZWN1 cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CkBAIC05OSw2ICsxMDMsMzM3 IEBAIHN0YXRpYyBFeHByICptYWtlX2Rpc3RpbmN0X29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqb3BuYW1lLAogc3RhdGljIE5vZGUgKm1ha2VfbnVsbHRlc3RfZnJvbV9kaXN0aW5j dChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJIEFfRXhwciAqZGlzdGluY3RhLCBO b2RlICphcmcpOwogCit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3VwS2V5Cit7CisJRXhw ciAgICpleHByOyAvKiBQb2ludGVyIHRvIHRoZSBleHByZXNzaW9uIHRyZWUgd2hpY2ggaGFz IGJlZW4gYSBzb3VyY2UgZm9yCisJCQkJCXRoZSBoYXNoa2V5IHZhbHVlICovCisJT2lkCQlv cG5vOworCU9pZAkJZXhwcnR5cGU7Cit9IE9yQ2xhdXNlR3JvdXBLZXk7CisKK3R5cGVkZWYg c3RydWN0IE9yQ2xhdXNlR3JvdXBFbnRyeQoreworCU9yQ2xhdXNlR3JvdXBLZXkga2V5Owor CisJTm9kZQkJICAgKm5vZGU7CisJTGlzdAkJICAgKmNvbnN0czsKKwlMaXN0IAkJICAgKmV4 cHJzOworfSBPckNsYXVzZUdyb3VwRW50cnk7CisKKy8qCisgKiBIYXNoIGZ1bmN0aW9uIHRv IGZpbmQgY2FuZGlkYXRlIGNsYXVzZXMuCisgKi8KK3N0YXRpYyB1aW50MzIKK29yY2xhdXNl X2hhc2goY29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBrZXlzaXplKQoreworCU9yQ2xhdXNlR3Jv dXBLZXkgICAqa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGF0YTsKKwl1aW50NjQJCQkJ aGFzaDsKKworCUFzc2VydChrZXlzaXplID09IHNpemVvZihPckNsYXVzZUdyb3VwS2V5KSk7 CisKKwkodm9pZCkgSnVtYmxlRXhwcihrZXktPmV4cHIsICZoYXNoKTsKKwloYXNoICs9ICgo dWludDY0KSBrZXktPm9wbm8gKyAodWludDY0KSBrZXktPmV4cHJ0eXBlKTsKKwlyZXR1cm4g KHVpbnQzMikgKGhhc2ggJSBVSU5UMzJfTUFYKTsKK30KKworc3RhdGljIHZvaWQgKgorb3Jj bGF1c2Vfa2V5Y29weSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIFNpemUga2V5c2l6 ZSkKK3sKKwlPckNsYXVzZUdyb3VwS2V5ICpzcmNfa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkg Kikgc3JjOworCU9yQ2xhdXNlR3JvdXBLZXkgKmRzdF9rZXkgPSAoT3JDbGF1c2VHcm91cEtl eSAqKSBkZXN0OworCisJQXNzZXJ0KHNpemVvZihPckNsYXVzZUdyb3VwS2V5KSA9PSBrZXlz aXplKTsKKworCWRzdF9rZXktPmV4cHIgPSBzcmNfa2V5LT5leHByOworCWRzdF9rZXktPm9w bm8gPSBzcmNfa2V5LT5vcG5vOworCWRzdF9rZXktPmV4cHJ0eXBlID0gc3JjX2tleS0+ZXhw cnR5cGU7CisJcmV0dXJuIGRzdF9rZXk7Cit9CisKKy8qCisgKiBEeW5haGFzaCBtYXRjaCBm dW5jdGlvbiB0byB1c2UgaW4gZ3VjX2hhc2h0YWIKKyAqLworc3RhdGljIGludAorb3JjbGF1 c2VfbWF0Y2goY29uc3Qgdm9pZCAqZGF0YTEsIGNvbnN0IHZvaWQgKmRhdGEyLCBTaXplIGtl eXNpemUpCit7CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkxID0gKE9yQ2xhdXNlR3JvdXBL ZXkgKikgZGF0YTE7CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkyID0gKE9yQ2xhdXNlR3Jv dXBLZXkgKikgZGF0YTI7CisKKwlBc3NlcnQoc2l6ZW9mKE9yQ2xhdXNlR3JvdXBLZXkpID09 IGtleXNpemUpOworCisJaWYgKGtleTEtPm9wbm8gPT0ga2V5Mi0+b3BubyAmJiBrZXkxLT5l eHBydHlwZSA9PSBrZXkyLT5leHBydHlwZSAmJgorCQllcXVhbChrZXkxLT5leHByLCBrZXky LT5leHByKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIFRyYW5z Zm9ybU9yRXhwclRvQU5ZIC0KKyAqCSAgRGlzY292ZXIgdGhlIGFyZ3Mgb2YgYW4gT1IgZXhw cmVzc2lvbiBhbmQgdHJ5IHRvIGdyb3VwIHNpbWlsYXIgT1IKKyAqCSAgZXhwcmVzc2lvbnMg dG8gYW4gQU5ZIG9wZXJhdGlvbi4KKyAqCSAgVHJhbnNmb3JtYXRpb24gbXVzdCBiZSBhbHJl YWR5IGRvbmUgb24gaW5wdXQgYXJncyBsaXN0IGJlZm9yZSB0aGUgY2FsbC4KKyAqCSAgVHJh bnNmb3JtYXRpb24gZ3JvdXBzIHR3by1zaWRlZCBlcXVhbGl0eSBvcGVyYXRpb25zLiBPbmUg c2lkZSBvZiBzdWNoIGFuCisgKgkgIG9wZXJhdGlvbiBtdXN0IGJlIHBsYWluIGNvbnN0YW50 IG9yIGNvbnN0YW50IGV4cHJlc3Npb24uIFRoZSBvdGhlciBzaWRlIG9mCisgKgkgIHRoZSBj bGF1c2UgbXVzdCBiZSBhIHZhcmlhYmxlIGV4cHJlc3Npb24gd2l0aG91dCB2b2xhdGlsZSBm dW5jdGlvbnMuCisgKgkgIFRoZSBncm91cGluZyB0ZWNobmlxdWUgaXMgYmFzZWQgb24gdGhl IHNpbWlsYXJpdHkgb2YgdmFyaWFibGUgc2lkZXMgb2YgdGhlCisgKgkgIGV4cHJlc3Npb246 IHVzaW5nIHF1ZXJ5SWQgYW5kIGVxdWFsKCkgcm91dGluZSwgaXQgZ3JvdXBzIGNvbnN0YW50 IHNpZGVzIG9mCisgKgkgIHNpbWlsYXIgY2xhdXNlcyBpbnRvIGFuIGFycmF5LiBBZnRlciB0 aGUgZ3JvdXBpbmcgcHJvY2VkdXJlLCBlYWNoIGNvdXBsZQorICoJICAoJ3ZhcmlhYmxlIGV4 cHJlc3Npb24nIGFuZCAnY29uc3RhbnQgYXJyYXknKSBmb3JtIGEgbmV3IFNBT1Agb3BlcmF0 aW9uLAorICoJICB3aGljaCBpcyBhZGRlZCB0byB0aGUgYXJncyBsaXN0IG9mIHRoZSByZXR1 cm5pbmcgZXhwcmVzc2lvbi4KKyAqCisgKgkgIE5PVEU6IGZ1bmN0aW9uIHJldHVybnMgT1Ig Qm9vbEV4cHIgaWYgbW9yZSB0aGFuIG9uZSBjbGF1c2UgYXJlIGRldGVjdGVkIGluCisgKgkg IHRoZSBmaW5hbCBhcmdzIGxpc3QsIG9yIFNjYWxhckFycmF5T3BFeHByIGlmIGFsbCBhcmdz IHdlcmUgZ3JvdXBlZCBpbnRvCisgKgkgIHRoZSBzaW5nbGUgU0FPUCBleHByZXNzaW9uLgor ICovCitzdGF0aWMgTm9kZSAqCitUcmFuc2Zvcm1PckV4cHJUb0FOWShQYXJzZVN0YXRlICpw c3RhdGUsIExpc3QgKmFyZ3MsIGludCBsb2NhdGlvbikKK3sKKwlMaXN0CQkJCSAgICpvcl9s aXN0ID0gTklMOworCUxpc3QJCQkJICAgKmVudHJpZXMgPSBOSUw7CisJTGlzdENlbGwJCQkg ICAqbGM7CisJSEFTSENUTAkJCQkJaW5mbzsKKwlIVEFCIAkJCQkgICAqb3JfZ3JvdXBfaHRh YiA9IE5VTEw7CisJaW50IAkJCQkJbGVuX29ycyA9IGxpc3RfbGVuZ3RoKGFyZ3MpOworCU9y Q2xhdXNlR3JvdXBFbnRyeQkgICAqZW50cnkgPSBOVUxMOworCisJQXNzZXJ0KGVuYWJsZV9v cl90cmFuc2Zvcm1hdGlvbiAmJiBsZW5fb3JzID4gMSk7CisKKwlNZW1TZXQoJmluZm8sIDAs IHNpemVvZihpbmZvKSk7CisJaW5mby5rZXlzaXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBL ZXkpOworCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBFbnRyeSk7CisJ aW5mby5oYXNoID0gb3JjbGF1c2VfaGFzaDsKKwlpbmZvLmtleWNvcHkgPSBvcmNsYXVzZV9r ZXljb3B5OworCWluZm8ubWF0Y2ggPSBvcmNsYXVzZV9tYXRjaDsKKwlvcl9ncm91cF9odGFi ID0gaGFzaF9jcmVhdGUoIk9SIEdyb3VwcyIsCisJCQkJCQkJCWxlbl9vcnMsCisJCQkJCQkJ CSZpbmZvLAorCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01Q QVJFIHwgSEFTSF9LRVlDT1BZKTsKKworCWZvcmVhY2gobGMsIGFyZ3MpCisJeworCQlOb2Rl CQkJCSAgICpvcnF1YWwgPSBsZmlyc3QobGMpOworCQlOb2RlCQkJCSAgICpjb25zdF9leHBy OworCQlOb2RlCQkJCSAgICpuY29uc3RfZXhwcjsKKwkJT3JDbGF1c2VHcm91cEtleQkJaGFz aGtleTsKKwkJYm9vbAkJCQkJZm91bmQ7CisJCU9pZAkJCQkJCW9wbm87CisJCU9pZAkJCQkJ CWV4cHJ0eXBlOworCQlOb2RlCQkJCSAgICpsZWZ0b3AsICpyaWdodG9wOworCisJCWlmICgh SXNBKG9ycXVhbCwgT3BFeHByKSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlz dCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJb3BubyA9ICgoT3BFeHByICop IG9ycXVhbCktPm9wbm87CisJCWlmIChnZXRfb3BfcmV0dHlwZShvcG5vKSAhPSBCT09MT0lE KQorCQl7CisJCQkvKiBPbmx5IG9wZXJhdG9yIHJldHVybmluZyBib29sZWFuIHN1aXRzIE9S IC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiAqLworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlz dCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogRGV0ZWN0IHRo ZSBjb25zdGFudCBzaWRlIG9mIHRoZSBjbGF1c2UuIFJlY2FsbCBub24tY29uc3RhbnQKKwkJ ICogZXhwcmVzc2lvbiBjYW4gYmUgbWFkZSBub3Qgb25seSB3aXRoIFZhcnMsIGJ1dCBhbHNv IHdpdGggUGFyYW1zLAorCQkgKiB3aGljaCBpcyBub3QgYm9uZGVkIHdpdGggYW55IHJlbGF0 aW9uLiBUaHVzLCB3ZSBkZXRlY3QgdGhlIGNvbnN0CisJCSAqIHNpZGUgLSBpZiBhbm90aGVy IHNpZGUgaXMgY29uc3RhbnQgdG9vLCB0aGUgb3JxdWFsIGNvdWxkbid0IGJlCisJCSAqIGFu IE9wRXhwci4KKwkJICogR2V0IHBvaW50ZXJzIHRvIGNvbnN0YW50IGFuZCBleHByZXNzaW9u IHNpZGVzIG9mIHRoZSBxdWFsLgorCQkgKi8KKwkJbGVmdG9wID0gZ2V0X2xlZnRvcChvcnF1 YWwpOworCQlpZiAoSXNBKGxlZnRvcCwgUmVsYWJlbFR5cGUpKQorCQkJbGVmdG9wID0gKE5v ZGUgKikgKChSZWxhYmVsVHlwZSAqKSBsZWZ0b3ApLT5hcmc7CisJCXJpZ2h0b3AgPSBnZXRf cmlnaHRvcChvcnF1YWwpOworCQlpZiAoSXNBKHJpZ2h0b3AsIFJlbGFiZWxUeXBlKSkKKwkJ CXJpZ2h0b3AgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0b3ApLT5hcmc7CisK KwkJaWYgKElzQShsZWZ0b3AsIENvbnN0KSkKKwkJeworCQkJb3BubyA9IGdldF9jb21tdXRh dG9yKG9wbm8pOworCisJCQlpZiAoIU9pZElzVmFsaWQob3BubykpCisJCQl7CisJCQkJLyog Y29tbXV0YXRvciBkb2Vzbid0IGV4aXN0LCB3ZSBjYW4ndCByZXZlcnNlIHRoZSBvcmRlciAq LworCQkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsIG9ycXVhbCk7CisJCQkJY29udGlu dWU7CisJCQl9CisKKwkJCW5jb25zdF9leHByID0gZ2V0X3JpZ2h0b3Aob3JxdWFsKTsKKwkJ CWNvbnN0X2V4cHIgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJZWxzZSBpZiAoSXNB KHJpZ2h0b3AsIENvbnN0KSkKKwkJeworCQkJY29uc3RfZXhwciA9IGdldF9yaWdodG9wKG9y cXVhbCk7CisJCQluY29uc3RfZXhwciA9IGdldF9sZWZ0b3Aob3JxdWFsKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsIG9ycXVhbCk7CisJCQlj b250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFRyYW5zZm9ybWF0aW9uIG9ubHkgd29ya3Mg d2l0aCBib3RoIHNpZGUgdHlwZSBpcyBub3QKKwkJICogeyBhcnJheSB8IGNvbXBvc2l0ZSB8 IGRvbWFpbiB8IHJlY29yZCB9LgorCQkgKiBBbHNvLCBmb3JiaWQgaXQgZm9yIHZvbGF0aWxl IGV4cHJlc3Npb25zLgorCQkgKi8KKwkJZXhwcnR5cGUgPSBleHByVHlwZShuY29uc3RfZXhw cik7CisJCWlmICh0eXBlX2lzX3Jvd3R5cGUoZXhwclR5cGUoY29uc3RfZXhwcikpIHx8CisJ CQl0eXBlX2lzX3Jvd3R5cGUoZXhwcnR5cGUpIHx8CisJCQljb250YWluX3ZvbGF0aWxlX2Z1 bmN0aW9ucygoTm9kZSAqKSBuY29uc3RfZXhwcikpCisJCXsKKwkJCW9yX2xpc3QgPSBsYXBw ZW5kKG9yX2xpc3QsIG9ycXVhbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSog QXQgdGhpcyBwb2ludCB3ZSBkZWZpbml0ZWx5IGhhdmUgYSB0cmFuc2Zvcm1hYmxlIGNsYXVz ZS4KKwkJKiBDbGFzc2lmeSBpdCBhbmQgYWRkIGludG8gc3BlY2lmaWMgZ3JvdXAgb2YgY2xh dXNlcywgb3IgY3JlYXRlIG5ldworCQkqIGdyb3VwLgorCQkqLworCQloYXNoa2V5LmV4cHIg PSAoRXhwciAqKSBuY29uc3RfZXhwcjsKKwkJaGFzaGtleS5vcG5vID0gb3BubzsKKwkJaGFz aGtleS5leHBydHlwZSA9IGV4cHJ0eXBlOworCQllbnRyeSA9IGhhc2hfc2VhcmNoKG9yX2dy b3VwX2h0YWIsICZoYXNoa2V5LCBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJCWlmICh1bmxp a2VseShmb3VuZCkpCisJCXsKKwkJCWVudHJ5LT5jb25zdHMgPSBsYXBwZW5kKGVudHJ5LT5j b25zdHMsIGNvbnN0X2V4cHIpOworCQkJZW50cnktPmV4cHJzID0gbGFwcGVuZChlbnRyeS0+ ZXhwcnMsIG9ycXVhbCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllbnRyeS0+bm9kZSA9IG5j b25zdF9leHByOworCQkJZW50cnktPmNvbnN0cyA9IGxpc3RfbWFrZTEoY29uc3RfZXhwcik7 CisJCQllbnRyeS0+ZXhwcnMgPSBsaXN0X21ha2UxKG9ycXVhbCk7CisKKwkJCS8qCisJCQkg KiBBZGQgdGhlIGVudHJ5IHRvIHRoZSBsaXN0LiBJdCBpcyBuZWVkZWQgZXhjbHVzaXZlbHkg dG8gbWFuYWdlIHRoZQorCQkJICogcHJvYmxlbSB3aXRoIHRoZSBvcmRlciBvZiB0cmFuc2Zv cm1lZCBjbGF1c2VzIGluIGV4cGxhaW4uCisJCQkgKiBIYXNoIHZhbHVlIGNhbiBkZXBlbmQg b24gdGhlIHBsYXRmb3JtIGFuZCB2ZXJzaW9uLiBIZW5jZSwKKwkJCSAqIHNlcXVlbnRhbCBz Y2FuIG9mIHRoZSBoYXNoIHRhYmxlIHdvdWxkIHByb25lIHRvIGNoYW5nZSB0aGUgb3JkZXIK KwkJCSAqIG9mIGNsYXVzZXMgaW4gbGlzdHMgYW5kLCBhcyBhIHJlc3VsdCwgYnJlYWsgcmVn cmVzc2lvbiB0ZXN0cworCQkJICogYWNjaWRlbnRpYWxseS4KKwkJCSAqLworCQkJZW50cmll cyA9IGxhcHBlbmQoZW50cmllcywgZW50cnkpOworCQl9CisJfQorCisJLyogTGV0J3MgY29u dmVydCBlYWNoIGdyb3VwIG9mIGNsYXVzZXMgdG8gYW4gSU4gb3BlcmF0aW9uLiAqLworCisJ LyoKKwkgKiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIGdyb3VwcyBhbmQgY29udmVydCBlYWNo LCB3aGVyZSBudW1iZXIgb2YKKwkgKiBjb25zdHMgbW9yZSB0aGFuIDEuIHRyaXZpYWwgZ3Jv dXBzIG1vdmUgdG8gT1ItbGlzdCBhZ2FpbgorCSAqLworCisJZm9yZWFjaCAobGMsIGVudHJp ZXMpCisJeworCQlPaWQJCQkJICAgIHNjYWxhcl90eXBlOworCQlPaWQJCQkJCWFycmF5X3R5 cGU7CisKKwkJZW50cnkgPSAoT3JDbGF1c2VHcm91cEVudHJ5ICopIGxmaXJzdChsYyk7CisK KwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25zdHMpID4gMCk7CisJCUFzc2VydChs aXN0X2xlbmd0aChlbnRyeS0+ZXhwcnMpID09IGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25zdHMp KTsKKworCQlpZiAobGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykgPT0gMSkKKwkJeworCQkJ LyoKKwkJCSAqIE9ubHkgb25lIGVsZW1lbnQgaW4gdGhlIGNsYXNzLiBSZXR1cm4gb3JpZ2lu IGV4cHJlc3Npb24gaW50bworCQkJICogdGhlIEJvb2xFeHByIGFyZ3MgbGlzdCB1bmNoYW5n ZWQuCisJCQkgKi8KKwkJCWxpc3RfZnJlZShlbnRyeS0+Y29uc3RzKTsKKwkJCW9yX2xpc3Qg PSBsaXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ZXhwcnMpOworCQkJY29udGludWU7CisJ CX0KKworCQkvKgorCQkgKiBEbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCSAqLworCisJCXNj YWxhcl90eXBlID0gZW50cnktPmtleS5leHBydHlwZTsKKwkJYXJyYXlfdHlwZSA9IE9pZElz VmFsaWQoc2NhbGFyX3R5cGUpID8gZ2V0X2FycmF5X3R5cGUoc2NhbGFyX3R5cGUpIDoKKwkJ CQkJCQkJCQkJICAgSW52YWxpZE9pZDsKKworCQlpZiAoT2lkSXNWYWxpZChhcnJheV90eXBl KSkKKwkJeworCQkJLyoKKwkJCSAqIE9LOiBjb2VyY2UgYWxsIHRoZSByaWdodC1oYW5kIG5v bi1WYXIgaW5wdXRzIHRvIHRoZSBjb21tb24KKwkJCSAqIHR5cGUgYW5kIGJ1aWxkIGFuIEFy cmF5RXhwciBmb3IgdGhlbS4KKwkJCSAqLworCQkJTGlzdAkJCSAgICphZXhwcnMgPSBOSUw7 CisJCQlBcnJheUV4cHIJCSAgICpuZXdhID0gTlVMTDsKKwkJCVNjYWxhckFycmF5T3BFeHBy ICAqc2FvcGV4cHIgPSBOVUxMOworCQkJSGVhcFR1cGxlCQkJb3BlcnR1cDsKKwkJCUZvcm1f cGdfb3BlcmF0b3IJb3BlcmZvcm07CisJCQlMaXN0CQkJICAgKm5hbWVsaXN0ID0gTklMOwor CQkJTGlzdENlbGwJCSAgICpsYzE7CisKKwkJCWZvcmVhY2gobGMxLCBlbnRyeS0+Y29uc3Rz KQorCQkJeworCQkJCU5vZGUgICAqcmV4cHIgPSAoTm9kZSAqKSBsZmlyc3QobGMxKTsKKwor CQkJCXJleHByID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgcmV4cHIsCisJCQkJ CQkJCQkJCSAgc2NhbGFyX3R5cGUsCisJCQkJCQkJCQkJCSAgIklOIik7CisJCQkJYWV4cHJz ID0gbGFwcGVuZChhZXhwcnMsIHJleHByKTsKKwkJCX0KKworCQkJbmV3YSA9IG1ha2VOb2Rl KEFycmF5RXhwcik7CisJCQkvKiBhcnJheV9jb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFyc2Vf Y29sbGF0ZS5jICovCisJCQluZXdhLT5lbGVtZW50X3R5cGVpZCA9IHNjYWxhcl90eXBlOwor CQkJbmV3YS0+YXJyYXlfdHlwZWlkID0gYXJyYXlfdHlwZTsKKwkJCW5ld2EtPm11bHRpZGlt cyA9IGZhbHNlOworCQkJbmV3YS0+ZWxlbWVudHMgPSBhZXhwcnM7CisJCQluZXdhLT5sb2Nh dGlvbiA9IC0xOworCisJCQlvcGVydHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQsCisJ CQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oZW50cnktPmtleS5vcG5vKSk7CisJCQlpZiAo IUhlYXBUdXBsZUlzVmFsaWQob3BlcnR1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yICV1IiwKKwkJCQkJIGVudHJ5LT5rZXkub3Bubyk7 CisKKwkJCW9wZXJmb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVydHVw KTsKKwkJCWlmICghT3BlcmF0b3JJc1Zpc2libGUoZW50cnktPmtleS5vcG5vKSkKKwkJCQlu YW1lbGlzdCA9IGxhcHBlbmQobmFtZWxpc3QsIG1ha2VTdHJpbmcoZ2V0X25hbWVzcGFjZV9u YW1lKG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UpKSk7CisKKwkJCW5hbWVsaXN0ID0gbGFwcGVu ZChuYW1lbGlzdCwgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIob3BlcmZvcm0tPm9wcm5h bWUpKSkpOworCQkJUmVsZWFzZVN5c0NhY2hlKG9wZXJ0dXApOworCisJCQlzYW9wZXhwciA9 CisJCQkJKFNjYWxhckFycmF5T3BFeHByICopCisJCQkJCW1ha2Vfc2NhbGFyX2FycmF5X29w KHBzdGF0ZSwKKwkJCQkJCQkJCQkgbmFtZWxpc3QsCisJCQkJCQkJCQkJIHRydWUsCisJCQkJ CQkJCQkJIGVudHJ5LT5ub2RlLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBuZXdhLAorCQkJCQkJ CQkJCSAtMSk7CisKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lkICopIHNh b3BleHByKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgY29uc3Qg bm9kZSAocmlnaHQgc2lkZSBvZiBvcGVyYXRvciBleHByZXNzaW9uKSAncyB0eXBlCisJCQkg KiAgZG9uJ3QgaGF2ZSDigJx0cnVl4oCdIGFycmF5IHR5cGUsIHRoZW4gd2UgY2Fubm5vdCBk byB0aGUgdHJhbnNmb3JtYXRpb24uCisJCQkgKiBXZSBzaW1wbHkgY29uY2F0ZW5hdGUgdGhl IGV4cHJlc3Npb24gbm9kZS4KKwkJCSAqCisJCQkgKi8KKwkJCWxpc3RfZnJlZShlbnRyeS0+ Y29uc3RzKTsKKwkJCW9yX2xpc3QgPSBsaXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ZXhw cnMpOworCQl9CisJfQorCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFiKTsKKwlsaXN0X2Zy ZWUoZW50cmllcyk7CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1ibGUgY29ycmVjdCBj bGF1c2UgKi8KKwlyZXR1cm4gKE5vZGUgKikgKChsaXN0X2xlbmd0aChvcl9saXN0KSA+IDEp ID8KKwkJCQkJIG1ha2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBsb2NhdGlvbikgOgor CQkJCQkgbGluaXRpYWwob3JfbGlzdCkpOworfQogCiAvKgogICogdHJhbnNmb3JtRXhwciAt CkBAIC0xMzg2LDYgKzE3MjEsMTEgQEAgdHJhbnNmb3JtQm9vbEV4cHIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBCb29sRXhwciAqYSkKIAkJYXJncyA9IGxhcHBlbmQoYXJncywgYXJnKTsKIAl9 CiAKKwkvKiBNYWtlIGFuIGF0dGVtcHQgdG8gZ3JvdXAgc2ltaWxhciBPUiBjbGF1c2VzIGlu dG8gQU5ZIG9wZXJhdGlvbiAqLworCWlmIChlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gJiYg YS0+Ym9vbG9wID09IE9SX0VYUFIgJiYKKwkJbGlzdF9sZW5ndGgoYXJncykgPiAxKQorCQly ZXR1cm4gVHJhbnNmb3JtT3JFeHByVG9BTlkocHN0YXRlLCBhcmdzLCBhLT5sb2NhdGlvbik7 CisKIAlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKGEtPmJvb2xvcCwgYXJncywgYS0+ bG9jYXRpb24pOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4 IDkzZGVkMzFlZDkuLjdkM2ExY2EyMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCkBAIC0xMDI2LDYgKzEwMjYsMTcgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZp Z3VyZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJ eworCQl7ImVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiIsIFBHQ19VU0VSU0VULCBRVUVSWV9U VU5JTkdfT1RIRVIsCisJCQlnZXR0ZXh0X25vb3AoIlRyYW5zZm9ybSBhIHNlcXVlbmNlIG9m IE9SIGNsYXVzZXMgdG8gYW4gSU4gZXhwcmVzc2lvbi4iKSwKKwkJCWdldHRleHRfbm9vcCgi VGhlIHBsYW5uZXIgd2lsbCByZXBsYWNlIGNsYXVzZXMgbGlrZSAneD1jMSBPUiB4PWMyIC4u IgorCQkJCQkJICJ0byB0aGUgY2xhdXNlICd4IElOIChjMSxjMiwuLi4pJyIpLAorCQkJR1VD X0VYUExBSU4KKwkJfSwKKwkJJmVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiwKKwkJdHJ1ZSwK KwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQkvKgogCQkgKiBOb3QgZm9yIGdlbmVy YWwgdXNlIC0tLSB1c2VkIGJ5IFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gYW5kIFNFVApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmlu ZGV4IGVkY2MwMjgyYjIuLmQzMGRjNmQ1MWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM4OSw2ICszODksNyBAQAogIyAt IFBsYW5uZXIgTWV0aG9kIENvbmZpZ3VyYXRpb24gLQogCiAjZW5hYmxlX2FzeW5jX2FwcGVu ZCA9IG9uCisjZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb24KICNlbmFibGVfYml0bWFw c2NhbiA9IG9uCiAjZW5hYmxlX2dhdGhlcm1lcmdlID0gb24KICNlbmFibGVfaGFzaGFnZyA9 IG9uCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDAwYjUwOTI3MTMuLmQyOGJm NjE3ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisr KyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yMDk1LDkgKzIwOTUs OSBAQCBteSAldGVzdHMgPSAoCiAJCXJlZ2V4cCA9PiBxci9eCiAJCQlcUUNSRUFURSBET01B SU4gZHVtcF90ZXN0LnVzX3Bvc3RhbF9jb2RlIEFTIHRleHQgQ09MTEFURSBwZ19jYXRhbG9n LiJDIiBERUZBVUxUICcxMDAxNCc6OnRleHRcRVxuXHMrCiAJCQlcUUNPTlNUUkFJTlQgdXNf cG9zdGFsX2NvZGVfY2hlY2sgQ0hFQ0sgXEUKLQkJCVxRKCgoVkFMVUUgfiAnXlxkezV9XEUK LQkJCVwkXFEnOjp0ZXh0KSBPUiAoVkFMVUUgfiAnXlxkezV9LVxkezR9XEVcJAotCQkJXFEn Ojp0ZXh0KSkpO1xFKC58XG4pKgorCQkJXFEoKFZBTFVFIH4gQU5ZIChBUlJBWVsnXlxkezV9 XEUKKwkJCVwkXFEnOjp0ZXh0LCAnXlxkezV9LVxkezR9XEVcJAorCQkJXFEnOjp0ZXh0XSkp KTtcRSgufFxuKSoKIAkJCVxRQ09NTUVOVCBPTiBDT05TVFJBSU5UIHVzX3Bvc3RhbF9jb2Rl X2NoZWNrIE9OIERPTUFJTiBkdW1wX3Rlc3QudXNfcG9zdGFsX2NvZGUgSVMgJ2NoZWNrIGl0 JztcRQogCQkJL3htLAogCQlsaWtlID0+CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9xdWVyeWp1bWJsZS5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAppbmRl eCBmMWM1NWM4MDY3Li5hOWFlMDQ4YWY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9xdWVyeWp1bWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgK QEAgLTY1LDYgKzY1LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21wdXRlX3F1ZXJ5 X2lkOwogCiBleHRlcm4gY29uc3QgY2hhciAqQ2xlYW5RdWVyeXRleHQoY29uc3QgY2hhciAq cXVlcnksIGludCAqbG9jYXRpb24sIGludCAqbGVuKTsKIGV4dGVybiBKdW1ibGVTdGF0ZSAq SnVtYmxlUXVlcnkoUXVlcnkgKnF1ZXJ5KTsKK2V4dGVybiBKdW1ibGVTdGF0ZSAqSnVtYmxl RXhwcihFeHByICpleHByLCB1aW50NjQgKnF1ZXJ5SWQpOwogZXh0ZXJuIHZvaWQgRW5hYmxl UXVlcnlJZCh2b2lkKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcXVlcnlfaWRfZW5h YmxlZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAppbmRleCA3YjYzYzVjZjcxLi4z NWFiNTc3NTAxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVy LmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCkBAIC01MCw2ICs1 MCw3IEBAIHN0cnVjdCBQbGFubmVkU3RtdDsKIHN0cnVjdCBQYXJhbUxpc3RJbmZvRGF0YTsK IHN0cnVjdCBIZWFwVHVwbGVEYXRhOwogCitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFi bGVfb3JfdHJhbnNmb3JtYXRpb247CiAKIC8qIGluIHBhdGgvY2xhdXNlc2VsLmM6ICovCiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCA3 OWZhMTE3Y2I1Li5iODY1M2MwOWVhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xODM4LDE4ICsxODM4LDUwIEBAIERST1AgVEFCTEUg b25la193aXRoX251bGw7CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgKiBGUk9NIHRl bmsxCiAgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhv dXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gQml0bWFwIEhlYXAgU2NhbiBv biB0ZW5rMQotICAgUmVjaGVjayBDb25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRo b3VzID0gMSkpIE9SICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDMpKSBPUiAo KHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSA0MikpKQotICAgLT4gIEJpdG1hcE9y Ci0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhv dXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0 ZW50aG91cyA9IDEpKQotICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5k ID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkKLSAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gNDIpKQotKDkgcm93cykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5k ZXggU2NhbiB1c2luZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0ZW5rMQorICAgSW5kZXgg Q29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEsMyw0Mn0n OjppbnRlZ2VyW10pKSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hF UkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1Ig dGVudGhvdXMgPSA0Mik7CisgdW5pcXVlMSB8IHVuaXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVu IHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRob3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhv dXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4gfCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3Ry aW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorICAg ICAgNDIgfCAgICA1NTMwIHwgICAwIHwgICAgMiB8ICAgMiB8ICAgICAgMiB8ICAgICAgNDIg fCAgICAgICA0MiB8ICAgICAgICAgIDQyIHwgICAgICAgIDQyIHwgICAgICAgNDIgfCAgODQg fCAgIDg1IHwgUUJBQUFBICAgfCBTRUlBQUEgICB8IE9PT094eAorKDEgcm93KQorCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBo dW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0g QU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhv dXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAo J3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0 aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitT RVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50 aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2Fu IHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAo KHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVn ZXJbXSkpKQorKDIgcm93cykKIAogU0VMRUNUICogRlJPTSB0ZW5rMQogICBXSEVSRSB0aG91 c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91 cyA9IDQyKTsKQEAgLTE4NjEsMjggKzE4OTMsMTE2IEBAIFNFTEVDVCAqIEZST00gdGVuazEK IEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdI RVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRo b3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJp dG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0g NDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhv dXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2Fu ZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQg PSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEg cm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5k IDwgOTkgT1IgNDMgPiB0aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2Fu ZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBC aXRtYXBBbmQKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9 IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Ro b3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNh bmQgPCBBTlkgKCd7NDIsOTksNDMsNDJ9Jzo6aW50ZWdlcltdKSkKKyg4IHJvd3MpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJF IHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0 aG91c2FuZCA9IDQxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRo b3VzID0gQU5ZICgnezEsM30nOjppbnRlZ2VyW10pKSkgT1IgKHRob3VzYW5kID0gNDEpKQor ICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDN9 Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh0aG91c2FuZCA9IDQxKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50 aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMTAK KygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91 c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgoaHVuZHJl ZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKSBP UiAodGVudGhvdXMgPCAyKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIC0+ICBC aXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5Z ICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0ZW50aG91cyA8IDIpCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVu dGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQx KQorKDE0IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1 bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50 aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMjAK KygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91 c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0ZQogICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5k cmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDk5KSkpCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKCgodGhvdXNhbmQg PSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKSBPUiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9 Jzo6aW50ZWdlcltdKSkpKQogICAgICAgICAgLT4gIEJpdG1hcEFuZAogICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiAgICAgICAgICAgICAgICAt PiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkKICAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91 c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRo b3VzYW5kID0gOTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo dGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltdKSkKICgxMSByb3dzKQogCiBT RUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQotICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBB TkQgdGVudGhvdXMgPSAyKTsKICBjb3VudCAKIC0tLS0tLS0KICAgICAxMAogKDEgcm93KQog CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLQogLS0gQ2hlY2sgYmVoYXZp b3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvaW5oZXJpdC5vdXQKaW5kZXggMTMwYTkyNDIyOC4uNjg0ODg2MzM2 YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0CkBAIC0yNjAwLDcg KzI2MDAsNyBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbGlzdF9wYXJ0 ZWQgd2hlcmUgYSA9ICdhYicgb3IgYSBpbiAobnVsbCwgJ2NkJwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBv biBwYXJ0X2FiX2NkIGxpc3RfcGFydGVkCi0gICBGaWx0ZXI6ICgoKGEpOjp0ZXh0ID0gJ2Fi Jzo6dGV4dCkgT1IgKChhKTo6dGV4dCA9IEFOWSAoJ3tOVUxMLGNkfSc6OnRleHRbXSkpKQor ICAgRmlsdGVyOiAoKChhKTo6dGV4dCA9IEFOWSAoJ3tOVUxMLGNkfSc6OnRleHRbXSkpIE9S ICgoYSk6OnRleHQgPSAnYWInOjp0ZXh0KSkKICgyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBsaXN0X3BhcnRlZCB3aGVyZSBhID0gJ2FiJzsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4IDk2MDU0MDAwMjEuLmNkMmQ3OGE2MzYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtNDIxMCwxMCArNDIxMCwx MCBAQCBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0 ZW5rMSBiIG9uCiAgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgogICAo KGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBO ZXN0ZWQgTG9vcAotICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51 bmlxdWUxID0gMikpIE9SICgoKGEudW5pcXVlMiA9IDMpIE9SIChhLnVuaXF1ZTIgPSA3KSkg QU5EIChiLmh1bmRyZWQgPSA0KSkpCisgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0g MSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6 OmludGVnZXJbXSkpIEFORCAoYi5odW5kcmVkID0gNCkpKQogICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gdGVuazEgYgogICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAy KSBPUiAoaHVuZHJlZCA9IDQpKQogICAgICAgICAgLT4gIEJpdG1hcE9yCkBAIC00MjIzLDE2 ICs0MjIzLDY0IEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNCkKICAgIC0+ICBN YXRlcmlhbGl6ZQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQot ICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVl MiA9IDMpIE9SICh1bmlxdWUyID0gNykpCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6 ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10p KSkKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgogICAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAgICAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDMpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9 Jzo6aW50ZWdlcltdKSkKKygxNyByb3dzKQorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEg am9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBv cgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9 IDQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9p biBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgo YS51bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBBTkQgKGIuaHVuZHJlZCA9 IDQpKSkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKKyAgICAgICAgIFJl Y2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAg IC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlx dWUxID0gMikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9 IDQpCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIHRlbmsxIGEKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0g MSkgT1IgKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpKQorICAgICAgICAg ICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gNykKLSgxOSByb3dzKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6 OmludGVnZXJbXSkpCisoMTcgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0 ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxIDwgMjAgb3Ig YS51bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgor ICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAo Yi51bmlxdWUxID0gMikpIE9SICgoYS51bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2Vy W10pKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSBPUiAoYS51bmlxdWUxIDwgMjApIE9SIChhLnVu aXF1ZTEgPSAzKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSBiCisgICAtPiAgTWF0ZXJp YWxpemUKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKKyAgICAg ICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBB TlkgKCd7Myw3fSc6OmludGVnZXJbXSkpIE9SICh1bmlxdWUxIDwgMjApIE9SICh1bmlxdWUx ID0gMykpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7 Myw3fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHVuaXF1ZTEgPCAyMCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDMpCisoMTUgcm93cykKIAorUkVTRVQg ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0KIC0tIHRlc3QgcGxhY2VtZW50IG9mIG1v dmFibGUgcXVhbHMgaW4gYSBwYXJhbWV0ZXJpemVkIGpvaW4gdHJlZQogLS0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAppbmRleCBiNDE5 NTBkOTIzLi4yNmIwNWQ3YTVhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fcHJ1bmUub3V0CkBAIC04MiwyNSArODIsNDcgQEAgZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsKICgyIHJvd3MpCiAK IGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9y IGEgPSAnYyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICBBcHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCi0g ICAgICAgICBGaWx0ZXI6ICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFy KSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKICAg IC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9ICdh Jzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkKKyAgICAgICAgIEZpbHRlcjogKGEg PSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKICg1IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdh JyBvciBhID0gJ2MnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBB cHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCi0gICAgICAgICBGaWx0ZXI6 ICgoYSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6 YnBjaGFyKSkpCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChhID0g QU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxw XzIKLSAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0gJ2EnOjpi cGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKSkKKyAgICAgICAgIEZpbHRlcjogKChhIElT IE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCiAoNSByb3dz KQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdhJyBvciBhID0gJ2MnOworICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAt PiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAo J3thLGN9Jzo6YnBjaGFyW10pKQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKKyAg ICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKKyg1IHJvd3Mp CisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5v dCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQor ICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9 Jzo6YnBjaGFyW10pKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yCisgICAgICAg ICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgne2EsY30nOjpicGNo YXJbXSkpKQorKDUgcm93cykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwog ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwog ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUxNSwxMCArNTM3LDEwIEBAIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8PSAzMTsKICgyNyByb3dzKQog CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9y IGEgPSA3OwotICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIFNlcSBTY2FuIG9uIHJscDIgcmxwCi0gICBGaWx0ZXI6ICgoYSA9IDEpIE9SIChhID0g NykpCisgICBGaWx0ZXI6IChhID0gQU5ZICgnezEsN30nOjppbnRlZ2VyW10pKQogKDIgcm93 cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0g MSBvciBiID0gJ2FiJzsKQEAgLTU4OSwyMCArNjExLDIwIEBAIGV4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1 KTsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9uIHJscDEgcmxwXzEKLSAgICAgICAg IEZpbHRlcjogKChhIDwgMSkgT1IgKChhID4gMjApIEFORCAoYSA8IDI1KSkpCisgICAgICAg ICBGaWx0ZXI6ICgoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSBPUiAoYSA8IDEpKQogICAgLT4g IFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMgotICAgICAgICAgRmlsdGVyOiAoKGEgPCAxKSBP UiAoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSkKKyAgICAgICAgIEZpbHRlcjogKCgoYSA+IDIw KSBBTkQgKGEgPCAyNSkpIE9SIChhIDwgMSkpCiAoNSByb3dzKQogCiAtLSB3aGVyZSBjbGF1 c2UgY29udHJhZGljdHMgc3ViLXBhcnRpdGlvbidzIGNvbnN0cmFpbnQKIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKLSAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9uIHJs cDRfMSBybHBfMQotICAgICAgICAgRmlsdGVyOiAoKGEgPSAyMCkgT1IgKGEgPSA0MCkpCisg ICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCiAgICAt PiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF8yCi0gICAgICAgICBGaWx0ZXI6ICgo YSA9IDIwKSBPUiAoYSA9IDQwKSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAs NDB9Jzo6aW50ZWdlcltdKSkKICg1IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAzIHdoZXJlIGEgPSAyMDsgICAvKiBlbXB0eSAqLwpAQCAtNjcxLDYg KzY5MywxNjMgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSAoYSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEgYW5kIGEgPQogICAgICAgICAgRmlsdGVy OiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCiAo MTEgcm93cykKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBhID0gNzsK KyAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcmxwMiBy bHAKKyAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MSw3fSc6OmludGVnZXJbXSkpCisoMiByb3dz KQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAx IG9yIGIgPSAnYWInOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDEg cmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6 OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDIgcmxwXzIKKyAgICAgICAgIEZpbHRl cjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDNhYmNkIHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgo Yik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxw XzQKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRl eHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMiBybHBfNQorICAgICAgICAgRmlsdGVy OiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwNF9kZWZhdWx0IHJscF82CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9S ICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEg cmxwXzcKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6 OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfOAorICAgICAg ICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAt PiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMTAgcmxwXzkKKyAgICAgICAgIEZpbHRlcjog KChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscF9kZWZhdWx0XzMwIHJscF8xMAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBP UiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2Rl ZmF1bHRfbnVsbCBybHBfMTEKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6 dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X2Rl ZmF1bHQgcmxwXzEyCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQg PSAnYWInOjp0ZXh0KSkKKygyNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwIHdoZXJlIGEgPiAyMCBhbmQgYSA8IDI3OworICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJs cF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDIwKSBBTkQgKGEgPCAyNykpCisgICAtPiAg U2VxIFNjYW4gb24gcmxwNF8yIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDIwKSBB TkQgKGEgPCAyNykpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcmxwIHdoZXJlIGEgPSAyOTsKKyAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcmxwNF9k ZWZhdWx0IHJscAorICAgRmlsdGVyOiAoYSA9IDI5KQorKDIgcm93cykKKworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID49IDI5OworICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHA0X2RlZmF1bHQgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwNV8xIHJscF8yCisgICAgICAgICBGaWx0ZXI6IChhID49 IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfMworICAgICAgICAg RmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8zMCBy bHBfNAorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHBfZGVmYXVsdF9kZWZhdWx0IHJscF81CisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQor KDExIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hl cmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsKKyAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAg U2VxIFNjYW4gb24gcmxwMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKChhID4gMjApIEFO RCAoYSA8IDI1KSkgT1IgKGEgPCAxKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxw XzIKKyAgICAgICAgIEZpbHRlcjogKCgoYSA+IDIwKSBBTkQgKGEgPCAyNSkpIE9SIChhIDwg MSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxw IHdoZXJlIGEgPSAyMCBvciBhID0gNDA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0 XzEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdl cltdKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzIKKyAgICAgICAg IEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisK K2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdoZXJlIGEgPSAyMDsg ICAvKiBlbXB0eSAqLworICAgICAgICBRVUVSWSBQTEFOICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCiso MiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IGEgPiAxIGFuZCBhID0gMTA7CS8qIG9ubHkgZGVmYXVsdCAqLworICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzEwIHJscAorICAgRmlsdGVyOiAoKGEgPiAx KSBBTkQgKGEgPSAxMCkpCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253YXJkcywg aW5jbHVkaW5nIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMQor ICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDNlZmdoIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAo YSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM251bGx4eSBybHBfMworICAgICAg ICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9u IHJscDNfZGVmYXVsdCBybHBfNAorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEg Pj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfNQorICAgICAgICAgRmls dGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRf MiBybHBfNgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAg LT4gIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBfNworICAgICAgICAgRmlsdGVyOiAo KGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfMSBybHBf OAorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNl cSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfOQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAx KSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzMwIHJs cF8xMAorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4g IFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X2RlZmF1bHQgcmxwXzExCisgICAgICAgICBGaWx0 ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisoMjMgcm93cykKKworZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVt cHR5ICovCisgICAgICAgIFFVRVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBSZXN1bHQKKyAgIE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3Mp CisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgKGEgPSAx IGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0gMTUpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDIgcmxwXzEKKyAg ICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQg KGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNhYmNkIHJscF8yCisgICAgICAg ICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0g MTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzZWZnaCBybHBfMworICAgICAgICAgRmls dGVyOiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwM251bGx4eSBybHBfNAorICAgICAgICAgRmlsdGVy OiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwM19kZWZhdWx0IHJscF81CisgICAgICAgICBGaWx0ZXI6 ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKygx MSByb3dzKQorCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLSBtdWx0aS1j b2x1bW4ga2V5cwogY3JlYXRlIHRhYmxlIG1jM3AgKGEgaW50LCBiIGludCwgYyBpbnQpIHBh cnRpdGlvbiBieSByYW5nZSAoYSwgYWJzKGIpLCBjKTsKIGNyZWF0ZSB0YWJsZSBtYzNwX2Rl ZmF1bHQgcGFydGl0aW9uIG9mIG1jM3AgZGVmYXVsdDsKQEAgLTIwMzYsMTAgKzIyMTUsMTAg QEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGhwIHdoZXJlIGEgPSAxIGFu ZCBiID0gJ2FiY2RlJzsKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGhw IHdoZXJlIGEgPSAxIGFuZCBiID0gJ2FiY2RlJyBhbmQKICAgKGMgPSAyIG9yIGMgPSAzKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIGhw MiBocAotICAgRmlsdGVyOiAoKGEgPSAxKSBBTkQgKGIgPSAnYWJjZGUnOjp0ZXh0KSBBTkQg KChjID0gMikgT1IgKGMgPSAzKSkpCisgICBGaWx0ZXI6ICgoYyA9IEFOWSAoJ3syLDN9Jzo6 aW50ZWdlcltdKSkgQU5EIChhID0gMSkgQU5EIChiID0gJ2FiY2RlJzo6dGV4dCkpCiAoMiBy b3dzKQogCiBkcm9wIHRhYmxlIGhwMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKaW5kZXggYjc0ODhkNzYwZS4uYjQyNGFkMzE1NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKQEAgLTI1MDEsNyArMjUwMSw3IEBAIHBnX3N0YXRzfCBTRUxFQ1Qg bi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgIEpPSU4gcGdfY2xhc3MgYyBPTiAoKGMu b2lkID0gcy5zdGFyZWxpZCkpKQogICAgICBKT0lOIHBnX2F0dHJpYnV0ZSBhIE9OICgoKGMu b2lkID0gYS5hdHRyZWxpZCkgQU5EIChhLmF0dG51bSA9IHMuc3RhYXR0bnVtKSkpKQogICAg ICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gKChuLm9pZCA9IGMucmVsbmFtZXNwYWNl KSkpCi0gIFdIRVJFICgoTk9UIGEuYXR0aXNkcm9wcGVkKSBBTkQgaGFzX2NvbHVtbl9wcml2 aWxlZ2UoYy5vaWQsIGEuYXR0bnVtLCAnc2VsZWN0Jzo6dGV4dCkgQU5EICgoYy5yZWxyb3dz ZWN1cml0eSA9IGZhbHNlKSBPUiAoTk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKSkp OworICBXSEVSRSAoKE5PVCBhLmF0dGlzZHJvcHBlZCkgQU5EIGhhc19jb2x1bW5fcHJpdmls ZWdlKGMub2lkLCBhLmF0dG51bSwgJ3NlbGVjdCc6OnRleHQpIEFORCAoKE5PVCByb3dfc2Vj dXJpdHlfYWN0aXZlKGMub2lkKSkgT1IgKGMucmVscm93c2VjdXJpdHkgPSBmYWxzZSkpKTsK IHBnX3N0YXRzX2V4dHwgU0VMRUNUIGNuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBj LnJlbG5hbWUgQVMgdGFibGVuYW1lLAogICAgIHNuLm5zcG5hbWUgQVMgc3RhdGlzdGljc19z Y2hlbWFuYW1lLApAQCAtMjUzMiw3ICsyNTMyLDcgQEAgcGdfc3RhdHNfZXh0fCBTRUxFQ1Qg Y24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICBXSEVSRSAoKE5PVCAoRVhJU1RTICggU0VM RUNUIDEKICAgICAgICAgICAgRlJPTSAodW5uZXN0KHMuc3R4a2V5cykgayhrKQogICAgICAg ICAgICAgIEpPSU4gcGdfYXR0cmlidXRlIGEgT04gKCgoYS5hdHRyZWxpZCA9IHMuc3R4cmVs aWQpIEFORCAoYS5hdHRudW0gPSBrLmspKSkpCi0gICAgICAgICAgV0hFUkUgKE5PVCBoYXNf Y29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0sICdzZWxlY3QnOjp0ZXh0KSkpKSkg QU5EICgoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNlKSBPUiAoTk9UIHJvd19zZWN1cml0eV9h Y3RpdmUoYy5vaWQpKSkpOworICAgICAgICAgIFdIRVJFIChOT1QgaGFzX2NvbHVtbl9wcml2 aWxlZ2UoYy5vaWQsIGEuYXR0bnVtLCAnc2VsZWN0Jzo6dGV4dCkpKSkpIEFORCAoKE5PVCBy b3dfc2VjdXJpdHlfYWN0aXZlKGMub2lkKSkgT1IgKGMucmVscm93c2VjdXJpdHkgPSBmYWxz ZSkpKTsKIHBnX3N0YXRzX2V4dF9leHByc3wgU0VMRUNUIGNuLm5zcG5hbWUgQVMgc2NoZW1h bmFtZSwKICAgICBjLnJlbG5hbWUgQVMgdGFibGVuYW1lLAogICAgIHNuLm5zcG5hbWUgQVMg c3RhdGlzdGljc19zY2hlbWFuYW1lLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0 c19leHQub3V0CmluZGV4IDEwOTAzYmRhYjAuLjZmNTViOWUzZWMgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKQEAgLTEzMjIsMTkgKzEzMjIsMTkgQEAg U0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5j dGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0 ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAo YSA9IDEgT1IgYSA9IDUxKSBBTkQgYiA9ICcnMScnJyk7CiAgZXN0aW1hdGVkIHwgYWN0dWFs IAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkgfCAgICAxMDAKKyAgICAgICAx MDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoYSA9 IDEgT1IgYSA9IDUxKSBBTkQgKGIgPSAnJzEnJyBPUiBiID0gJycyJycpJyk7CiAgZXN0aW1h dGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkgfCAgICAx MDAKKyAgICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVj a19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2ll cyBXSEVSRSAoYSA9IDEgT1IgYSA9IDIgT1IgYSA9IDUxIE9SIGEgPSA1MikgQU5EIChiID0g JycxJycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0t LS0tKy0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAwCisgICAgICAgMjAwIHwgICAgMjAw CiAoMSByb3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50IGF0dHJp YnV0ZXMgYXJlIGluY29tcGF0aWJsZQpAQCAtMTY2NCwxOSArMTY2NCwxOSBAQCBTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxf ZGVwZW5kZW5jaWVzIFdIRVJFCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dz KCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIp ID0gMiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgdXBwZXIoYikgPSAnJzEnJycpOwogIGVzdGlt YXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAg MTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hl Y2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNp ZXMgV0hFUkUgKChhICogMikgPSAyIE9SIChhICogMikgPSAxMDIpIEFORCAodXBwZXIoYikg PSAnJzEnJyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAK IC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAw IHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jv d3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKChhICog MikgPSAyIE9SIChhICogMikgPSA0IE9SIChhICogMikgPSAxMDIgT1IgKGEgKiAyKSA9IDEw NCkgQU5EICh1cHBlcihiKSA9ICcnMScnIE9SIHVwcGVyKGIpID0gJycyJycpJyk7CiAgZXN0 aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAxOTcgfCAg ICAyMDAKKyAgICAgICAyMDAgfCAgICAyMDAKICgxIHJvdykKIAogLS0gT1IgY2xhdXNlcyBy ZWZlcmVuY2luZyBkaWZmZXJlbnQgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N5c3ZpZXdzLm91dAppbmRleCA5YmU3YWNhMmI4Li4xZjkwMjliNWIyIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApAQCAtMTI0LDYgKzEyNCw3IEBA IHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtl ICdlbmFibGUlJzsKICBlbmFibGVfbWVtb2l6ZSAgICAgICAgICAgICAgICAgfCBvbgogIGVu YWJsZV9tZXJnZWpvaW4gICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX25lc3Rsb29wICAg ICAgICAgICAgICAgIHwgb24KKyBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gICAgICAgfCBv bgogIGVuYWJsZV9wYXJhbGxlbF9hcHBlbmQgICAgICAgICB8IG9uCiAgZW5hYmxlX3BhcmFs bGVsX2hhc2ggICAgICAgICAgIHwgb24KICBlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgICAg ICAgfCBvbgpAQCAtMTM0LDcgKzEzNSw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20g cGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2Nh biAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAg ICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMyByb3dz KQorKDI0IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlw dGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuCiBzZWxlY3QgdHlwZSwgY291bnQoKikgPiAwIGFz IG9rIEZST00gcGdfd2FpdF9ldmVudHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNj YW4ub3V0CmluZGV4IGYxMzNiNWE0YWMuLjJhMDc5ZTk5NmIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC90aWRzY2FuLm91dApAQCAtNDMsMTAgKzQzLDI2IEBAIFNFTEVDVCBjdGlk LCAqIEZST00gdGlkc2NhbiBXSEVSRSAnKDAsMSknID0gY3RpZDsKIC0tIE9SJ2QgY2xhdXNl cwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdI RVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwotICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgVGlkIFNjYW4gb24gdGlkc2NhbgorICAgVElEIENvbmQ6IChjdGlkID0g QU5ZICgneyIoMCwyKSIsIigwLDEpIn0nOjp0aWRbXSkpCisoMiByb3dzKQorCitTRUxFQ1Qg Y3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9 IGN0aWQ7CisgY3RpZCAgfCBpZCAKKy0tLS0tLS0rLS0tLQorICgwLDEpIHwgIDEKKyAoMCwy KSB8ICAyCisoMiByb3dzKQorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247 CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hF UkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVGlkIFNjYW4g b24gdGlkc2NhbgotICAgVElEIENvbmQ6ICgoY3RpZCA9ICcoMCwyKSc6OnRpZCkgT1IgKCco MCwxKSc6OnRpZCA9IGN0aWQpKQorICAgVElEIENvbmQ6IChjdGlkID0gQU5ZICgneyIoMCwy KSIsIigwLDEpIn0nOjp0aWRbXSkpCiAoMiByb3dzKQogCiBTRUxFQ1QgY3RpZCwgKiBGUk9N IHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CkBAIC01 Niw2ICs3Miw3IEBAIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0g JygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKICAoMCwyKSB8ICAyCiAoMiByb3dzKQogCitS RVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLSBjdGlkID0gU2NhbGFyQXJyYXlP cCAtIGltcGxlbWVudGVkIGFzIHRpZHNjYW4KIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVD VCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gQU5ZKEFSUkFZWycoMCwxKScs ICcoMCwyKSddOjp0aWRbXSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j cmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNx bAppbmRleCBkNDljZTlmMzAwLi41NmZkZTE1YmMxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NyZWF0ZV9pbmRleC5zcWwKQEAgLTczNyw2ICs3MzcsNDEgQEAgU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRy ZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CiAKK1NFVCBl bmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3Vz ID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CitTRUxFQ1QgKiBGUk9N IHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVu dGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91 c2FuZCA9IDk5KTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhv dXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0 aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhv dXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3Vz YW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2Fu ZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQg PSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0 MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEK KyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9 IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitTRUxFQ1QgY291bnQo KikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQy IE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsK K1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogLS0KIC0tIENoZWNrIGJlaGF2 aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBjb250ZW50cwogLS0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbi5zcWwKaW5kZXggYzRjNmM3YjhiYS4uMTY2MzYwODA0MyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbi5zcWwKQEAgLTE0MDgsNiArMTQwOCwxNiBAQCBleHBsYWluIChjb3N0cyBvZmYp CiBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgIChhLnVuaXF1ZTEg PSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgogICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlx dWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1h dGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBh IGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikg b3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQg PSA0KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2lu IHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51 bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9y IGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKK1JFU0VUIGVuYWJsZV9vcl90 cmFuc2Zvcm1hdGlvbjsKIAogLS0KIC0tIHRlc3QgcGxhY2VtZW50IG9mIG1vdmFibGUgcXVh bHMgaW4gYSBwYXJhbWV0ZXJpemVkIGpvaW4gdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwKaW5kZXggN2JhNmE5ZmYzNy4uMzFhZDQxNjZkNSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCkBAIC0yMSw2ICsy MSwxMiBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBp cyBub3QgbnVsbDsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVy ZSBhIGlzIG51bGw7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hl cmUgYSA9ICdhJyBvciBhID0gJ2MnOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOwor CitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdhJyBvciBhID0gJ2MnOworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGwgYW5k IChhID0gJ2EnIG9yIGEgPSAnYycpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9u OworCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAn Zyc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAn YScgYW5kIGEgPD4gJ2QnOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxw IHdoZXJlIGEgbm90IGluICgnYScsICdkJyk7CkBAIC05OSw2ICsxMDUsMjIgQEAgZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA+PTE1 OwkvKiBybHAzIG9ud2FyZHMsIGkKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA9IDEgYW5kIGEgPSAzOwkvKiBlbXB0eSAqLwogZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAoYSA9IDEgYW5kIGEgPSAzKSBvciAo YSA+IDEgYW5kIGEgPSAxNSk7CiAKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9 IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0g MSBvciBhID0gNzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hl cmUgYSA9IDEgb3IgYiA9ICdhYic7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gcmxwIHdoZXJlIGEgPiAyMCBhbmQgYSA8IDI3OworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjk7CitleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPj0gMjk7CitleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChhID4gMjAgYW5kIGEgPCAyNSk7Citl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyMCBvciBh ID0gNDA7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBh ID0gMjA7ICAgLyogZW1wdHkgKi8KK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPSAxMDsJLyogb25seSBkZWZhdWx0ICovCitleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID49 MTU7CS8qIHJscDMgb253YXJkcywgaW5jbHVkaW5nIGRlZmF1bHQgKi8KK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgYW5kIGEgPSAzOwkvKiBl bXB0eSAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAo YSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEgYW5kIGEgPSAxNSk7CitSRVNFVCBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb247CisKIC0tIG11bHRpLWNvbHVtbiBrZXlzCiBjcmVhdGUgdGFi bGUgbWMzcCAoYSBpbnQsIGIgaW50LCBjIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhLCBh YnMoYiksIGMpOwogY3JlYXRlIHRhYmxlIG1jM3BfZGVmYXVsdCBwYXJ0aXRpb24gb2YgbWMz cCBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbAppbmRleCAzMTNlMGZiOWI2 Li4wNDk5YmVkYjllIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2Fu LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbApAQCAtMjIsNiAr MjIsMTIgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRz Y2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwogU0VMRUNUIGN0 aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBj dGlkOwogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICco MCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4g V0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CitSRVNFVCBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb247CisKIC0tIGN0aWQgPSBTY2FsYXJBcnJheU9wIC0gaW1wbGVt ZW50ZWQgYXMgdGlkc2NhbgogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGN0aWQsICog RlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSBBTlkoQVJSQVlbJygwLDEpJywgJygwLDIpJ106 OnRpZFtdKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZmM4YjE1ZDBjZi4u NWNmNDQ0ZTk1YiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE2NTYsNiAr MTY1Niw4IEBAIE51bWVyaWNWYXIKIE9NX3VpbnQzMgogT1AKIE9TQVBlckdyb3VwU3RhdGUK K09yQ2xhdXNlR3JvdXBFbnRyeQorT3JDbGF1c2VHcm91cEtleQogT1NBUGVyUXVlcnlTdGF0 ZQogT1NJbmZvCiBPU1NMQ2lwaGVyCi0tIAoyLjQzLjIKCg== --------------auBqnJYXFpNTOmzPPAFvhjpF Content-Type: text/plain; charset=UTF-8; name="v18-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pat.patch" Content-Disposition: attachment; filename*0="v18-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pa"; filename*1="t.patch" Content-Transfer-Encoding: base64 RnJvbSAyODEwYmUzNDEzNjk2Nzk2ZTlmMmI4OGE4ZGQ3NzgwMWMwMDg4MTM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogV2VkLCAyNCBKYW4gMjAyNCAxNDowNzoxNyArMDcw MApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBUZWFjaCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMg dG8gYnVpbGQgQml0bWFwT3IgcGF0aHMKIG92ZXIgU0FPUCBjbGF1c2VzLgoKTGlrZXdpc2Ug T1IgY2xhdXNlcywgZGlzY292ZXIgU0FPUCBhcnJheSBhbmQgdHJ5IHRvIHNwbGl0IGl0cyBl bGVtZW50cwpiZXR3ZWVuIHNtYWxsZXIgc2l6ZWQgYXJyYXlzIHRvIGZpdCBhIHNldCBvZiBw YXJ0aWFsIGluZGV4ZXMuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu YyAgICAgfCAzMTUgKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcHJlZHRlc3QuYyAgICAgfCAgNDYgKysrKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcmVzdHJpY3RpbmZvLmMgfCAgMTMgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVy L29wdGltaXplci5oICAgICAgICAgfCAgMTYgKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9y ZXN0cmljdGluZm8uaCAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c2VsZWN0Lm91dCAgICAgIHwgMjgyICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3NlbGVjdC5zcWwgICAgICAgICAgIHwgIDgyICsrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDEgKwogOSBmaWxlcyBjaGFu Z2VkLCA3MDYgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmlu ZGV4IGFiYWQwMmY5MmMuLmUwNDZiNmJiY2EgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU0NDcsNiAr NTQ0Nyw5IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICAgIEl0IGFwcGxp ZXMgdG8gZXF1YWxpdHkgZXhwcmVzc2lvbnMgb25seS4gT25lIHNpZGUgb2Ygc3VjaCBhbiBl eHByZXNzaW9uCiAgICAgICAgIG11c3QgYmUgYSBjb25zdGFudCBjbGF1c2UsIGFuZCB0aGUg b3RoZXIgbXVzdCBjb250YWluIGEgdmFyaWFibGUgY2xhdXNlLgogICAgICAgICBUaGUgZGVm YXVsdCBpcyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgIEFsc28sIGR1cmluZyBC aXRtYXBTY2FuIHBhdGhzIGdlbmVyYXRpb24gaXQgZW5hYmxlcyBhbmFseXNpcyBvZiBlbGVt ZW50cworICAgICAgICBvZiBJTiBvciBBTlkgY29uc3RhbnQgYXJyYXlzIHRvIGNvdmVyIHN1 Y2ggY2xhdXNlIHdpdGggQml0bWFwT3Igc2V0IG9mCisgICAgICAgIHBhcnRpYWwgaW5kZXgg c2NhbnMuCiAgICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFy bGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5k eHBhdGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKaW5kZXgg MzJjNmE4YmJkYy4uNDdiZjUzODIwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9p bmR4cGF0aC5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhz LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3ByZXAuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv cmVzdHJpY3RpbmZvLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCkBAIC0x MjIwLDExICsxMjIxLDE4OCBAQCBidWlsZF9wYXRoc19mb3JfT1IoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogQnVp bGRpbmcgaW5kZXggcGF0aHMgb3ZlciBTQU9QIGNsYXVzZSBkaWZmZXJzIGZyb20gdGhlIGxv Z2ljIG9mIE9SIGNsYXVzZXMuCisgKiBIZXJlIHdlIGl0ZXJhdGUgYWNyb3NzIGFsbCB0aGUg YXJyYXkgZWxlbWVudHMgYW5kIHNwbGl0IHRoZW0gdG8gU0FPUHMsCisgKiBjb3JyZXNwb25k aW5nIHRvIGRpZmZlcmVudCBpbmRleGVzLiBXZSBtdXN0IG1hdGNoIGVhY2ggZWxlbWVudCB0 byBhbiBpbmRleC4KKyAqLworc3RhdGljIExpc3QgKgorYnVpbGRfcGF0aHNfZm9yX1NBT1Ao UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgUmVzdHJpY3RJbmZvICpyaW5m bywKKwkJCQkJIExpc3QgKm90aGVyX2NsYXVzZXMpCit7CisJTGlzdAkJCSAgICpyZXN1bHQg PSBOSUw7CisJTGlzdAkJCSAgICpwcmVkaWNhdGVfbGlzdHMgPSBOSUw7CisJTGlzdENlbGwJ CSAgICpsYzsKKwlQcmVkaWNhdGVzRGF0YQkgICAqcGQ7CisJU2NhbGFyQXJyYXlPcEV4cHIg ICpzYW9wID0gKFNjYWxhckFycmF5T3BFeHByICopIHJpbmZvLT5jbGF1c2U7CisKKwlBc3Nl cnQoSXNBKHNhb3AsIFNjYWxhckFycmF5T3BFeHByKSAmJiBzYW9wLT51c2VPcik7CisKKwlp ZiAoIUlzQShsc2Vjb25kKHNhb3AtPmFyZ3MpLCBDb25zdCkpCisJCS8qCisJCSAqIEhhcyBp dCBwcmFjdGljYWwgb3V0Y29tZSB0byBtZXJnZSBhcnJheXMgd2hpY2ggY291bGRuJ3QgY29u c3RhbnRpZmllZAorCQkgKiBiZWZvcmUgdGhhdCBzdGVwPworCQkgKi8KKwkJcmV0dXJuIE5J TDsKKworCS8qIENvbGxlY3QgcHJlZGljYXRlcyAqLworCWZvcmVhY2gobGMsIHJlbC0+aW5k ZXhsaXN0KQorCXsKKwkJSW5kZXhPcHRJbmZvICppbmRleCA9IChJbmRleE9wdEluZm8gKikg bGZpcnN0KGxjKTsKKworCQkvKiBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBwYXJ0aWFsIGlu ZGV4ZXMgc3VwcG9ydGluZyBiaXRtYXAgc2NhbnMgKi8KKwkJaWYgKCFpbmRleC0+YW1oYXNn ZXRiaXRtYXAgfHwgaW5kZXgtPmluZHByZWQgPT0gTklMIHx8IGluZGV4LT5wcmVkT0spCisJ CQljb250aW51ZTsKKworCQlwZCA9IHBhbGxvYzAoc2l6ZW9mKFByZWRpY2F0ZXNEYXRhKSk7 CisJCXBkLT5pZCA9IGZvcmVhY2hfY3VycmVudF9pbmRleChsYyk7CisJCS8qIFRoZSB0cmlj ayB3aXRoIHJlZHVjaW5nIHJlY3Vyc2lvbiBpcyBzdG9sZW4gZnJvbSBwcmVkaWNhdGVfaW1w bGllZF9ieSAqLworCQlwZC0+cHJlZGljYXRlID0gbGlzdF9sZW5ndGgoaW5kZXgtPmluZHBy ZWQpID09IDEgPworCQkJCQkJCQkJCShOb2RlICopIGxpbml0aWFsKGluZGV4LT5pbmRwcmVk KSA6CisJCQkJCQkJCQkJKE5vZGUgKikgaW5kZXgtPmluZHByZWQ7CisJCXByZWRpY2F0ZV9s aXN0cyA9IGxhcHBlbmQocHJlZGljYXRlX2xpc3RzLCAodm9pZCAqKSBwZCk7CisJfQorCisJ LyogU3BsaXQgdGhlIGFycmF5IGRhdGEgYWNjb3JkaW5nIHRvIGluZGV4IHByZWRpY2F0ZXMu ICovCisJaWYgKHByZWRpY2F0ZV9saXN0cyA9PSBOSUwgfHwKKwkJIXNhb3BfY292ZXJlZF9i eV9wcmVkaWNhdGVzKHNhb3AsIHByZWRpY2F0ZV9saXN0cykpCisJCXJldHVybiBOSUw7CisK KwlvdGhlcl9jbGF1c2VzID0gbGlzdF9kZWxldGVfcHRyKG90aGVyX2NsYXVzZXMsIHJpbmZv KTsKKworCS8qCisJICogSGF2aW5nIGluY29taW5nIFNBT1Agc3BsaXQgdG8gc2V0IG9mIHNt YWxsZXIgU0FPUHMgd2hpY2ggY2FuIGJlIGFwcGxpZWQKKwkgKiB0byBwYXJ0aWFsIGluZGV4 ZXMsIGdlbmVyYXRlIHBhdGhzIGZvciBlYWNoIG9uZS4KKwkgKi8KKwlmb3JlYWNoKGxjLCBw cmVkaWNhdGVfbGlzdHMpCisJeworCQlJbmRleE9wdEluZm8JICAgKmluZGV4OworCQlJbmRl eENsYXVzZVNldAkJY2xhdXNlc2V0OworCQlMaXN0CQkJICAgKmluZGV4cGF0aHM7CisJCVJl c3RyaWN0SW5mbwkgICAqcmluZm8xID0gTlVMTDsKKwkJRXhwcgkJCSAgICpjbGF1c2U7CisJ CUFycmF5VHlwZQkJICAgKmFycmF5dmFsID0gTlVMTDsKKwkJQXJyYXlFeHByCQkgICAqYXJy ID0gTlVMTDsKKwkJQ29uc3QJCQkgICAqYXJyYXljb25zdDsKKwkJU2NhbGFyQXJyYXlPcEV4 cHIJZGVzdDsKKworCQlwZCA9IChQcmVkaWNhdGVzRGF0YSAqKSBsZmlyc3QobGMpOworCQlp ZiAocGQtPmVsZW1zID09IE5JTCkKKwkJCS8qIFRoZSBpbmRleCBkb2Vzbid0IHBhcnRpY2lw YXRlIGluIHRoaXMgb3BlcmF0aW9uICovCisJCQljb250aW51ZTsKKworCQkvKiBNYWtlIHVw IG5ldyBhcnJheSAqLworCQlhcnJheWNvbnN0ID0gbHNlY29uZF9ub2RlKENvbnN0LCBzYW9w LT5hcmdzKTsKKwkJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAoYXJyYXljb25zdC0+ Y29uc3R2YWx1ZSk7CisJCWFyciA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisJCWFyci0+YXJy YXlfY29sbGlkID0gYXJyYXljb25zdC0+Y29uc3Rjb2xsaWQ7CisJCWFyci0+YXJyYXlfdHlw ZWlkID0gYXJyYXljb25zdC0+Y29uc3R0eXBlOworCQlhcnItPmVsZW1lbnRfdHlwZWlkID0g YXJyYXl2YWwtPmVsZW10eXBlOworCQlhcnItPmVsZW1lbnRzID0gcGQtPmVsZW1zOworCQlh cnItPmxvY2F0aW9uID0gLTE7CisJCWFyci0+bXVsdGlkaW1zID0gZmFsc2U7CisKKwkJLyog Q29tcG9zZSBuZXcgU0FPUCwgcGFydGlhbGx5IGNvdmVyaW5nIHRoZSBzb3VyY2Ugb25lICov CisJCW1lbWNweSgmZGVzdCwgc2FvcCwgc2l6ZW9mKFNjYWxhckFycmF5T3BFeHByKSk7CisJ CWRlc3QuYXJncyA9IGxpc3RfbWFrZTIobGluaXRpYWwoc2FvcC0+YXJncyksIGFycik7CisK KwkJY2xhdXNlID0gKEV4cHIgKikgZXN0aW1hdGVfZXhwcmVzc2lvbl92YWx1ZShyb290LCAo Tm9kZSAqKSAmZGVzdCk7CisKKwkJLyoKKwkJICogQ3JlYXRlIG5ldyBSZXN0cmljdEluZm8u IEl0IG1heWJlIG1vcmUgaGVhdnkgdGhhbiBqdXN0IGNvcHkgbm9kZSwKKwkJICogYnV0IHJl bWVtYmVyIHNvbWUgaW50ZXJuYWxzOiB0aGUgc2VyaWFsIG51bWJlciwgc2VsZWN0aXZpdHkK KwkJICogY2FjaGUgZXRjLgorCQkgKi8KKwkJcmluZm8xID0gbWFrZV9yZXN0cmljdGluZm8o cm9vdCwgY2xhdXNlLAorCQkJCQkJCQkgICByaW5mby0+aXNfcHVzaGVkX2Rvd24sCisJCQkJ CQkJCSAgIHJpbmZvLT5oYXNfY2xvbmUsCisJCQkJCQkJCSAgIHJpbmZvLT5pc19jbG9uZSwK KwkJCQkJCQkJICAgcmluZm8tPnBzZXVkb2NvbnN0YW50LAorCQkJCQkJCQkgICByaW5mby0+ c2VjdXJpdHlfbGV2ZWwsCisJCQkJCQkJCSAgIHJpbmZvLT5yZXF1aXJlZF9yZWxpZHMsCisJ CQkJCQkJCSAgIHJpbmZvLT5pbmNvbXBhdGlibGVfcmVsaWRzLAorCQkJCQkJCQkgICByaW5m by0+b3V0ZXJfcmVsaWRzKTsKKworCQlpbmRleCA9IGxpc3RfbnRoKHJlbC0+aW5kZXhsaXN0 LCBwZC0+aWQpOworCQlBc3NlcnQocHJlZGljYXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHBy ZWQsIGxpc3RfbWFrZTEocmluZm8xKSwgdHJ1ZSkpOworCisJCS8qIEV4Y2x1ZGluZyBwYXJ0 aWFsIGluZGV4ZXMgd2l0aCBwcmVkT0sgd2UgbWFrZSB0aGlzIHN0YXRlbWVudCBmYWxzZSAq LworCQlBc3NlcnQoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KGluZGV4LT5pbmRwcmVkLCBvdGhl cl9jbGF1c2VzLCBmYWxzZSkpOworCisJCS8qIFRpbWUgdG8gZ2VuZXJhdGUgaW5kZXggcGF0 aHMgKi8KKworCQlNZW1TZXQoJmNsYXVzZXNldCwgMCwgc2l6ZW9mKGNsYXVzZXNldCkpOwor CQltYXRjaF9jbGF1c2VzX3RvX2luZGV4KHJvb3QsIGxpc3RfbWFrZTEocmluZm8xKSwgaW5k ZXgsICZjbGF1c2VzZXQpOworCQltYXRjaF9jbGF1c2VzX3RvX2luZGV4KHJvb3QsIG90aGVy X2NsYXVzZXMsIGluZGV4LCAmY2xhdXNlc2V0KTsKKworCQkvKiBQcmVkaWNhdGUgaGFzIGZv dW5kIGFscmVhZHkuIFNvLCBpdCBpcyBvayBmb3IgdGhlIGVtcHR5IG1hdGNoICovCisKKwkJ aW5kZXhwYXRocyA9IGJ1aWxkX2luZGV4X3BhdGhzKHJvb3QsIHJlbCwKKwkJCQkJCQkJCSAg IGluZGV4LCAmY2xhdXNlc2V0LAorCQkJCQkJCQkJICAgdHJ1ZSwKKwkJCQkJCQkJCSAgIFNU X0JJVE1BUFNDQU4sCisJCQkJCQkJCQkgICBOVUxMLAorCQkJCQkJCQkJICAgTlVMTCk7CisJ CUFzc2VydChpbmRleHBhdGhzICE9IE5JTCk7CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0 LCBpbmRleHBhdGhzKTsKKwl9CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEFuYWx5 c2UgaW5jb21pbmcgU0FPUCBub2RlIHRvIGNvdmVyIGl0IGJ5IHBhcnRpYWwgaW5kZXhlcy4K KyAqCisgKiBUaGUgcmV0dXJuaW5nIHBhdGhsaXN0IG11c3QgYmUgQU5EZWQgdG8gdGhlIGZp bmFsIEJpdG1hcFNjYW4gcGF0aC4KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIE5VTEwgd2hl biBhbiBhcnJheSBlbGVtZW50IGNhbm5vdCBiZSBmaXR0ZWQgd2l0aCBzb21lCisgKiBwYXJ0 aWFsIGluZGV4LiBUaGUgUmF0aW9uYWxlIGZvciBzdWNoIGFuIG9wZXJhdGlvbiBpcyB0aGF0 IHdoZW4gc2NoZW1hCisgKiBjb250YWlucyBtYW55IHBhcnRpYWwgaW5kZXhlcywgdGhlIFNB T1AgY2xhdXNlIG1heSBiZSBlZmZlY3RpdmVseSBmdWxmaWxsZWQKKyAqIGJ5IGFwcGVuZGlu ZyByZXN1bHRzIG9mIHNjYW5uaW5nIHNvbWUgbWluaW1hbCBzZXQgb2YgdGlueSBwYXJ0aWFs IGluZGV4ZXMuCisgKgorICogV29ya2luZyBqb2ludGx5IHdpdGggdGhlIFRyYW5zZm9ybU9y RXhwclRvQU5ZIHJvdXRpbmUsIGl0IHByb3ZpZGVzIGEgdXNlcgorICogd2l0aCBzb21lIHNv cnQgb2YgaW5kZXBlbmRlbmNlIG9mIHRoZSBxdWVyeSBwbGFuIGZyb20gdGhlIGFwcHJvYWNo IHRvIHdyaXRpbmcKKyAqIGFsdGVybmF0aXZlcyBmb3IgdGhlIHNhbWUgZW50aXR5IGluIHRo ZSBXSEVSRSBzZWN0aW9uLgorICovCitzdGF0aWMgTGlzdCAqCitnZW5lcmF0ZV9zYW9wX3Bh dGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCSAgIFJl c3RyaWN0SW5mbyAqcmluZm8sIExpc3QgKmFsbF9jbGF1c2VzKQoreworCUxpc3QJICAgKnBh dGhsaXN0ID0gTklMOworCVBhdGgJICAgKmJpdG1hcHF1YWw7CisJTGlzdAkgICAqaW5kbGlz dDsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmICghZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9u KQorCQlyZXR1cm4gTklMOworCisJLyoKKwkgKiBXZSBtdXN0IGJlIGFibGUgdG8gbWF0Y2gg YXQgbGVhc3Qgb25lIGluZGV4IHRvIGVhY2ggZWxlbWVudCBvZgorCSAqIHRoZSBhcnJheSwg ZWxzZSB3ZSBjYW4ndCB1c2UgaXQuCisJICovCisJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zv cl9TQU9QKHJvb3QsIHJlbCwgcmluZm8sIGFsbF9jbGF1c2VzKTsKKwlpZiAoaW5kbGlzdCA9 PSBOSUwpCisJCXJldHVybiBOSUw7CisKKwkvKgorCSAqIE9LLCBwaWNrIHRoZSBtb3N0IHBy b21pc2luZyBBTkQgY29tYmluYXRpb24sIGFuZCBhZGQgaXQgdG8KKwkgKiBwYXRobGlzdC4K KwkgKi8KKwlmb3JlYWNoIChsYywgaW5kbGlzdCkKKwl7CisJCUxpc3QgKnBsaXN0ID0gbGZp cnN0X25vZGUoTGlzdCwgbGMpOworCisJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0bWFwX2Fu ZChyb290LCByZWwsIHBsaXN0KTsKKwkJcGF0aGxpc3QgPSBsYXBwZW5kKHBhdGhsaXN0LCBi aXRtYXBxdWFsKTsKKwl9CisKKwlyZXR1cm4gcGF0aGxpc3Q7Cit9CisKIC8qCiAgKiBnZW5l cmF0ZV9iaXRtYXBfb3JfcGF0aHMKLSAqCQlMb29rIHRocm91Z2ggdGhlIGxpc3Qgb2YgY2xh dXNlcyB0byBmaW5kIE9SIGNsYXVzZXMsIGFuZCBnZW5lcmF0ZQotICoJCWEgQml0bWFwT3JQ YXRoIGZvciBlYWNoIG9uZSB3ZSBjYW4gaGFuZGxlIHRoYXQgd2F5LiAgUmV0dXJuIGEgbGlz dAotICoJCW9mIHRoZSBnZW5lcmF0ZWQgQml0bWFwT3JQYXRocy4KKyAqCQlMb29rIHRocm91 Z2ggdGhlIGxpc3Qgb2YgY2xhdXNlcyB0byBmaW5kIE9SIGFuZCBTQU9QIGNsYXVzZXMsIGFu ZAorICoJCUVhY2ggc2FvcCBjbGF1c2UgYXJlIHNwbGl0dGVkIHRvIGJlIGNvdmVyZWQgYnkg cGFydGlhbCBpbmRleGVzLgorICoJCWdlbmVyYXRlIGEgQml0bWFwT3JQYXRoIGZvciBlYWNo IG9uZSB3ZSBjYW4gaGFuZGxlIHRoYXQgd2F5LgorICoJCVJldHVybiBhIGxpc3Qgb2YgdGhl IGdlbmVyYXRlZCBCaXRtYXBPclBhdGhzLgogICoKICAqIG90aGVyX2NsYXVzZXMgaXMgYSBs aXN0IG9mIGFkZGl0aW9uYWwgY2xhdXNlcyB0aGF0IGNhbiBiZSBhc3N1bWVkIHRydWUKICAq IGZvciB0aGUgcHVycG9zZSBvZiBnZW5lcmF0aW5nIGluZGV4cXVhbHMsIGJ1dCBhcmUgbm90 IHRvIGJlIHNlYXJjaGVkIGZvcgpAQCAtMTI0Nyw2OCArMTQyNSw5OSBAQCBnZW5lcmF0ZV9i aXRtYXBfb3JfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlm b3JlYWNoKGxjLCBjbGF1c2VzKQogCXsKIAkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxmaXJz dF9ub2RlKFJlc3RyaWN0SW5mbywgbGMpOwotCQlMaXN0CSAgICpwYXRobGlzdDsKKwkJTGlz dAkgICAqcGF0aGxpc3QgPSBOSUw7CiAJCVBhdGgJICAgKmJpdG1hcHF1YWw7CiAJCUxpc3RD ZWxsICAgKmo7CiAKLQkJLyogSWdub3JlIFJlc3RyaWN0SW5mb3MgdGhhdCBhcmVuJ3QgT1Jz ICovCi0JCWlmICghcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKHJpbmZvKSkKKwkJaWYgKHJl c3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKHJpbmZvKSkKKwkJeworCQkJcGF0aGxpc3QgPSBn ZW5lcmF0ZV9zYW9wX3BhdGhsaXN0KHJvb3QsIHJlbCwgcmluZm8sCisJCQkJCQkJCQkJCSAg YWxsX2NsYXVzZXMpOworCQl9CisJCWVsc2UgaWYgKCFyZXN0cmljdGlvbl9pc19vcl9jbGF1 c2UocmluZm8pKQorCQkJLyogSWdub3JlIFJlc3RyaWN0SW5mb3MgdGhhdCBhcmVuJ3QgT1Jz ICovCiAJCQljb250aW51ZTsKLQotCQkvKgotCQkgKiBXZSBtdXN0IGJlIGFibGUgdG8gbWF0 Y2ggYXQgbGVhc3Qgb25lIGluZGV4IHRvIGVhY2ggb2YgdGhlIGFybXMgb2YKLQkJICogdGhl IE9SLCBlbHNlIHdlIGNhbid0IHVzZSBpdC4KLQkJICovCi0JCXBhdGhsaXN0ID0gTklMOwot CQlmb3JlYWNoKGosICgoQm9vbEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJncykKKwkJ ZWxzZQogCQl7Ci0JCQlOb2RlCSAgICpvcmFyZyA9IChOb2RlICopIGxmaXJzdChqKTsKLQkJ CUxpc3QJICAgKmluZGxpc3Q7Ci0KLQkJCS8qIE9SIGFyZ3VtZW50cyBzaG91bGQgYmUgQU5E cyBvciBzdWItUmVzdHJpY3RJbmZvcyAqLwotCQkJaWYgKGlzX2FuZGNsYXVzZShvcmFyZykp CisJCQkvKgorCQkJICogV2UgbXVzdCBiZSBhYmxlIHRvIG1hdGNoIGF0IGxlYXN0IG9uZSBp bmRleCB0byBlYWNoIG9mIHRoZSBhcm1zIG9mCisJCQkgKiB0aGUgT1IsIGVsc2Ugd2UgY2Fu J3QgdXNlIGl0LgorCQkJICovCisJCQlmb3JlYWNoKGosICgoQm9vbEV4cHIgKikgcmluZm8t Pm9yY2xhdXNlKS0+YXJncykKIAkJCXsKLQkJCQlMaXN0CSAgICphbmRhcmdzID0gKChCb29s RXhwciAqKSBvcmFyZyktPmFyZ3M7CisJCQkJTm9kZQkgICAqb3JhcmcgPSAoTm9kZSAqKSBs Zmlyc3Qoaik7CisJCQkJTGlzdAkgICAqaW5kbGlzdDsKIAotCQkJCWluZGxpc3QgPSBidWls ZF9wYXRoc19mb3JfT1Iocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkgYW5kYXJncywKLQkJCQkJ CQkJCQkJIGFsbF9jbGF1c2VzKTsKKwkJCQkvKiBPUiBhcmd1bWVudHMgc2hvdWxkIGJlIEFO RHMgb3Igc3ViLVJlc3RyaWN0SW5mb3MgKi8KKwkJCQlpZiAoaXNfYW5kY2xhdXNlKG9yYXJn KSkKKwkJCQl7CisJCQkJCUxpc3QJICAgKmFuZGFyZ3MgPSAoKEJvb2xFeHByICopIG9yYXJn KS0+YXJnczsKIAotCQkJCS8qIFJlY3Vyc2UgaW4gY2FzZSB0aGVyZSBhcmUgc3ViLU9ScyAq LwotCQkJCWluZGxpc3QgPSBsaXN0X2NvbmNhdChpbmRsaXN0LAotCQkJCQkJCQkJICBnZW5l cmF0ZV9iaXRtYXBfb3JfcGF0aHMocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCQkJICAgYW5k YXJncywKLQkJCQkJCQkJCQkJCQkJCSAgIGFsbF9jbGF1c2VzKSk7Ci0JCQl9Ci0JCQllbHNl Ci0JCQl7Ci0JCQkJUmVzdHJpY3RJbmZvICpyaSA9IGNhc3ROb2RlKFJlc3RyaWN0SW5mbywg b3JhcmcpOwotCQkJCUxpc3QJICAgKm9yYXJnczsKKwkJCQkJaW5kbGlzdCA9IGJ1aWxkX3Bh dGhzX2Zvcl9PUihyb290LCByZWwsCisJCQkJCQkJCQkJCQkgYW5kYXJncywKKwkJCQkJCQkJ CQkJCSBhbGxfY2xhdXNlcyk7CisKKwkJCQkJLyogUmVjdXJzZSBpbiBjYXNlIHRoZXJlIGFy ZSBzdWItT1JzICovCisJCQkJCWluZGxpc3QgPSBsaXN0X2NvbmNhdChpbmRsaXN0LAorCQkJ CQkJCQkJCSAgZ2VuZXJhdGVfYml0bWFwX29yX3BhdGhzKHJvb3QsIHJlbCwKKwkJCQkJCQkJ CQkJCQkJCQkgICBhbmRhcmdzLAorCQkJCQkJCQkJCQkJCQkJCSAgIGFsbF9jbGF1c2VzKSk7 CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCVJlc3RyaWN0SW5mbyAqcmkgPSBjYXN0 Tm9kZShSZXN0cmljdEluZm8sIG9yYXJnKTsKKwkJCQkJTGlzdAkgICAqb3JhcmdzOwogCi0J CQkJQXNzZXJ0KCFyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmkpKTsKLQkJCQlvcmFyZ3Mg PSBsaXN0X21ha2UxKHJpKTsKKwkJCQkJQXNzZXJ0KCFyZXN0cmljdGlvbl9pc19vcl9jbGF1 c2UocmkpKTsKIAotCQkJCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9vdCwgcmVs LAotCQkJCQkJCQkJCQkgb3JhcmdzLAotCQkJCQkJCQkJCQkgYWxsX2NsYXVzZXMpOwotCQkJ fQorCQkJCQlvcmFyZ3MgPSBsaXN0X21ha2UxKHJpKTsKIAotCQkJLyoKLQkJCSAqIElmIG5v dGhpbmcgbWF0Y2hlZCB0aGlzIGFybSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGlz IE9SCi0JCQkgKiBjbGF1c2UuCi0JCQkgKi8KLQkJCWlmIChpbmRsaXN0ID09IE5JTCkKLQkJ CXsKLQkJCQlwYXRobGlzdCA9IE5JTDsKLQkJCQlicmVhazsKLQkJCX0KKwkJCQkJaWYgKHJl c3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKHJpKSkKKwkJCQkJeworCQkJCQkJTGlzdCAqcGF0 aHM7CiAKLQkJCS8qCi0JCQkgKiBPSywgcGljayB0aGUgbW9zdCBwcm9taXNpbmcgQU5EIGNv bWJpbmF0aW9uLCBhbmQgYWRkIGl0IHRvCi0JCQkgKiBwYXRobGlzdC4KLQkJCSAqLwotCQkJ Yml0bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3QsIHJlbCwgaW5kbGlzdCk7Ci0J CQlwYXRobGlzdCA9IGxhcHBlbmQocGF0aGxpc3QsIGJpdG1hcHF1YWwpOworCQkJCQkJcGF0 aHMgPSBnZW5lcmF0ZV9zYW9wX3BhdGhsaXN0KHJvb3QsIHJlbCwgcmksCisJCQkJCQkJCQkJ CQkJCSBhbGxfY2xhdXNlcyk7CisKKwkJCQkJCWlmIChwYXRocyAhPSBOSUwpCisJCQkJCQl7 CisJCQkJCQkJLyoKKwkJCQkJCQkgKiBBZGQgcGF0aHMgdG8gcGF0aGxpc3QgYW5kIGltbWVk aWF0ZWx5IGp1bXAgdG8gdGhlCisJCQkJCQkJICogbmV4dCBlbGVtZW50IG9mIHRoZSBPUiBj bGF1c2UuCisJCQkJCQkJICovCisJCQkJCQkJcGF0aGxpc3QgPSBsaXN0X2NvbmNhdChwYXRo bGlzdCwgcGF0aHMpOworCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJfQorCisJCQkJCQkvKgor CQkJCQkJICogUGFzcyBkb3duIG91dCBvZiB0aGlzIGlmIGNvbnN0cnVjdGlvbjoKKwkJCQkJ CSAqIElmIHNhb3AgaXNuJ3QgY292ZXJlZCBieSBwYXJ0aWFsIGluZGV4ZXMsIHRyeSB0bwor CQkJCQkJICogYnVpbGQgc2NhbiBwYXRoIGZvciB0aGUgc2FvcCBhcyBhIHdob2xlLgorCQkJ CQkJICovCisJCQkJCX0KKworCQkJCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09SKHJv b3QsIHJlbCwKKwkJCQkJCQkJCQkJCSBvcmFyZ3MsCisJCQkJCQkJCQkJCQkgYWxsX2NsYXVz ZXMpOworCQkJCX0KKworCQkJCS8qCisJCQkJICogSWYgbm90aGluZyBtYXRjaGVkIHRoaXMg YXJtLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoaXMgT1IKKwkJCQkgKiBjbGF1c2Uu CisJCQkJICovCisJCQkJaWYgKGluZGxpc3QgPT0gTklMKQorCQkJCXsKKwkJCQkJcGF0aGxp c3QgPSBOSUw7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCS8qCisJCQkJICogT0ssIHBp Y2sgdGhlIG1vc3QgcHJvbWlzaW5nIEFORCBjb21iaW5hdGlvbiwgYW5kIGFkZCBpdCB0bwor CQkJCSAqIHBhdGhsaXN0LgorCQkJCSAqLworCQkJCWJpdG1hcHF1YWwgPSBjaG9vc2VfYml0 bWFwX2FuZChyb290LCByZWwsIGluZGxpc3QpOworCQkJCXBhdGhsaXN0ID0gbGFwcGVuZChw YXRobGlzdCwgYml0bWFwcXVhbCk7CisJCQl9CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3ByZWR0ZXN0LmMKaW5kZXggYzM3YjQxNmUyNC4uOGVkODBhNzhiNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0xMTIsNiArMTEy LDUyIEBAIHN0YXRpYyBPaWQJZ2V0X2J0cmVlX3Rlc3Rfb3AoT2lkIHByZWRfb3AsIE9pZCBj bGF1c2Vfb3AsIGJvb2wgcmVmdXRlX2l0KTsKIHN0YXRpYyB2b2lkIEludmFsaWRhdGVPcHJQ cm9vZkNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2 YWx1ZSk7CiAKIAorLyoKKyAqIENvdWxkIHRoaXMgQU5ZICgpIGV4cHJlc3Npb24gY2FuIGJl IHNwbGl0IGludG8gYSBzZXQgb2YgQU5ZcyBvdmVyIHBhcnRpYWwKKyAqIGluZGV4ZXM/IElm IHllcywgcmV0dXJuIHRoZXNlIHNhb3BzIGluIHRoZSBQcmVkaWNhdGVzRGF0YSBzdHJ1Y3R1 cmUuCisgKi8KK2Jvb2wKK3Nhb3BfY292ZXJlZF9ieV9wcmVkaWNhdGVzKFNjYWxhckFycmF5 T3BFeHByICpzYW9wLCBMaXN0ICpwcmVkaWNhdGVfbGlzdHMpCit7CisJTGlzdENlbGwJCSAg ICpsYzsKKwlQcmVkSXRlckluZm9EYXRhCWNsYXVzZV9pbmZvOworCWJvb2wJCQkJcmVzdWx0 ID0gZmFsc2U7CisKKwlpZiAocHJlZGljYXRlX2NsYXNzaWZ5KChOb2RlICopIHNhb3AsICZj bGF1c2VfaW5mbykgIT0gQ0xBU1NfT1IpCisJCXJldHVybiBmYWxzZTsKKworCWl0ZXJhdGVf YmVnaW4ocGl0ZW0sIChOb2RlICopIHNhb3AsIGNsYXVzZV9pbmZvKQorCXsKKwkJcmVzdWx0 ID0gZmFsc2U7CisKKwkJZm9yZWFjaChsYywgcHJlZGljYXRlX2xpc3RzKQorCQl7CisJCQlQ cmVkaWNhdGVzRGF0YSAqcGQgPSAoUHJlZGljYXRlc0RhdGEgKikgbGZpcnN0KGxjKTsKKwor CQkJaWYgKCFwcmVkaWNhdGVfaW1wbGllZF9ieV9yZWN1cnNlKHBpdGVtLCBwZC0+cHJlZGlj YXRlLCBmYWxzZSkpCisJCQkJY29udGludWU7CisKKwkJCS8qIFByZWRpY2F0ZSBpcyBmb3Vu ZC4gQWRkIHRoZSBlbGVtIHRvIHRoZSBzYW9wIGNsYXVzZSAqLworCQkJQXNzZXJ0KElzQShw aXRlbSwgT3BFeHByKSk7CisKKwkJCS8qIEV4dHJhY3QgY29uc3RhbnQgZnJvbSB0aGUgZXhw cmVzc2lvbiAqLworCQkJcGQtPmVsZW1zID0gbGFwcGVuZChwZC0+ZWxlbXMsCisJCQkJCWNv cHlPYmplY3QobHNlY29uZF9ub2RlKENvbnN0LCAoKE9wRXhwciAqKSBwaXRlbSktPmFyZ3Mp KSk7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKworCQlpZiAoIXJlc3Vs dCkKKwkJCS8qCisJCQkgKiBUaGUgZWxlbWVudCBkb2Vzbid0IGZpdCBhbnkgaW5kZXguIElu dGVycnVwdCB0aGUgcHJvY2VzcyBpbW1lZGlhdGVseQorCQkJICovCisJCQlicmVhazsKKwl9 CisJaXRlcmF0ZV9lbmQoY2xhdXNlX2luZm8pOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwog LyoKICAqIHByZWRpY2F0ZV9pbXBsaWVkX2J5CiAgKgkgIFJlY3Vyc2l2ZWx5IGNoZWNrcyB3 aGV0aGVyIHRoZSBjbGF1c2VzIGluIGNsYXVzZV9saXN0IGltcGx5IHRoYXQgdGhlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCmluZGV4IDBiNDA2ZTkz MzQuLjFkYWQxZGM2NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3Jlc3RyaWN0aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3Ry aWN0aW5mby5jCkBAIC00MjEsNiArNDIxLDE5IEBAIHJlc3RyaWN0aW9uX2lzX29yX2NsYXVz ZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbykKIAkJcmV0dXJuIGZhbHNlOwogfQogCiti b29sCityZXN0cmljdGlvbl9pc19zYW9wX2NsYXVzZShSZXN0cmljdEluZm8gKnJlc3RyaWN0 aW5mbykKK3sKKwlpZiAocmVzdHJpY3RpbmZvLT5jbGF1c2UgJiYgSXNBKHJlc3RyaWN0aW5m by0+Y2xhdXNlLCBTY2FsYXJBcnJheU9wRXhwcikpCisJeworCQlTY2FsYXJBcnJheU9wRXhw ciAqc2FvcCA9IChTY2FsYXJBcnJheU9wRXhwciAqKSByZXN0cmljdGluZm8tPmNsYXVzZTsK KworCQlpZiAoc2FvcC0+dXNlT3IpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZh bHNlOworfQorCiAvKgogICogcmVzdHJpY3Rpb25faXNfc2VjdXJlbHlfcHJvbW90YWJsZQog ICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAppbmRleCAzNWFiNTc3NTAxLi4yMzJh ZmNkMDBjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgK KysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCkBAIC0xNjAsNiArMTYw LDIyIEBAIGV4dGVybiBMaXN0ICpleHBhbmRfZnVuY3Rpb25fYXJndW1lbnRzKExpc3QgKmFy Z3MsIGJvb2wgaW5jbHVkZV9vdXRfYXJndW1lbnRzLAogCiAvKiBpbiB1dGlsL3ByZWR0ZXN0 LmM6ICovCiAKKy8qCisgKiBDb250YWlucyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZXh0cmFj dCBmcm9tIHNhb3AgYSBzZXQgb2YgZWxlbWVudHMgd2hpY2ggY2FuCisgKiBiZSBjb3ZlcmVk IGJ5IHRoZSBwYXJ0aWFsIGluZGV4OgorICogaWQgLSBjYWxsZXIncyBpZGVudGlmaWNhdGlv biBvZiB0aGUgaW5kZXguCisgKiBwcmVkaWNhdGUgLSBwcmVkaWNhdGUgZXhwcmVzc2lvbiBv ZiB0aGUgaW5kZXgKKyAqIGVsZW1zIC0gcmV0dXJuaW5nIGxpc3Qgb2YgYXJyYXkgZWxlbWVu dHMgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhpcyBwcmVkaWNhdGUKKyAqLwordHlwZWRlZiBz dHJ1Y3QgUHJlZGljYXRlc0RhdGEKK3sKKwlpbnQJCWlkOworCU5vZGUgICAqcHJlZGljYXRl OworCUxpc3QgICAqZWxlbXM7Cit9IFByZWRpY2F0ZXNEYXRhOworCitleHRlcm4gYm9vbCBz YW9wX2NvdmVyZWRfYnlfcHJlZGljYXRlcyhTY2FsYXJBcnJheU9wRXhwciAqc2FvcCwKKwkJ CQkJCQkJCSAgTGlzdCAqcHJlZGljYXRlX2xpc3RzKTsKIGV4dGVybiBib29sIHByZWRpY2F0 ZV9pbXBsaWVkX2J5KExpc3QgKnByZWRpY2F0ZV9saXN0LCBMaXN0ICpjbGF1c2VfbGlzdCwK IAkJCQkJCQkJIGJvb2wgd2Vhayk7CiBleHRlcm4gYm9vbCBwcmVkaWNhdGVfcmVmdXRlZF9i eShMaXN0ICpwcmVkaWNhdGVfbGlzdCwgTGlzdCAqY2xhdXNlX2xpc3QsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmggYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgKaW5kZXggMWI0MmM4MzJjNS4uMmNkNWZiZjk0MyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oCisrKyBi L3NyYy9pbmNsdWRlL29wdGltaXplci9yZXN0cmljdGluZm8uaApAQCAtMzQsNiArMzQsNyBA QCBleHRlcm4gUmVzdHJpY3RJbmZvICptYWtlX3Jlc3RyaWN0aW5mbyhQbGFubmVySW5mbyAq cm9vdCwKIAkJCQkJCQkJCSAgIFJlbGlkcyBvdXRlcl9yZWxpZHMpOwogZXh0ZXJuIFJlc3Ry aWN0SW5mbyAqY29tbXV0ZV9yZXN0cmljdGluZm8oUmVzdHJpY3RJbmZvICpyaW5mbywgT2lk IGNvbW1fb3ApOwogZXh0ZXJuIGJvb2wgcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKFJlc3Ry aWN0SW5mbyAqcmVzdHJpY3RpbmZvKTsKK2V4dGVybiBib29sIHJlc3RyaWN0aW9uX2lzX3Nh b3BfY2xhdXNlKFJlc3RyaWN0SW5mbyAqcmVzdHJpY3RpbmZvKTsKIGV4dGVybiBib29sIHJl c3RyaWN0aW9uX2lzX3NlY3VyZWx5X3Byb21vdGFibGUoUmVzdHJpY3RJbmZvICpyZXN0cmlj dGluZm8sCiAJCQkJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gTGlzdCAq Z2V0X2FjdHVhbF9jbGF1c2VzKExpc3QgKnJlc3RyaWN0aW5mb19saXN0KTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dAppbmRleCAzM2E2ZGNlYjBlLi4wNzAyMDJiMGYw IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0CkBAIC05MDcsNiArOTA3 LDI4OCBAQCBzZWxlY3QgdW5pcXVlMSwgdW5pcXVlMiBmcm9tIG9uZWsyCiAgICAgICAgMCB8 ICAgICA5OTgKICgyIHJvd3MpCiAKK1NFVCBlbmFibGVfc2Vxc2NhbiBUTyBvZmY7CitTRVQg ZW5hYmxlX2luZGV4c2NhbiBUTyBvZmY7IC0tIE9ubHkgQml0bWFwU2NhbiBpcyBhIHN1Ympl Y3QgbWF0dGVyIGhlcmUKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSAnb2ZmJzsK K2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJF IHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxIDwg J0InOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgICAgICAgRmlsdGVy OiAoKHN0cmluZ3UxID0gJ0EnOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQor ICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorKDggcm93cykKKworLS0gV2l0aG91dCB0 aGUgdHJhbnNmb3JtYXRpb24gb25seSBzZXFzY2FuIHBvc3NpYmxlIGhlcmUKK2V4cGxhaW4g KGNvc3RzIG9mZikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVS RSB1bmlxdWUyIDwgMSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8 ICdaJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIK KyAgIEZpbHRlcjogKCh1bmlxdWUyIDwgMSkgQU5EIChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9 Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA8ICdaJzo6bmFtZSkpCisoMiByb3dzKQorCist LSBVc2UgcGFydGlhbCBpbmRleGVzCitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgY291 bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3Ry aW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6bmFt ZSkgT1IgKHVuaXF1ZTEgPSAxKSkKKyAgICAgICAgIEZpbHRlcjogKChzdHJpbmd1MSA9IEFO WSAoJ3tCLEp9Jzo6bmFtZVtdKSkgQU5EICgoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SICh1 bmlxdWUxID0gMSkpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKyg4IHJvd3MpCisKK2V4cGxhaW4g KGNvc3RzIG9mZikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVS RSB1bmlxdWUxIDwgMSBPUiAoc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSicpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29u ZDogKCh1bmlxdWUxIDwgMSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAoc3RyaW5n dTEgPSAnSic6Om5hbWUpKQorICAgRmlsdGVyOiAoKHVuaXF1ZTEgPCAxKSBPUiAoc3RyaW5n dTEgPSAnQSc6Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFtZSkpCisgICAtPiAgQml0 bWFwT3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRs CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA8IDEpCisgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorKDkgcm93cykKKworZXhwbGFpbiAo Y29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJF IHVuaXF1ZTEgPSAxIE9SIHVuaXF1ZTIgPSBQSSgpOjppbnRlZ2VyOworICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRl cjogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSkKKygyIHJvd3MpCisKK1JFU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKy0tIE9SIDwtPiBBTlkgdHJhbnNmb3JtYXRp b24gbXVzdCBmaW5kIGEgcGF0aCB3aXRoIHBhcnRpYWwgaW5kZXhlcyBzY2FuCistLSByZWdh cmRsZXNzIHRoZSBjbGF1c2UgcmVwcmVzZW50YXRpb24uCitleHBsYWluIChjb3N0cyBvZmYp CitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSA9ICdBJyBPUiBz dHJpbmd1MSA9ICdKJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxID0g QU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAgICAg ICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKQorICAgICAg ICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo c3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJvd3MpCisKK2V4cGxhaW4g KGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3Ux IElOICgnQScsJ0onKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxID0g QU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAgICAg ICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKQorICAgICAg ICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo c3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJvd3MpCisKK2V4cGxhaW4g KGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3Ux ID0gQU5ZICgne0EsSn0nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3Ux ID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkKKyAg ICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKQorICAg ICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg4IHJvd3MpCisKK2V4cGxh aW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmlu Z3UxIElOICgnQScpIE9SIHN0cmluZ3UxIElOICgnSicpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdh dGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICAgICAgICBSZWNoZWNr IENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBPUiAoc3RyaW5ndTEg PCAnQic6Om5hbWUpKQorICAgICAgICAgRmlsdGVyOiAoc3RyaW5ndTEgPSBBTlkgKCd7QSxK fSc6Om5hbWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAor KDggcm93cykKKworLS0gRG9uJ3Qgc2NhbiBwYXJ0aWFsIGluZGV4ZXMgYmVjYXVzZSBvZiBl eHRyYSB2YWx1ZS4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScsICdKJywgJ0MnKTsKKyAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlCisgICAtPiAgU2VxIFNjYW4gb24gb25lazIKKyAgICAgICAgIEZpbHRlcjogKHN0cmlu Z3UxID0gQU5ZICgne0EsSixDfSc6Om5hbWVbXSkpCisoMyByb3dzKQorCitleHBsYWluIChj b3N0cyBvZmYpCitTRUxFQ1QgdW5pcXVlMiBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJ TiAoJ0EnLCAnQScpIEFORCAoc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnQScpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNr IENvbmQ6IChzdHJpbmd1MSA8ICdCJzo6bmFtZSkKKyAgIEZpbHRlcjogKChzdHJpbmd1MSA9 IEFOWSAoJ3tBLEF9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA9IEFOWSAoJ3tBLEF9Jzo6 bmFtZVtdKSkpCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAor KDQgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmlu Z3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTIgPCAxIEFORCBzdHJpbmd1MSBJTiAoJ0En LCdKJykgQU5EIHN0cmluZ3UxIDwgJ1onOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sg Q29uZDogKCgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBBTkQgKHN0cmluZ3Ux IDwgJ1onOjpuYW1lKSkgT1IgKCh1bmlxdWUyIDwgMSkgQU5EIChzdHJpbmd1MSA8ICdCJzo6 bmFtZSkpKQorICAgRmlsdGVyOiAoKHVuaXF1ZTIgPCAxKSBBTkQgKHN0cmluZ3UxID0gQU5Z ICgne0EsSn0nOjpuYW1lW10pKSkKKyAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIEFORCAoc3RyaW5n dTEgPCAnWic6Om5hbWUpKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9u ZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyIDwgMSkK Kyg4IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCB1bmlxdWUyLCBzdHJp bmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBPUiB1bmlxdWUxID0gUEkoKTo6 aW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKCh1 bmlxdWUxID0gMykgT1IgKHVuaXF1ZTEgPSAxKSkKKyAgIC0+ICBCaXRtYXBPcgorICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMykKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo dW5pcXVlMSA9IDEpCisoNyByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1Qg dW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSBJTiAoMSwgUEko KTo6aW50ZWdlcik7IC0tIFRPRE86IHdoeSBpdCBpcyBkaWZmZXJzIGZyb20gcHJldmlvdXMg ZXhhbXBsZT8KKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBS ZWNoZWNrIENvbmQ6ICh1bmlxdWUxID0gQU5ZICgnezEsM30nOjppbnRlZ2VyW10pKQorICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgIEluZGV4 IENvbmQ6ICh1bmlxdWUxID0gQU5ZICgnezEsM30nOjppbnRlZ2VyW10pKQorKDQgcm93cykK KworLS0gRG9uJ3QgYXBwbHkgdGhlIG9wdGltaXphdGlvbiB0byBjbGF1c2VzLCBjb250YWlu aW5nIHZvbGF0aWxlIGZ1bmN0aW9ucworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVu aXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IChyYW5kb20oKSoy KTo6aW50ZWdlciBPUiB1bmlxdWUxID0gKHJhbmRvbSgpKjMpOjppbnRlZ2VyOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2Nh biBvbiBvbmVrMgorICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAoKHJhbmRvbSgpICogJzInOjpk b3VibGUgcHJlY2lzaW9uKSk6OmludGVnZXIpIE9SICh1bmlxdWUxID0gKChyYW5kb20oKSAq ICczJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyKSkKKygyIHJvd3MpCisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dI RVJFIHVuaXF1ZTEgSU4gKChyYW5kb20oKSoyKTo6aW50ZWdlciwgKHJhbmRvbSgpKjMpOjpp bnRlZ2VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKHVuaXF1ZTEgPSBBTlkgKEFSUkFZ WygocmFuZG9tKCkgKiAnMic6OmRvdWJsZSBwcmVjaXNpb24pKTo6aW50ZWdlciwgKChyYW5k b20oKSAqICczJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyXSkpCisoMiByb3dzKQor CistLSBDb21iaW5lIGRpZmZlcmVudCBzYW9wcy4gU29lIG9mIHRoZW0gZG9lc250JyBmaXQg YSBzZXQgb2YgcGFydGlhbCBpbmRleGVzLAorLS0gYnV0IG90aGVyIGZpdHMuCistLSBVbmZv cnR1bmF0ZWx5LCB3ZSBkb24ndCBjb21iaW5lIHNhb3AgYW5kIE9SIGNsYXVzZXMgc28gZmFy LgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBv bmVrMgorV0hFUkUKKyAgdW5pcXVlMSBJTiAoMSwyLDIxKSBBTkQKKyAgKHN0cmluZ3UxIElO ICgnQScsJ0onKSBPUiB1bmlxdWUxIElOICgzLDQpIE9SIHN0cmluZ3UxID0gJ0onKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENvbmQ6ICgoc3Ry aW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUp IE9SICgodW5pcXVlMSA9IEFOWSAoJ3szLDR9Jzo6aW50ZWdlcltdKSkgQU5EICh1bmlxdWUx ID0gQU5ZICgnezEsMiwyMX0nOjppbnRlZ2VyW10pKSkgT1IgKHN0cmluZ3UxID0gJ0onOjpu YW1lKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUxID0gQU5ZICgnezEsMiwyMX0nOjppbnRlZ2Vy W10pKSBBTkQgKChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkgT1IgKHVuaXF1 ZTEgPSBBTlkgKCd7Myw0fSc6OmludGVnZXJbXSkpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFt ZSkpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5n dTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHVuaXF1ZTEg PSBBTlkgKCd7Myw0fSc6OmludGVnZXJbXSkpIEFORCAodW5pcXVlMSA9IEFOWSAoJ3sxLDIs MjF9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEg PSAnSic6Om5hbWUpCisoMTEgcm93cykKKworLS0gQ2hlY2sgcmVjdXJzaXZlIGNvbWJpbmF0 aW9uIG9mIE9SIGFuZCBTQU9QIGV4cHJlc3Npb25zCitleHBsYWluIChjb3N0cyBvZmYpCitT RUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEg T1IgKHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hl Y2sgQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChzdHJpbmd1 MSA8ICdCJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPCAxKSkKKyAgIEZpbHRlcjogKChzdHJpbmd1 MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkgT1IgKHVuaXF1ZTEgPCAxKSkKKyAgIC0+ICBC aXRtYXBPcgorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFf cHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gQU5ZICgne0p9 Jzo6bmFtZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91 Ml9wcnRsCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0 bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPCAxKQorKDkgcm93cykK KworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00g b25lazIKK1dIRVJFICh1bmlxdWUxIDwgMSBPUiBzdHJpbmd1MSBJTiAoJ0EnLCdKJykpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBv bmVrMgorICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtd KSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAodW5pcXVlMSA8IDEpKQorICAgRmls dGVyOiAoKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKSBPUiAodW5pcXVlMSA8 IDEpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5n dTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA8 IDEpCisoOSByb3dzKQorCistLSBBbHRob3VnaCBTQU9QIGRvZXNuJ3QgZml0IHBhcnRpYWwg aW5kZXhlcyBmdWxseSwgd2UgY2FuIHVzZSBhbmRlZCBPUiBjbGF1c2UKKy0tIHRvIHNjYW4g YW5vdGhlciBjb3VwbGUgb2YgcGFydGlhbCBpbmRleGVzLgorZXhwbGFpbiAoY29zdHMgb2Zm KQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIKK1dIRVJFIHN0cmluZ3UxIElOICgnQics J0onKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAxKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5n dTEgPCAnQic6Om5hbWUpIE9SICh1bmlxdWUxID0gMSkpCisgICAgICAgICBGaWx0ZXI6ICgo c3RyaW5ndTEgPSBBTlkgKCd7QixKfSc6Om5hbWVbXSkpIEFORCAoKHN0cmluZ3UxID0gJ0En OjpuYW1lKSBPUiAodW5pcXVlMSA9IDEpKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCisoOCByb3dz KQorCitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CiAt LQogLS0gVGVzdCBzb21lIGNvcm5lciBjYXNlcyB0aGF0IGhhdmUgYmVlbiBrbm93biB0byBj b25mdXNlIHRoZSBwbGFubmVyCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc2VsZWN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwKaW5kZXgg MDE5ZjFlNzY3My4uMGU2NTBhMjMwMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc2VsZWN0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3Quc3FsCkBA IC0yMzQsNiArMjM0LDg4IEBAIHNlbGVjdCB1bmlxdWUxLCB1bmlxdWUyIGZyb20gb25lazIK IHNlbGVjdCB1bmlxdWUxLCB1bmlxdWUyIGZyb20gb25lazIKICAgd2hlcmUgKHVuaXF1ZTIg PSAxMSBhbmQgc3RyaW5ndTEgPCAnQicpIG9yIHVuaXF1ZTEgPSAwOwogCitTRVQgZW5hYmxl X3NlcXNjYW4gVE8gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4gVE8gb2ZmOyAtLSBPbmx5 IEJpdG1hcFNjYW4gaXMgYSBzdWJqZWN0IG1hdHRlciBoZXJlCitTRVQgZW5hYmxlX29yX3Ry YW5zZm9ybWF0aW9uID0gJ29mZic7CitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgY291 bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdK JzsKKy0tIFdpdGhvdXQgdGhlIHRyYW5zZm9ybWF0aW9uIG9ubHkgc2Vxc2NhbiBwb3NzaWJs ZSBoZXJlCitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEg RlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMiA8IDEgQU5EIHN0cmluZ3UxIElOICgnQScsJ0on KSBBTkQgc3RyaW5ndTEgPCAnWic7CistLSBVc2UgcGFydGlhbCBpbmRleGVzCitleHBsYWlu IChjb3N0cyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5n dTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEpOwor ZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25l azIKK1dIRVJFIHVuaXF1ZTEgPCAxIE9SIChzdHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9 ICdKJyk7CitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEg RlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5pcXVlMiA9IFBJKCk6OmludGVn ZXI7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKKy0tIE9SIDwtPiBBTlkg dHJhbnNmb3JtYXRpb24gbXVzdCBmaW5kIGEgcGF0aCB3aXRoIHBhcnRpYWwgaW5kZXhlcyBz Y2FuCistLSByZWdhcmRsZXNzIHRoZSBjbGF1c2UgcmVwcmVzZW50YXRpb24uCitleHBsYWlu IChjb3N0cyBvZmYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1 MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdKJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScsJ0onKTsKK2V4 cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0 cmluZ3UxID0gQU5ZICgne0EsSn0nKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK1NFTEVDVCBj b3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxIElOICgnQScpIE9SIHN0cmluZ3Ux IElOICgnSicpOworCistLSBEb24ndCBzY2FuIHBhcnRpYWwgaW5kZXhlcyBiZWNhdXNlIG9m IGV4dHJhIHZhbHVlLgorZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIGNvdW50KCopIEZS T00gb25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywgJ0onLCAnQycpOworZXhwbGFpbiAo Y29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEg SU4gKCdBJywgJ0EnKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0EnKTsK KworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00g b25lazIKK1dIRVJFIHVuaXF1ZTIgPCAxIEFORCBzdHJpbmd1MSBJTiAoJ0EnLCdKJykgQU5E IHN0cmluZ3UxIDwgJ1onOworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIs IHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAxIE9SIHVuaXF1ZTEgPSBQ SSgpOjppbnRlZ2VyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0 cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgSU4gKDEsIFBJKCk6OmludGVnZXIp OyAtLSBUT0RPOiB3aHkgaXQgaXMgZGlmZmVycyBmcm9tIHByZXZpb3VzIGV4YW1wbGU/CisK Ky0tIERvbid0IGFwcGx5IHRoZSBvcHRpbWl6YXRpb24gdG8gY2xhdXNlcywgY29udGFpbmlu ZyB2b2xhdGlsZSBmdW5jdGlvbnMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlx dWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAocmFuZG9tKCkqMik6 OmludGVnZXIgT1IgdW5pcXVlMSA9IChyYW5kb20oKSozKTo6aW50ZWdlcjsKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJF IHVuaXF1ZTEgSU4gKChyYW5kb20oKSoyKTo6aW50ZWdlciwgKHJhbmRvbSgpKjMpOjppbnRl Z2VyKTsKKworLS0gQ29tYmluZSBkaWZmZXJlbnQgc2FvcHMuIFNvZSBvZiB0aGVtIGRvZXNu dCcgZml0IGEgc2V0IG9mIHBhcnRpYWwgaW5kZXhlcywKKy0tIGJ1dCBvdGhlciBmaXRzLgor LS0gVW5mb3J0dW5hdGVseSwgd2UgZG9uJ3QgY29tYmluZSBzYW9wIGFuZCBPUiBjbGF1c2Vz IHNvIGZhci4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3Ux IEZST00gb25lazIKK1dIRVJFCisgIHVuaXF1ZTEgSU4gKDEsMiwyMSkgQU5ECisgIChzdHJp bmd1MSBJTiAoJ0EnLCdKJykgT1IgdW5pcXVlMSBJTiAoMyw0KSBPUiBzdHJpbmd1MSA9ICdK Jyk7CisKKy0tIENoZWNrIHJlY3Vyc2l2ZSBjb21iaW5hdGlvbiBvZiBPUiBhbmQgU0FPUCBl eHByZXNzaW9ucworZXhwbGFpbiAoY29zdHMgb2ZmKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmlu Z3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPCAxIE9SIChzdHJpbmd1MSA9ICdBJyBP UiBzdHJpbmd1MSA9ICdKJyk7CitleHBsYWluIChjb3N0cyBvZmYpCitTRUxFQ1QgdW5pcXVl Miwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgKHVuaXF1ZTEgPCAxIE9SIHN0cmluZ3Ux IElOICgnQScsJ0onKSk7CistLSBBbHRob3VnaCBTQU9QIGRvZXNuJ3QgZml0IHBhcnRpYWwg aW5kZXhlcyBmdWxseSwgd2UgY2FuIHVzZSBhbmRlZCBPUiBjbGF1c2UKKy0tIHRvIHNjYW4g YW5vdGhlciBjb3VwbGUgb2YgcGFydGlhbCBpbmRleGVzLgorZXhwbGFpbiAoY29zdHMgb2Zm KQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIKK1dIRVJFIHN0cmluZ3UxIElOICgnQics J0onKSBBTkQgKHN0cmluZ3UxID0gJ0EnIE9SIHVuaXF1ZTEgPSAxKTsKKworUkVTRVQgZW5h YmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCiAtLQogLS0gVGVzdCBz b21lIGNvcm5lciBjYXNlcyB0aGF0IGhhdmUgYmVlbiBrbm93biB0byBjb25mdXNlIHRoZSBw bGFubmVyCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA1Y2Y0NDRlOTVi Li42OThlNDYwODQwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjE0MSw2 ICsyMTQxLDcgQEAgUHJlZEl0ZXJJbmZvRGF0YQogUHJlZFhhY3RMaXN0CiBQcmVkaWNhdGVM b2NrRGF0YQogUHJlZGljYXRlTG9ja1RhcmdldFR5cGUKK1ByZWRpY2F0ZXNEYXRhCiBQcmVm ZXRjaEJ1ZmZlclJlc3VsdAogUHJlcFBhcmFsbGVsUmVzdG9yZVB0clR5cGUKIFByZXBhcmVT dG10Ci0tIAoyLjQzLjIKCg== --------------auBqnJYXFpNTOmzPPAFvhjpF--