From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 4DC7027BB2 for ; Sat, 23 Feb 2019 16:38:20 -0500 (EST) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XQCDQB8nEzm1 for ; Sat, 23 Feb 2019 16:38:20 -0500 (EST) Received: from smtp40.i.mail.ru (smtp40.i.mail.ru [94.100.177.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 2F00C27AB8 for ; Sat, 23 Feb 2019 16:38:19 -0500 (EST) Subject: [tarantool-patches] Re: [PATCH] httpc: add checking of headers in httpc:request References: <20181221181844.4417-1-roman.habibov@tarantool.org> <20181223031929.hhmxdlsox2aon5ih@tkn_work_nb> <3b2626ce-b887-70dd-38b0-ef38b37a983c@tarantool.org> <72bbdfde-54d7-0e94-c5e7-ca84c2a6078d@tarantool.org> <7f31300f-2e4a-f0b1-a40c-90d631fb9778@tarantool.org> <2e5f83a6-2885-96f8-6fd6-a5fd34e32644@tarantool.org> <1549927450.14514.0@smtp.mail.ru> <1550573375.20050.0@smtp.mail.ru> From: Roman Khabibov Message-ID: <62772189-7064-8015-7ad8-7b75d500e874@tarantool.org> Date: Sun, 24 Feb 2019 00:38:16 +0300 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/alternative; boundary="------------C608F9092F7FCD2616C2E2E8" Content-Language: en-US Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: tarantool-patches@freelists.org Cc: v.shpilevoy@tarantool.org This is a multi-part message in MIME format. --------------C608F9092F7FCD2616C2E2E8 Content-Type: text/plain; charset="iso-8859-5"; format="flowed" Content-Transfer-Encoding: base64 SGkhIFRoYW5rcyBmb3IgcmV2aWV3LgoKT24gMi8yMi8xOSA3OjAxIFBNLCBWbGFkaXNsYXYgU2hw aWxldm95IHdyb3RlOgoKPiBIaSEgVGhhbmtzIGZvciB0aGUgZml4ZXMhIFNlZSAzIGNvbW1lbnRz IGJlbG93Lgo+IE9uIDE5LzAyLzIwMTkgMTM6NDksIFJvbWFuIHdyb3RlOgo+PiBIaSEgVGhhbmtz IGZvciByZXZpZXcuCj4+IE9uIMHRLCDk1dIgMTYsIDIwMTkgYXQgMTI6MTcgQU0sIFZsYWRpc2xh diBTaHBpbGV2b3kgPHYuc2hwaWxldm95QHRhcmFudG9vbC5vcmc+IHdyb3RlOgo+Pj4gSGkhCj4+ PiAgoKCgoKCgoCA1LiBPdXQgb2YgODAgc3ltYm9scy4gf38gMi4gU3RpbGwgb3V0IG9mIDgwLgo+ Pj4KPj4+ICCgoKAgTXkgdGV4dCBlZGl0b3Igc2hvd3MgNzAgc3ltYm9scy4KPj4+Cj4+PiBUaGVu IHRoZXJlIGlzIHNvbWV0aGluZyB3cm9uZyB3aXRoIHlvdXIgZWRpdG9yLCBzb3JyeS4gaHR0cHM6 Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvYmxvYi9yb21hbmhhYmlib3YvZ2gtMzY3 OS1odHRwYy1yZXF1ZXN0L3NyYy9sdWEvaHR0cGMuYyNMMTgwIExldHMgY291bnQuIEhlcmUgeW91 IGhhdmUgNiB0YWJzIC0gNiAqIDggPSA0OCBzeW1ib2xzLiBUaGVuIHlvdSBoYXZlIDU1IHN5bWJv bHMgb2YgImhlYWRlcnMgbXVzdCBiZSBzdHJpbmcgb3IgdGFibGUgd2l0aCBcIl9fdG9zdHJpbmdc IiIpOyA0OCArIDU1ID0gMTAzLiBBbHNvLCB0aGUgZXJyb3Igc3RyaW5nIGlzIG5vdCBhbGlnbmVk IGJ5IG9wZW5pbmcgcGFyZW50aGVzaXMuIEluIHlvdXIgZW1haWwgSSBzZWUsIHRoYXQgeW91IGhh dmUgNCBzeW1ib2xzIHRhYiwgd2hhdCBnaXZlcyB5b3UgNzkgc3ltYm9scywgYnV0IHRhYiB3aWR0 aCBpbiB0aGlzIGZpbGUgc2hvdWxkIGJlIDguIFNvIHByb2JhYmx5IHlvdSBtaXN0YWtlbmx5IHNl dCB0YWIgd2lkdGggdG8gNCBhbmQgdGhlIGVkaXRvciBzaG93cyB5b3UgPCA4MCB3aWR0aC4gUGxl YXNlLCBmaXguCj4+IE9rLiBEb25lLgo+IDEuIE5vdyB5b3UgaGF2ZSBsZWFkaW5nIHdoaXRlc3Bh Y2Ugb24gbGluZSAxODIuIEl0IGlzIGNsZWFybHkgdmlzaWJsZSBpbgo+IGdpdCBkaWZmIGFzIGEg YnJpZ2h0IHJlZCBwb2ludC4gUGxlYXNlLCBkbyBzZWxmLXJldmlldyBiZWZvcmUgc2VuZGluZwo+ IGEgcGF0Y2guCgpJJ20gc29ycnkgdG8gd2FzdGUgeW91ciB0aW1lLiBJIHdhcyBpbiBhIGh1cnJ5 IGFuZCBkaWQndCBub3RpY2UuCgoKPj4gY29tbWl0IGM5ODAyNTkyYjI3Y2I2OTg2ZTNlNzJlYjk0 OGQ4ZGJmYjIxYmFhN2UKPj4gQXV0aG9yOiBSb21hbiBLaGFiaWJvdiA8cm9tYW4uaGFiaWJvdkB0 YXJhbnRvb2wub3JnPgo+PiBEYXRlOiBXZWQgRGVjIDI2IDE3OjQ5OjM0IDIwMTggKzAzMDAKPj4g aHR0cGM6IGFkZCBjaGVja2luZyBvZiBoZWFkZXJzIGluIGh0dHBjOnJlcXVlc3QKPj4gQWRkIHBy ZXByb2Nlc3Npbmcgb2YgdGhlIHJlcXVlc3QgaGVhZGVycy4gRWFjaCBoZWFkZXIgbXVzdCBiZSAn c3RyaW5nJyBvciAndGFibGUnCj4+IHdpdGggJ19fdG9zdHJpbmcnIG1ldGFtZXRob2QuCj4+IENs b3NlcyAjMzY3OQo+PiBkaWZmIC0tZ2l0IGEvc3JjL2x1YS9odHRwYy5jIGIvc3JjL2x1YS9odHRw Yy5jCj4+IGluZGV4IDVmNGUyZTkxMi4uZmIwMTJmNThiIDEwMDY0NAo+PiAtLS0gYS9zcmMvbHVh L2h0dHBjLmMKPj4gKysrIGIvc3JjL2x1YS9odHRwYy5jCj4+IEBAIC0xNzMsNiArMTczLDE4IEBA IGx1YVRfaHR0cGNfcmVxdWVzdChsdWFfU3RhdGUgKkwpCj4+IGlmICghbHVhX2lzbmlsKEwsIC0x KSkgewo+PiBsdWFfcHVzaG5pbChMKTsKPj4gd2hpbGUgKGx1YV9uZXh0KEwsIC0yKSAhPSAwKSB7 Cj4+ICsgaW50IGhlYWRlcl90eXBlID0gbHVhX3R5cGUoTCwgLTEpOwo+PiArIGlmIChoZWFkZXJf dHlwZSAhPSBMVUFfVFNUUklORykgewo+PiArIGNoYXIgKmVycl9tc2cgPSAiaGVhZGVycyBtdXN0 IGJlICIgXAo+PiArICJzdHJpbmcgb3IgdGFibGUgd2l0aCBcIl9fdG9zdHJpbmdcIiI7Cj4gMi4g UGxlYXNlLCBkbyBub3QgYXNzaWduIGEgY29uc3QgY2hhciBzdHJpbmcgdG8KPiBhICdjaGFyICon IHZhcmlhYmxlLiBVc2UgJ2NvbnN0IGNoYXIgKicuIEFsc28sCj4gcGxlYXNlLCBwcm9wZXJseSBh bGlnbiBzdHJpbmdzLiBUaGlzIHBhcnQgc2hvdWxkCj4gbG9vayBsaWtlIHRoaXM6Cj4gIKCgoKCg oKCgoKCgIGlmIChoZWFkZXJfdHlwZSAhPSBMVUFfVFNUUklORykgewo+ICCgoKCgoKCgoKCgoKCg oKAgY29uc3QgY2hhciAqZXJyX21zZyA9Cj4gIKCgoKCgoKCgoKCgoKCgoKCgoKAgImhlYWRlcnMg bXVzdCBiZSBzdHJpbmcgb3IgdGFibGUgd2l0aCAiXAo+ICCgoKCgoKCgoKCgoKCgoKCgoKCgICJc Il9fdG9zdHJpbmdcIiI7Cj4gIKCgoKCgoKCgoKCgoKCgoCBpZiAoaGVhZGVyX3R5cGUgIT0gTFVB X1RUQUJMRSkgewo+IFdyYXBwZWQgc3RyaW5nIGlzIGFsaWduZWQgYnkgdGhlIGJlZ2lubmluZy4K Pj4gKyBpZiAoaGVhZGVyX3R5cGUgIT0gTFVBX1RUQUJMRSkgewo+PiArIHJldHVybiBsdWFMX2Vy cm9yKEwsIGVycl9tc2cpOwo+PiArIH0gZWxzZSBpZiAoIWx1YUxfZ2V0bWV0YWZpZWxkKEwsIC0x LAo+PiArICJfX3Rvc3RyaW5nIikpIHsKPj4gKyByZXR1cm4gbHVhTF9lcnJvcihMLCBlcnJfbXNn KTsKPj4gKyB9Cj4+ICsgbHVhX3BvcChMLCAxKTsKPj4gKyB9CgpEb25lLgoKKwkJCQljb25zdCBj aGFyICplcnJfbXNnID0KKwkJCQkJImhlYWRlcnMgbXVzdCBiZSBzdHJpbmcgb3IgdGFibGUgIlwK KwkJCQkJIndpdGggXCJfX3Rvc3RyaW5nXCIiOwoKCmNvbW1pdCA0MmQyNWY0ZDZlZWY2OWFlNTZk YjM4NDE4NjNhZmEzMzczZmE5YjY3CkF1dGhvcjogUm9tYW4gS2hhYmlib3YgPHJvbWFuLmhhYmli b3ZAdGFyYW50b29sLm9yZz4KRGF0ZTogICBXZWQgRGVjIDI2IDE3OjQ5OjM0IDIwMTggKzAzMDAK CiAgICAgaHR0cGM6IGFkZCBjaGVja2luZyBvZiBoZWFkZXJzIGluIGh0dHBjOnJlcXVlc3QKICAg ICAKICAgICBBZGQgcHJlcHJvY2Vzc2luZyBvZiB0aGUgcmVxdWVzdCBoZWFkZXJzLiBFYWNoIGhl YWRlciBtdXN0IGJlICdzdHJpbmcnIG9yICd0YWJsZScKICAgICB3aXRoICdfX3Rvc3RyaW5nJyBt ZXRhbWV0aG9kLgogICAgIAogICAgIENsb3NlcyAjMzY3OQoKZGlmZiAtLWdpdCBhL3NyYy9sdWEv aHR0cGMuYyBiL3NyYy9sdWEvaHR0cGMuYwppbmRleCA1ZjRlMmU5MTIuLmRiODYzNDk0OSAxMDA2 NDQKLS0tIGEvc3JjL2x1YS9odHRwYy5jCisrKyBiL3NyYy9sdWEvaHR0cGMuYwpAQCAtMTczLDYg KzE3MywxOSBAQCBsdWFUX2h0dHBjX3JlcXVlc3QobHVhX1N0YXRlICpMKQogIAlpZiAoIWx1YV9p c25pbChMLCAtMSkpIHsKICAJCWx1YV9wdXNobmlsKEwpOwogIAkJd2hpbGUgKGx1YV9uZXh0KEws IC0yKSAhPSAwKSB7CisJCQlpbnQgaGVhZGVyX3R5cGUgPSBsdWFfdHlwZShMLCAtMSk7CisJCQlp ZiAoaGVhZGVyX3R5cGUgIT0gTFVBX1RTVFJJTkcpIHsKKwkJCQljb25zdCBjaGFyICplcnJfbXNn ID0KKwkJCQkJImhlYWRlcnMgbXVzdCBiZSBzdHJpbmcgb3IgdGFibGUgIlwKKwkJCQkJIndpdGgg XCJfX3Rvc3RyaW5nXCIiOworCQkJCWlmIChoZWFkZXJfdHlwZSAhPSBMVUFfVFRBQkxFKSB7CisJ CQkJCXJldHVybiBsdWFMX2Vycm9yKEwsIGVycl9tc2cpOworCQkJCX0gZWxzZSBpZiAoIWx1YUxf Z2V0bWV0YWZpZWxkKEwsIC0xLAorCQkJCQkJCSAgICAgICJfX3Rvc3RyaW5nIikpIHsKKwkJCQkJ cmV0dXJuIGx1YUxfZXJyb3IoTCwgZXJyX21zZyk7CisJCQkJfQorCQkJCWx1YV9wb3AoTCwgMSk7 CisJCQl9CiAgCQkJaWYgKGh0dHBjX3NldF9oZWFkZXIocmVxLCAiJXM6ICVzIiwKICAJCQkJCSAg ICAgbHVhX3Rvc3RyaW5nKEwsIC0yKSwKICAJCQkJCSAgICAgbHVhX3Rvc3RyaW5nKEwsIC0xKSkg PCAwKSB7CmRpZmYgLS1naXQgYS90ZXN0L2FwcC10YXAvaHR0cF9jbGllbnQudGVzdC5sdWEgYi90 ZXN0L2FwcC10YXAvaHR0cF9jbGllbnQudGVzdC5sdWEKaW5kZXggMTBhMzcyOGY4Li44YTk4ZDFl OTIgMTAwNzU1Ci0tLSBhL3Rlc3QvYXBwLXRhcC9odHRwX2NsaWVudC50ZXN0Lmx1YQorKysgYi90 ZXN0L2FwcC10YXAvaHR0cF9jbGllbnQudGVzdC5sdWEKQEAgLTIwNSw2ICsyMDUsODAgQEAgbG9j YWwgZnVuY3Rpb24gdGVzdF9lcnJvcnModGVzdCkKICAgICAgdGVzdDppcyhyLnN0YXR1cywgNTk1 LCAiR0VUOiByZXNwb25zZSBvbiBiYWQgdXJsIikKICBlbmQKICAKKy0tIGdoLTM2NzkgYWxsb3cg b25seSBoZWFkZXJzIGNhbiBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5nCitsb2NhbCBmdW5jdGlvbiB0 ZXN0X3JlcXVlc3RfaGVhZGVycyh0ZXN0LCB1cmwsIG9wdHMpCisgICAgbG9jYWwgZXhwX2VyciA9 ICdoZWFkZXJzIG11c3QgYmUgc3RyaW5nIG9yIHRhYmxlIHdpdGggIl9fdG9zdHJpbmciJworICAg IGxvY2FsIGNhc2VzID0geworICAgICAgICB7CisgICAgICAgICAgICAnc3RyaW5nIGhlYWRlcics CisgICAgICAgICAgICBvcHRzID0ge2hlYWRlcnMgPSB7YWFhID0gJ2FhYSd9fSwKKyAgICAgICAg ICAgIGV4cF9lcnIgPSBuaWwsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICdo ZWFkZXIgd2l0aCBfX3Rvc3RyaW5nKCkgbWV0YW1ldGhvZCcsCisgICAgICAgICAgICBvcHRzID0g e2hlYWRlcnMgPSB7YWFhID0gc2V0bWV0YXRhYmxlKHt9LCB7CisgICAgICAgICAgICAgICAgX190 b3N0cmluZyA9IGZ1bmN0aW9uKHNlbGYpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYWFh JworICAgICAgICAgICAgICAgIGVuZH0pfX0sCisgICAgICAgICAgICBleHBfZXJyID0gbmlsLAor ICAgICAgICAgICAgcG9zdHJlcXVlc3RfY2hlY2sgPSBmdW5jdGlvbihvcHRzKQorICAgICAgICAg ICAgICAgIGFzc2VydCh0eXBlKG9wdHMuaGVhZGVycy5hYWEpID09ICd0YWJsZScsCisgICAgICAg ICAgICAgICAgICAgICciYWFhIiBoZWFkZXIgd2FzIG1vZGlmaWVkIGluIGh0dHBfY2xpZW50JykK KyAgICAgICAgICAgIGVuZCwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgJ2Jv b2xlYW4gaGVhZGVyJywKKyAgICAgICAgICAgIG9wdHMgPSB7aGVhZGVycyA9IHthYWEgPSB0cnVl fX0sCisgICAgICAgICAgICBleHBfZXJyID0gZXhwX2VyciwKKyAgICAgICAgfSwKKyAgICAgICAg eworICAgICAgICAgICAgJ251bWJlciBoZWFkZXInLAorICAgICAgICAgICAgb3B0cyA9IHtoZWFk ZXJzID0ge2FhYSA9IDEwfX0sCisgICAgICAgICAgICBleHBfZXJyID0gZXhwX2VyciwKKyAgICAg ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgJ2NkYXRhIGhlYWRlciAoYm94Lk5VTEwpJywK KyAgICAgICAgICAgIG9wdHMgPSB7aGVhZGVycyA9IHthYWEgPSBib3guTlVMTH19LAorICAgICAg ICAgICAgZXhwX2VyciA9IGV4cF9lcnIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg ICAgICdjZGF0YTx1aW50NjRfdD4gaGVhZGVyJywKKyAgICAgICAgICAgIG9wdHMgPSB7aGVhZGVy cyA9IHthYWEgPSAxMFVMTH19LAorICAgICAgICAgICAgZXhwX2VyciA9IGV4cF9lcnIsCisgICAg ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICd0YWJsZSBoZWFkZXIgdy9vIG1ldGF0YWJs ZScsCisgICAgICAgICAgICBvcHRzID0ge2hlYWRlcnMgPSB7YWFhID0ge319fSwKKyAgICAgICAg ICAgIGV4cF9lcnIgPSBleHBfZXJyLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg ICAndGFibGUgaGVhZGVyIHcvbyBfX3Rvc3RyaW5nKCkgbWV0YW1ldGhvZCcsCisgICAgICAgICAg ICBvcHRzID0ge2hlYWRlcnMgPSB7YWFhID0gc2V0bWV0YXRhYmxlKHt9LCB7fSl9fSwKKyAgICAg ICAgICAgIGV4cF9lcnIgPSBleHBfZXJyLAorICAgICAgICB9LAorICAgIH0KKyAgICB0ZXN0OnBs YW4oI2Nhc2VzKQorCisgICAgbG9jYWwgaHR0cCA9IGNsaWVudDpuZXcoKQorCisgICAgZm9yIF8s IGNhc2UgaW4gaXBhaXJzKGNhc2VzKSBkbworICAgICAgICBsb2NhbCBvcHRzID0gbWVyZ2UodGFi bGUuY29weShvcHRzKSwgY2FzZS5vcHRzKQorICAgICAgICBsb2NhbCBvaywgZXJyID0gcGNhbGwo aHR0cC5nZXQsIGh0dHAsIHVybCwgb3B0cykKKyAgICAgICAgaWYgY2FzZS5wb3N0cmVxdWVzdF9j aGVjayB+PSBuaWwgdGhlbgorICAgICAgICAgICAgY2FzZS5wb3N0cmVxdWVzdF9jaGVjayhvcHRz KQorICAgICAgICBlbmQKKyAgICAgICAgaWYgY2FzZS5leHBfZXJyID09IG5pbCB0aGVuCisgICAg ICAgICAgICAtLSBleHBlY3Qgc3VjY2VzcworICAgICAgICAgICAgdGVzdDpvayhvaywgY2FzZVsx XSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgLS0gZXhwZWN0IGZhaWwKKyAgICAgICAgICAg IGFzc2VydCh0eXBlKGVycikgPT0gJ3N0cmluZycpCisgICAgICAgICAgICBlcnIgPSBlcnI6Z3N1 YignXmJ1aWx0aW4vW2Etei5fXSsubHVhOlswLTldKzogJywgJycpCisgICAgICAgICAgICB0ZXN0 OmlzX2RlZXBseSh7b2ssIGVycn0sIHtmYWxzZSwgY2FzZS5leHBfZXJyfSwgY2FzZVsxXSkKKyAg ICAgICAgZW5kCisgICAgZW5kCitlbmQKKwogIGxvY2FsIGZ1bmN0aW9uIHRlc3RfaGVhZGVycyh0 ZXN0LCB1cmwsIG9wdHMpCiAgICAgIHRlc3Q6cGxhbigxOSkKICAgICAgbG9jYWwgaHR0cCA9IGNs aWVudDpuZXcoKQpAQCAtMzk3LDEyICs0NzEsMTMgQEAgbG9jYWwgZnVuY3Rpb24gdGVzdF9jb25j dXJyZW50KHRlc3QsIHVybCwgb3B0cykKICBlbmQKICAKICBmdW5jdGlvbiBydW5fdGVzdHModGVz dCwgc29ja19mYW1pbHksIHNvY2tfYWRkcikKLSAgICB0ZXN0OnBsYW4oOSkKKyAgICB0ZXN0OnBs YW4oMTApCiAgICAgIGxvY2FsIHNlcnZlciwgdXJsLCBvcHRzID0gc3RhcnRfc2VydmVyKHRlc3Qs IHNvY2tfZmFtaWx5LCBzb2NrX2FkZHIpCiAgICAgIHRlc3Q6dGVzdCgiaHR0cC5jbGllbnQiLCB0 ZXN0X2h0dHBfY2xpZW50LCB1cmwsIG9wdHMpCiAgICAgIHRlc3Q6dGVzdCgiY2FuY2VsIGFuZCBl cnJpbmoiLCB0ZXN0X2NhbmNlbF9hbmRfZXJyaW5qLCB1cmwgLi4gJ2xvbmdfcXVlcnknLCBvcHRz KQogICAgICB0ZXN0OnRlc3QoImJhc2ljIGh0dHAgcG9zdC9nZXQiLCB0ZXN0X3Bvc3RfYW5kX2dl dCwgdXJsLCBvcHRzKQogICAgICB0ZXN0OnRlc3QoImVycm9ycyIsIHRlc3RfZXJyb3JzKQorICAg IHRlc3Q6dGVzdCgicmVxdWVzdF9oZWFkZXJzIiwgdGVzdF9yZXF1ZXN0X2hlYWRlcnMsIHVybCwg b3B0cykKICAgICAgdGVzdDp0ZXN0KCJoZWFkZXJzIiwgdGVzdF9oZWFkZXJzLCB1cmwsIG9wdHMp CiAgICAgIHRlc3Q6dGVzdCgic3BlY2lhbCBtZXRob2RzIiwgdGVzdF9zcGVjaWFsX21ldGhvZHMs IHVybCwgb3B0cykKICAgICAgaWYgc29ja19mYW1pbHkgPT0gJ0FGX1VOSVgnIGFuZCBqaXQub3Mg fj0gIkxpbnV4IiB0aGVuCgo= --------------C608F9092F7FCD2616C2E2E8 Content-Type: text/html; charset="iso-8859-5" Content-Transfer-Encoding: base64 PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl bnQ9InRleHQvaHRtbDsKICAgICAgY2hhcnNldD1JU08tODg1OS01Ij4KICA8L2hlYWQ+CiAgPGJv ZHkgdGV4dD0iIzAwMDAwMCIgYmdjb2xvcj0iI0ZGRkZGRiI+CiAgICA8cHJlPkhpISBUaGFua3Mg Zm9yIHJldmlldy4KPC9wcmU+CiAgICA8ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPgogICAg ICA8cHJlPk9uIDIvMjIvMTkgNzowMSBQTSwgVmxhZGlzbGF2IFNocGlsZXZveSB3cm90ZTo8L3By ZT4KICAgIDwvZGl2PgogICAgPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSIKICAgICAgY2l0ZT0ibWlk OmRjY2VhMWI3LTRmNmYtNzhmNy00NDZlLTljY2Y2OWI0OGZjZUB0YXJhbnRvb2wub3JnIj4KICAg ICAgPHByZT5IaSEgVGhhbmtzIGZvciB0aGUgZml4ZXMhIFNlZSAzIGNvbW1lbnRzIGJlbG93Lgo8 L3ByZT4KICAgICAgPHByZT4KPC9wcmU+CiAgICAgIDxwcmU+T24gMTkvMDIvMjAxOSAxMzo0OSwg Um9tYW4gd3JvdGU6CjwvcHJlPgogICAgICA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj4KICAgICAg ICA8cHJlPgo8L3ByZT4KICAgICAgICA8cHJlPkhpISBUaGFua3MgZm9yIHJldmlldy4KPC9wcmU+ CiAgICAgICAgPHByZT4KPC9wcmU+CiAgICAgICAgPHByZT5PbiDB0Swg5NXSIDE2LCAyMDE5IGF0 IDEyOjE3IEFNLCBWbGFkaXNsYXYgU2hwaWxldm95IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstcmZj MjM5NkUiIGhyZWY9Im1haWx0bzp2LnNocGlsZXZveUB0YXJhbnRvb2wub3JnIj4mbHQ7di5zaHBp bGV2b3lAdGFyYW50b29sLm9yZyZndDs8L2E+IHdyb3RlOgo8L3ByZT4KICAgICAgICA8YmxvY2tx dW90ZSB0eXBlPSJjaXRlIj4KICAgICAgICAgIDxwcmU+SGkhCjwvcHJlPgogICAgICAgICAgPHBy ZT4KPC9wcmU+CiAgICAgICAgICA8cHJlPqCgoKCgoKAgNS4gT3V0IG9mIDgwIHN5bWJvbHMuIH9/ IDIuIFN0aWxsIG91dCBvZiA4MC4gCgo8L3ByZT4KICAgICAgICAgIDxwcmU+oKCgIE15IHRleHQg ZWRpdG9yIHNob3dzIDcwIHN5bWJvbHMuIAoKPC9wcmU+CiAgICAgICAgICA8cHJlPlRoZW4gdGhl cmUgaXMgc29tZXRoaW5nIHdyb25nIHdpdGggeW91ciBlZGl0b3IsIHNvcnJ5LiA8YSBjbGFzcz0i bW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29s L3RhcmFudG9vbC9ibG9iL3JvbWFuaGFiaWJvdi9naC0zNjc5LWh0dHBjLXJlcXVlc3Qvc3JjL2x1 YS9odHRwYy5jI0wxODAiPmh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL2Js b2Ivcm9tYW5oYWJpYm92L2doLTM2NzktaHR0cGMtcmVxdWVzdC9zcmMvbHVhL2h0dHBjLmMjTDE4 MDwvYT4gTGV0cyBjb3VudC4gSGVyZSB5b3UgaGF2ZSA2IHRhYnMgLSA2ICogOCA9IDQ4IHN5bWJv bHMuIFRoZW4geW91IGhhdmUgNTUgc3ltYm9scyBvZiAiaGVhZGVycyBtdXN0IGJlIHN0cmluZyBv ciB0YWJsZSB3aXRoIFwiX190b3N0cmluZ1wiIik7IDQ4ICsgNTUgPSAxMDMuIEFsc28sIHRoZSBl cnJvciBzdHJpbmcgaXMgbm90IGFsaWduZWQgYnkgb3BlbmluZyBwYXJlbnRoZXNpcy4gSW4geW91 ciBlbWFpbCBJIHNlZSwgdGhhdCB5b3UgaGF2ZSA0IHN5bWJvbHMgdGFiLCB3aGF0IGdpdmVzIHlv dSA3OSBzeW1ib2xzLCBidXQgdGFiIHdpZHRoIGluIHRoaXMgZmlsZSBzaG91bGQgYmUgOC4gU28g cHJvYmFibHkgeW91IG1pc3Rha2VubHkgc2V0IHRhYiB3aWR0aCB0byA0IGFuZCB0aGUgZWRpdG9y IHNob3dzIHlvdSAmbHQ7IDgwIHdpZHRoLiBQbGVhc2UsIGZpeC4gCjwvcHJlPgogICAgICAgIDwv YmxvY2txdW90ZT4KICAgICAgICA8cHJlPk9rLiBEb25lLgo8L3ByZT4KICAgICAgPC9ibG9ja3F1 b3RlPgogICAgICA8cHJlPgo8L3ByZT4KICAgICAgPHByZT4xLiBOb3cgeW91IGhhdmUgbGVhZGlu ZyB3aGl0ZXNwYWNlIG9uIGxpbmUgMTgyLiBJdCBpcyBjbGVhcmx5IHZpc2libGUgaW4KPC9wcmU+ CiAgICAgIDxwcmU+Z2l0IGRpZmYgYXMgYSBicmlnaHQgcmVkIHBvaW50LiBQbGVhc2UsIGRvIHNl bGYtcmV2aWV3IGJlZm9yZSBzZW5kaW5nCjwvcHJlPgogICAgICA8cHJlPmEgcGF0Y2guCjwvcHJl PgogICAgPC9ibG9ja3F1b3RlPgogICAgPHByZT5JJ20gc29ycnkgdG8gd2FzdGUgeW91ciB0aW1l LiBJIHdhcyBpbiBhIGh1cnJ5IGFuZCBkaWQndCBub3RpY2UuCgoKPC9wcmU+CiAgICA8YmxvY2tx dW90ZSB0eXBlPSJjaXRlIgogICAgICBjaXRlPSJtaWQ6ZGNjZWExYjctNGY2Zi03OGY3LTQ0NmUt OWNjZjY5YjQ4ZmNlQHRhcmFudG9vbC5vcmciPgogICAgICA8YmxvY2txdW90ZSB0eXBlPSJjaXRl Ij4KICAgICAgICA8cHJlPgo8L3ByZT4KICAgICAgICA8cHJlPmNvbW1pdCBjOTgwMjU5MmIyN2Ni Njk4NmUzZTcyZWI5NDhkOGRiZmIyMWJhYTdlCjwvcHJlPgogICAgICAgIDxwcmU+QXV0aG9yOiBS b21hbiBLaGFiaWJvdiA8YSBjbGFzcz0ibW96LXR4dC1saW5rLXJmYzIzOTZFIiBocmVmPSJtYWls dG86cm9tYW4uaGFiaWJvdkB0YXJhbnRvb2wub3JnIj4mbHQ7cm9tYW4uaGFiaWJvdkB0YXJhbnRv b2wub3JnJmd0OzwvYT4KPC9wcmU+CiAgICAgICAgPHByZT5EYXRlOiBXZWQgRGVjIDI2IDE3OjQ5 OjM0IDIwMTggKzAzMDAKPC9wcmU+CiAgICAgICAgPHByZT4KPC9wcmU+CiAgICAgICAgPHByZT5o dHRwYzogYWRkIGNoZWNraW5nIG9mIGhlYWRlcnMgaW4gaHR0cGM6cmVxdWVzdAo8L3ByZT4KICAg ICAgICA8cHJlPkFkZCBwcmVwcm9jZXNzaW5nIG9mIHRoZSByZXF1ZXN0IGhlYWRlcnMuIEVhY2gg aGVhZGVyIG11c3QgYmUgJ3N0cmluZycgb3IgJ3RhYmxlJwo8L3ByZT4KICAgICAgICA8cHJlPndp dGggJ19fdG9zdHJpbmcnIG1ldGFtZXRob2QuCjwvcHJlPgogICAgICAgIDxwcmU+Q2xvc2VzICMz Njc5CjwvcHJlPgogICAgICAgIDxwcmU+CjwvcHJlPgogICAgICAgIDxwcmU+ZGlmZiAtLWdpdCBh L3NyYy9sdWEvaHR0cGMuYyBiL3NyYy9sdWEvaHR0cGMuYwo8L3ByZT4KICAgICAgICA8cHJlPmlu ZGV4IDVmNGUyZTkxMi4uZmIwMTJmNThiIDEwMDY0NAo8L3ByZT4KICAgICAgICA8cHJlPi0tLSBh L3NyYy9sdWEvaHR0cGMuYwo8L3ByZT4KICAgICAgICA8cHJlPisrKyBiL3NyYy9sdWEvaHR0cGMu Ywo8L3ByZT4KICAgICAgICA8cHJlPkBAIC0xNzMsNiArMTczLDE4IEBAIGx1YVRfaHR0cGNfcmVx dWVzdChsdWFfU3RhdGUgKkwpCjwvcHJlPgogICAgICAgIDxwcmU+aWYgKCFsdWFfaXNuaWwoTCwg LTEpKSB7CjwvcHJlPgogICAgICAgIDxwcmU+bHVhX3B1c2huaWwoTCk7CjwvcHJlPgogICAgICAg IDxwcmU+d2hpbGUgKGx1YV9uZXh0KEwsIC0yKSAhPSAwKSB7CjwvcHJlPgogICAgICAgIDxwcmU+ KyBpbnQgaGVhZGVyX3R5cGUgPSBsdWFfdHlwZShMLCAtMSk7CjwvcHJlPgogICAgICAgIDxwcmU+ KyBpZiAoaGVhZGVyX3R5cGUgIT0gTFVBX1RTVFJJTkcpIHsKPC9wcmU+CiAgICAgICAgPHByZT4r IGNoYXIgKmVycl9tc2cgPSAiaGVhZGVycyBtdXN0IGJlICIgXAo8L3ByZT4KICAgICAgICA8cHJl PisgInN0cmluZyBvciB0YWJsZSB3aXRoIFwiX190b3N0cmluZ1wiIjsKPC9wcmU+CiAgICAgIDwv YmxvY2txdW90ZT4KICAgICAgPHByZT4KPC9wcmU+CiAgICAgIDxwcmU+Mi4gUGxlYXNlLCBkbyBu b3QgYXNzaWduIGEgY29uc3QgY2hhciBzdHJpbmcgdG8KPC9wcmU+CiAgICAgIDxwcmU+YSAnY2hh ciAqJyB2YXJpYWJsZS4gVXNlICdjb25zdCBjaGFyIConLiBBbHNvLAo8L3ByZT4KICAgICAgPHBy ZT5wbGVhc2UsIHByb3Blcmx5IGFsaWduIHN0cmluZ3MuIFRoaXMgcGFydCBzaG91bGQKPC9wcmU+ CiAgICAgIDxwcmU+bG9vayBsaWtlIHRoaXM6CjwvcHJlPgogICAgICA8cHJlPgo8L3ByZT4KICAg ICAgPHByZT6goKCgoKCgoKCgoCBpZiAoaGVhZGVyX3R5cGUgIT0gTFVBX1RTVFJJTkcpIHsKPC9w cmU+CiAgICAgIDxwcmU+oKCgoKCgoKCgoKCgoKCgIGNvbnN0IGNoYXIgKmVycl9tc2cgPQo8L3By ZT4KICAgICAgPHByZT6goKCgoKCgoKCgoKCgoKCgoKCgICJoZWFkZXJzIG11c3QgYmUgc3RyaW5n IG9yIHRhYmxlIHdpdGggIlwKPC9wcmU+CiAgICAgIDxwcmU+oKCgoKCgoKCgoKCgoKCgoKCgoCAi XCJfX3Rvc3RyaW5nXCIiOwo8L3ByZT4KICAgICAgPHByZT6goKCgoKCgoKCgoKCgoKAgaWYgKGhl YWRlcl90eXBlICE9IExVQV9UVEFCTEUpIHsKPC9wcmU+CiAgICAgIDxwcmU+CjwvcHJlPgogICAg ICA8cHJlPldyYXBwZWQgc3RyaW5nIGlzIGFsaWduZWQgYnkgdGhlIGJlZ2lubmluZy4KPC9wcmU+ CiAgICAgIDxwcmU+CjwvcHJlPgogICAgICA8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj4KICAgICAg ICA8cHJlPisgaWYgKGhlYWRlcl90eXBlICE9IExVQV9UVEFCTEUpIHsKPC9wcmU+CiAgICAgICAg PHByZT4rIHJldHVybiBsdWFMX2Vycm9yKEwsIGVycl9tc2cpOwo8L3ByZT4KICAgICAgICA8cHJl PisgfSBlbHNlIGlmICghbHVhTF9nZXRtZXRhZmllbGQoTCwgLTEsCjwvcHJlPgogICAgICAgIDxw cmU+KyAiX190b3N0cmluZyIpKSB7CjwvcHJlPgogICAgICAgIDxwcmU+KyByZXR1cm4gbHVhTF9l cnJvcihMLCBlcnJfbXNnKTsKPC9wcmU+CiAgICAgICAgPHByZT4rIH0KPC9wcmU+CiAgICAgICAg PHByZT4rIGx1YV9wb3AoTCwgMSk7CjwvcHJlPgogICAgICAgIDxwcmU+KyB9CjwvcHJlPgogICAg ICA8L2Jsb2NrcXVvdGU+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICA8cHJlPkRvbmUuPC9wcmU+CiAg ICA8cHJlPjxwcmU+KwkJCQljb25zdCBjaGFyICplcnJfbXNnID0KKwkJCQkJImhlYWRlcnMgbXVz dCBiZSBzdHJpbmcgb3IgdGFibGUgIlwKKwkJCQkJIndpdGggXCJfX3Rvc3RyaW5nXCIiOwo8L3By ZT4KPHByZT5jb21taXQgNDJkMjVmNGQ2ZWVmNjlhZTU2ZGIzODQxODYzYWZhMzM3M2ZhOWI2NwpB dXRob3I6IFJvbWFuIEtoYWJpYm92IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstcmZjMjM5NkUiIGhy ZWY9Im1haWx0bzpyb21hbi5oYWJpYm92QHRhcmFudG9vbC5vcmciPiZsdDtyb21hbi5oYWJpYm92 QHRhcmFudG9vbC5vcmcmZ3Q7PC9hPgpEYXRlOiAgIFdlZCBEZWMgMjYgMTc6NDk6MzQgMjAxOCAr MDMwMAoKICAgIGh0dHBjOiBhZGQgY2hlY2tpbmcgb2YgaGVhZGVycyBpbiBodHRwYzpyZXF1ZXN0 CiAgICAKICAgIEFkZCBwcmVwcm9jZXNzaW5nIG9mIHRoZSByZXF1ZXN0IGhlYWRlcnMuIEVhY2gg aGVhZGVyIG11c3QgYmUgJ3N0cmluZycgb3IgJ3RhYmxlJwogICAgd2l0aCAnX190b3N0cmluZycg bWV0YW1ldGhvZC4KICAgIAogICAgQ2xvc2VzICMzNjc5CgpkaWZmIC0tZ2l0IGEvc3JjL2x1YS9o dHRwYy5jIGIvc3JjL2x1YS9odHRwYy5jCmluZGV4IDVmNGUyZTkxMi4uZGI4NjM0OTQ5IDEwMDY0 NAotLS0gYS9zcmMvbHVhL2h0dHBjLmMKKysrIGIvc3JjL2x1YS9odHRwYy5jCkBAIC0xNzMsNiAr MTczLDE5IEBAIGx1YVRfaHR0cGNfcmVxdWVzdChsdWFfU3RhdGUgKkwpCiAJaWYgKCFsdWFfaXNu aWwoTCwgLTEpKSB7CiAJCWx1YV9wdXNobmlsKEwpOwogCQl3aGlsZSAobHVhX25leHQoTCwgLTIp ICE9IDApIHsKKwkJCWludCBoZWFkZXJfdHlwZSA9IGx1YV90eXBlKEwsIC0xKTsKKwkJCWlmICho ZWFkZXJfdHlwZSAhPSBMVUFfVFNUUklORykgeworCQkJCWNvbnN0IGNoYXIgKmVycl9tc2cgPQor CQkJCQkiaGVhZGVycyBtdXN0IGJlIHN0cmluZyBvciB0YWJsZSAiXAorCQkJCQkid2l0aCBcIl9f dG9zdHJpbmdcIiI7CisJCQkJaWYgKGhlYWRlcl90eXBlICE9IExVQV9UVEFCTEUpIHsKKwkJCQkJ cmV0dXJuIGx1YUxfZXJyb3IoTCwgZXJyX21zZyk7CisJCQkJfSBlbHNlIGlmICghbHVhTF9nZXRt ZXRhZmllbGQoTCwgLTEsCisJCQkJCQkJICAgICAgIl9fdG9zdHJpbmciKSkgeworCQkJCQlyZXR1 cm4gbHVhTF9lcnJvcihMLCBlcnJfbXNnKTsKKwkJCQl9CisJCQkJbHVhX3BvcChMLCAxKTsKKwkJ CX0KIAkJCWlmIChodHRwY19zZXRfaGVhZGVyKHJlcSwgIiVzOiAlcyIsCiAJCQkJCSAgICAgbHVh X3Rvc3RyaW5nKEwsIC0yKSwKIAkJCQkJICAgICBsdWFfdG9zdHJpbmcoTCwgLTEpKSAmbHQ7IDAp IHsKZGlmZiAtLWdpdCBhL3Rlc3QvYXBwLXRhcC9odHRwX2NsaWVudC50ZXN0Lmx1YSBiL3Rlc3Qv YXBwLXRhcC9odHRwX2NsaWVudC50ZXN0Lmx1YQppbmRleCAxMGEzNzI4ZjguLjhhOThkMWU5MiAx MDA3NTUKLS0tIGEvdGVzdC9hcHAtdGFwL2h0dHBfY2xpZW50LnRlc3QubHVhCisrKyBiL3Rlc3Qv YXBwLXRhcC9odHRwX2NsaWVudC50ZXN0Lmx1YQpAQCAtMjA1LDYgKzIwNSw4MCBAQCBsb2NhbCBm dW5jdGlvbiB0ZXN0X2Vycm9ycyh0ZXN0KQogICAgIHRlc3Q6aXMoci5zdGF0dXMsIDU5NSwgIkdF VDogcmVzcG9uc2Ugb24gYmFkIHVybCIpCiBlbmQKIAorLS0gZ2gtMzY3OSBhbGxvdyBvbmx5IGhl YWRlcnMgY2FuIGJlIGNvbnZlcnRlZCB0byBzdHJpbmcKK2xvY2FsIGZ1bmN0aW9uIHRlc3RfcmVx dWVzdF9oZWFkZXJzKHRlc3QsIHVybCwgb3B0cykKKyAgICBsb2NhbCBleHBfZXJyID0gJ2hlYWRl cnMgbXVzdCBiZSBzdHJpbmcgb3IgdGFibGUgd2l0aCAiX190b3N0cmluZyInCisgICAgbG9jYWwg Y2FzZXMgPSB7CisgICAgICAgIHsKKyAgICAgICAgICAgICdzdHJpbmcgaGVhZGVyJywKKyAgICAg ICAgICAgIG9wdHMgPSB7aGVhZGVycyA9IHthYWEgPSAnYWFhJ319LAorICAgICAgICAgICAgZXhw X2VyciA9IG5pbCwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgJ2hlYWRlciB3 aXRoIF9fdG9zdHJpbmcoKSBtZXRhbWV0aG9kJywKKyAgICAgICAgICAgIG9wdHMgPSB7aGVhZGVy cyA9IHthYWEgPSBzZXRtZXRhdGFibGUoe30sIHsKKyAgICAgICAgICAgICAgICBfX3Rvc3RyaW5n ID0gZnVuY3Rpb24oc2VsZikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdhYWEnCisgICAg ICAgICAgICAgICAgZW5kfSl9fSwKKyAgICAgICAgICAgIGV4cF9lcnIgPSBuaWwsCisgICAgICAg ICAgICBwb3N0cmVxdWVzdF9jaGVjayA9IGZ1bmN0aW9uKG9wdHMpCisgICAgICAgICAgICAgICAg YXNzZXJ0KHR5cGUob3B0cy5oZWFkZXJzLmFhYSkgPT0gJ3RhYmxlJywKKyAgICAgICAgICAgICAg ICAgICAgJyJhYWEiIGhlYWRlciB3YXMgbW9kaWZpZWQgaW4gaHR0cF9jbGllbnQnKQorICAgICAg ICAgICAgZW5kLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAnYm9vbGVhbiBo ZWFkZXInLAorICAgICAgICAgICAgb3B0cyA9IHtoZWFkZXJzID0ge2FhYSA9IHRydWV9fSwKKyAg ICAgICAgICAgIGV4cF9lcnIgPSBleHBfZXJyLAorICAgICAgICB9LAorICAgICAgICB7CisgICAg ICAgICAgICAnbnVtYmVyIGhlYWRlcicsCisgICAgICAgICAgICBvcHRzID0ge2hlYWRlcnMgPSB7 YWFhID0gMTB9fSwKKyAgICAgICAgICAgIGV4cF9lcnIgPSBleHBfZXJyLAorICAgICAgICB9LAor ICAgICAgICB7CisgICAgICAgICAgICAnY2RhdGEgaGVhZGVyIChib3guTlVMTCknLAorICAgICAg ICAgICAgb3B0cyA9IHtoZWFkZXJzID0ge2FhYSA9IGJveC5OVUxMfX0sCisgICAgICAgICAgICBl eHBfZXJyID0gZXhwX2VyciwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgJ2Nk YXRhJmx0O3VpbnQ2NF90Jmd0OyBoZWFkZXInLAorICAgICAgICAgICAgb3B0cyA9IHtoZWFkZXJz ID0ge2FhYSA9IDEwVUxMfX0sCisgICAgICAgICAgICBleHBfZXJyID0gZXhwX2VyciwKKyAgICAg ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgJ3RhYmxlIGhlYWRlciB3L28gbWV0YXRhYmxl JywKKyAgICAgICAgICAgIG9wdHMgPSB7aGVhZGVycyA9IHthYWEgPSB7fX19LAorICAgICAgICAg ICAgZXhwX2VyciA9IGV4cF9lcnIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg ICd0YWJsZSBoZWFkZXIgdy9vIF9fdG9zdHJpbmcoKSBtZXRhbWV0aG9kJywKKyAgICAgICAgICAg IG9wdHMgPSB7aGVhZGVycyA9IHthYWEgPSBzZXRtZXRhdGFibGUoe30sIHt9KX19LAorICAgICAg ICAgICAgZXhwX2VyciA9IGV4cF9lcnIsCisgICAgICAgIH0sCisgICAgfQorICAgIHRlc3Q6cGxh bigjY2FzZXMpCisKKyAgICBsb2NhbCBodHRwID0gY2xpZW50Om5ldygpCisKKyAgICBmb3IgXywg Y2FzZSBpbiBpcGFpcnMoY2FzZXMpIGRvCisgICAgICAgIGxvY2FsIG9wdHMgPSBtZXJnZSh0YWJs ZS5jb3B5KG9wdHMpLCBjYXNlLm9wdHMpCisgICAgICAgIGxvY2FsIG9rLCBlcnIgPSBwY2FsbCho dHRwLmdldCwgaHR0cCwgdXJsLCBvcHRzKQorICAgICAgICBpZiBjYXNlLnBvc3RyZXF1ZXN0X2No ZWNrIH49IG5pbCB0aGVuCisgICAgICAgICAgICBjYXNlLnBvc3RyZXF1ZXN0X2NoZWNrKG9wdHMp CisgICAgICAgIGVuZAorICAgICAgICBpZiBjYXNlLmV4cF9lcnIgPT0gbmlsIHRoZW4KKyAgICAg ICAgICAgIC0tIGV4cGVjdCBzdWNjZXNzCisgICAgICAgICAgICB0ZXN0Om9rKG9rLCBjYXNlWzFd KQorICAgICAgICBlbHNlCisgICAgICAgICAgICAtLSBleHBlY3QgZmFpbAorICAgICAgICAgICAg YXNzZXJ0KHR5cGUoZXJyKSA9PSAnc3RyaW5nJykKKyAgICAgICAgICAgIGVyciA9IGVycjpnc3Vi KCdeYnVpbHRpbi9bYS16Ll9dKy5sdWE6WzAtOV0rOiAnLCAnJykKKyAgICAgICAgICAgIHRlc3Q6 aXNfZGVlcGx5KHtvaywgZXJyfSwge2ZhbHNlLCBjYXNlLmV4cF9lcnJ9LCBjYXNlWzFdKQorICAg ICAgICBlbmQKKyAgICBlbmQKK2VuZAorCiBsb2NhbCBmdW5jdGlvbiB0ZXN0X2hlYWRlcnModGVz dCwgdXJsLCBvcHRzKQogICAgIHRlc3Q6cGxhbigxOSkKICAgICBsb2NhbCBodHRwID0gY2xpZW50 Om5ldygpCkBAIC0zOTcsMTIgKzQ3MSwxMyBAQCBsb2NhbCBmdW5jdGlvbiB0ZXN0X2NvbmN1cnJl bnQodGVzdCwgdXJsLCBvcHRzKQogZW5kCiAKIGZ1bmN0aW9uIHJ1bl90ZXN0cyh0ZXN0LCBzb2Nr X2ZhbWlseSwgc29ja19hZGRyKQotICAgIHRlc3Q6cGxhbig5KQorICAgIHRlc3Q6cGxhbigxMCkK ICAgICBsb2NhbCBzZXJ2ZXIsIHVybCwgb3B0cyA9IHN0YXJ0X3NlcnZlcih0ZXN0LCBzb2NrX2Zh bWlseSwgc29ja19hZGRyKQogICAgIHRlc3Q6dGVzdCgiaHR0cC5jbGllbnQiLCB0ZXN0X2h0dHBf Y2xpZW50LCB1cmwsIG9wdHMpCiAgICAgdGVzdDp0ZXN0KCJjYW5jZWwgYW5kIGVycmluaiIsIHRl c3RfY2FuY2VsX2FuZF9lcnJpbmosIHVybCAuLiAnbG9uZ19xdWVyeScsIG9wdHMpCiAgICAgdGVz dDp0ZXN0KCJiYXNpYyBodHRwIHBvc3QvZ2V0IiwgdGVzdF9wb3N0X2FuZF9nZXQsIHVybCwgb3B0 cykKICAgICB0ZXN0OnRlc3QoImVycm9ycyIsIHRlc3RfZXJyb3JzKQorICAgIHRlc3Q6dGVzdCgi cmVxdWVzdF9oZWFkZXJzIiwgdGVzdF9yZXF1ZXN0X2hlYWRlcnMsIHVybCwgb3B0cykKICAgICB0 ZXN0OnRlc3QoImhlYWRlcnMiLCB0ZXN0X2hlYWRlcnMsIHVybCwgb3B0cykKICAgICB0ZXN0OnRl c3QoInNwZWNpYWwgbWV0aG9kcyIsIHRlc3Rfc3BlY2lhbF9tZXRob2RzLCB1cmwsIG9wdHMpCiAg ICAgaWYgc29ja19mYW1pbHkgPT0gJ0FGX1VOSVgnIGFuZCBqaXQub3Mgfj0gIkxpbnV4IiB0aGVu Cgo8L3ByZT48L3ByZT4KICA8L2JvZHk+CjwvaHRtbD4K --------------C608F9092F7FCD2616C2E2E8--