Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oBidN-0006qX-PV for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Jul 2022 20:06:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oBicN-0006Oe-6b for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Jul 2022 20:05:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oBicM-0006OS-3N for pgsql-hackers@lists.postgresql.org; Wed, 13 Jul 2022 20:05:54 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oBicD-0001pJ-SI for pgsql-hackers@lists.postgresql.org; Wed, 13 Jul 2022 20:05:53 +0000 Received: from [192.168.28.32] (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id B2B1021C024B; Wed, 13 Jul 2022 23:05:43 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1657742743; bh=rJDbj74woA/J9sSvKQM7hxVeeh/wqSZjSprJtPstRtY=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=hk61chXsJN2vtpCecyaKYkgFWFR4K6FKZ55FmC3lgNmdshc030y1xWxwec+nSdJjc Q0usDjm8f93giei0m7+QCF8YKcTPRyI3bdW+d6tZOmGLCKIot6LYgUfcY/7vD3mjex n/NvwkseMs9NG0EyQ5O5qEf5MXiNkWNnsqzRB5Ko= Content-Type: multipart/mixed; boundary="------------Gs8rpbvV92qHjyBScDlRbkEZ" Message-ID: <2289dab9-1f2b-f46a-a0da-3b61223a2897@postgrespro.ru> Date: Wed, 13 Jul 2022 23:05:44 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands Content-Language: en-US To: Zhihong Yu Cc: PostgreSQL Hackers References: <163714495450.16056.3566953095730878367@malur.postgresql.org> <82ed3466-9855-ccd6-e2a3-a3a92166ff01@postgrespro.ru> From: Dmitry Koval In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Gs8rpbvV92qHjyBScDlRbkEZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Thanks you! I've fixed all things mentioned. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------Gs8rpbvV92qHjyBScDlRbkEZ Content-Type: text/plain; charset=UTF-8; name="v5-0001-partitions-split-merge.patch" Content-Disposition: attachment; filename="v5-0001-partitions-split-merge.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjI5NDdlYTliNDkuLmM2YThmZmZh NjBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNjM1LDYgKzYzNSwxMSBA QCBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBw YXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0 dHR5cGlkLCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVT dG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCitzdGF0 aWMgdm9pZCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsCisJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21k LAorCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNt ZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoJCURlZmluZVJlbGF0aW9uCkBAIC00Mzg3LDYgKzQzOTIsMTQgQEAgQWx0ZXJUYWJs ZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBk YXRlRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRp dGlvbjoKKwkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQljbWRfbG9ja21vZGUg PSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQljYXNlIEFUX0NoZWNr Tm90TnVsbDoKIAogCQkJCS8qCkBAIC00ODA3LDYgKzQ4MjAsMTYgQEAgQVRQcmVwQ21kKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyog Tm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1Nf TUlTQzsKIAkJCWJyZWFrOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJQVRTaW1w bGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFKTsKKwkJCS8qIE5v IGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01J U0M7CisJCQlicmVhazsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBs ZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJLyogTm8g Y29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21k LT5zdWJ0eXBlKTsKQEAgLTUyMTIsNiArNTIzNSwyMiBAQCBBVEV4ZWNDbWQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlv bkZpbmFsaXplOgogCQkJQVRFeGVjRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBh cnRpdGlvbkNtZCAqKSBjbWQtPmRlZiktPm5hbWUpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRf U3BsaXRQYXJ0aXRpb246CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwg dGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJICBjdXJfcGFzcywg Y29udGV4dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNzZXJ0KHJlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJQVRFeGVj U3BsaXRQYXJ0aXRpb24od3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQt PmRlZiwKKwkJCQkJCQkJIGNvbnRleHQpOworCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQ YXJ0aXRpb25zOgorCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwg cmVsLCBjbWQsIGZhbHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRl eHQpOworCQkJQXNzZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+ cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY01lcmdl UGFydGl0aW9ucyh3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVm LAorCQkJCQkJCQkgIGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9v cHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTog JWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjIwMCw2ICs2MjM5LDEwIEBA IGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJ CQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlv bkZpbmFsaXplOgogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7 CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlyZXR1cm4gIlNQTElUIFBBUlRJVElP TiI7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJuICJNRVJHRSBQQVJU SVRJT05TIjsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09M VU1OIC4uLiBBREQgSURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMTc2 MjMsNiArMTc2NjYsMzcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50VmFsaWRhdGlvbihM aXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAorLyoKKyAqIGF0dGFj aFBhcnRpdGlvblRhYmxlOiBhdHRhY2ggbmV3IHBhcnRpdGlvbiB0byBwYXJ0aXRpb25lZCB0 YWJsZQorICoKKyAqIHdxdWV1ZTogdGhlIEFMVEVSIFRBQkxFIHdvcmsgcXVldWU7IGNhbiBi ZSBOVUxMIHdoZW4gbm90IHJ1bm5pbmcgYXMgcGFydAorICogICBvZiBhbiBBTFRFUiBUQUJM RSBzZXF1ZW5jZS4KKyAqIHJlbDogcGFydGl0aW9uZWQgcmVsYXRpb247CisgKiBwYXJ0aXRp b246IHJlbGF0aW9uIG9mIGF0dGFjaGVkIHBhcnRpdGlvbjsKKyAqIGJvdW5kOiBib3VuZHMg b2YgYXR0YWNoZWQgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCithdHRhY2hQYXJ0aXRp b25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBhcnRpdGlv biwgUGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKK3sKKwkvKiBPSyB0byBjcmVhdGUgaW5o ZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICovCisJQ3Jl YXRlSW5oZXJpdGFuY2UocGFydGl0aW9uLCByZWwpOworCisJLyogVXBkYXRlIHRoZSBwZ19j bGFzcyBlbnRyeS4gKi8KKwlTdG9yZVBhcnRpdGlvbkJvdW5kKHBhcnRpdGlvbiwgcmVsLCBi b3VuZCk7CisKKwkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVjdCBzZXQgb2YgaW5k ZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLworCUF0dGFjaFBhcnRpdGlvbkVuc3VyZUluZGV4 ZXMocmVsLCBwYXJ0aXRpb24pOworCisJLyogYW5kIHRyaWdnZXJzICovCisJQ2xvbmVSb3dU cmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgcGFydGl0aW9uKTsKKworCS8qCisJICogQ2xvbmUg Zm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNl dHRpbmcgdXAKKwkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50IHZlcmlmaWNhdGlvbi4KKwkg Ki8KKwlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVldWUsIHJlbCwgcGFydGl0aW9u KTsKK30KKwogLyoKICAqIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDxw YXJ0aXRpb24tbmFtZT4gRk9SIFZBTFVFUwogICoKQEAgLTE3ODE1LDIzICsxNzg4OSw4IEBA IEFURXhlY0F0dGFjaFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFBh cnRpdGlvbkNtZCAqY21kLAogCWNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVsKSwgcmVsLAogCQkJCQkJCSAgY21kLT5ib3VuZCwg cHN0YXRlKTsKIAotCS8qIE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhl IGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KLQlDcmVhdGVJbmhlcml0YW5jZShhdHRhY2hy ZWwsIHJlbCk7Ci0KLQkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLwotCVN0b3Jl UGFydGl0aW9uQm91bmQoYXR0YWNocmVsLCByZWwsIGNtZC0+Ym91bmQpOwotCi0JLyogRW5z dXJlIHRoZXJlIGV4aXN0cyBhIGNvcnJlY3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRp dGlvbi4gKi8KLQlBdHRhY2hQYXJ0aXRpb25FbnN1cmVJbmRleGVzKHJlbCwgYXR0YWNocmVs KTsKLQotCS8qIGFuZCB0cmlnZ2VycyAqLwotCUNsb25lUm93VHJpZ2dlcnNUb1BhcnRpdGlv bihyZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKgotCSAqIENsb25lIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwCi0JICogZm9y IHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24uCi0JICovCi0JQ2xvbmVGb3JlaWdu S2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisJLyogQXR0YWNoIHBh cnRpdGlvbiB0byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlhdHRhY2hQYXJ0aXRpb25UYWJs ZSh3cXVldWUsIHJlbCwgYXR0YWNocmVsLCBjbWQtPmJvdW5kKTsKIAogCS8qCiAJICogR2Vu ZXJhdGUgcGFydGl0aW9uIGNvbnN0cmFpbnQgZnJvbSB0aGUgcGFydGl0aW9uIGJvdW5kIHNw ZWNpZmljYXRpb24uCkBAIC0xOTI5NywzICsxOTM1Niw2NjEgQEAgR2V0QXR0cmlidXRlU3Rv cmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKQogCiAJcmV0dXJu IGNzdG9yYWdlOwogfQorCisvKgorICogU3RydWN0IHdpdGggY29udGV4dCBvZiBuZXcgcGFy dGl0aW9uIGZvciBpbnNlcnQgcm93cyBmcm9tIHNwbGl0ZWQgcGFydGl0aW9uCisgKi8KK3R5 cGVkZWYgc3RydWN0IFNwbGl0UGFydGl0aW9uQ29udGV4dAoreworCUV4cHJTdGF0ZSAgKnBh cnRxdWFsc3RhdGU7CS8qIGV4cHJlc3Npb24gZm9yIGNoZWNrIHNsb3QgZm9yIHBhcnRpdGlv bgorCQkJCQkJCQkgKiAoTlVMTCBmb3IgREVGQVVMVCBwYXJ0aXRpb24pICovCisJQnVsa0lu c2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsgaW5zZXJ0cyBmb3IgcGFydGl0 aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CS8qIHNsb3QgZm9yIGluc2VydCBy b3cgaW50byBwYXJ0aXRpb24gKi8KKwlSZWxhdGlvbglwYXJ0UmVsOwkJLyogcmVsYXRpb24g Zm9yIHBhcnRpdGlvbiAqLworfQkJCVNwbGl0UGFydGl0aW9uQ29udGV4dDsKKworCisvKgor ICogY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29udGV4dCBmb3IgcGFy dGl0aW9uIGFuZCBmaWxsIGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRpdGlvbkNvbnRleHQg KgorY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBhcnRSZWwpCit7CisJ U3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29u dGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRleHQpKTsKKwlwYy0+ cGFydFJlbCA9IHBhcnRSZWw7CisKKwkvKgorCSAqIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3Rh dGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gVGhlIEZTTSBpcyBlbXB0eSwgc28KKwkgKiBk b24ndCBib3RoZXIgdXNpbmcgaXQuCisJICovCisJcGMtPmJpc3RhdGUgPSBHZXRCdWxrSW5z ZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBuZXcgcGFydGl0aW9u LiAqLworCXBjLT5kc3RzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9u R2V0RGVzY3IocGMtPnBhcnRSZWwpLAorCQkJCQkJCQkJCSAgIHRhYmxlX3Nsb3RfY2FsbGJh Y2tzKHBjLT5wYXJ0UmVsKSk7CisJRXhlY1N0b3JlQWxsTnVsbFR1cGxlKHBjLT5kc3RzbG90 KTsKKworCXJldHVybiBwYzsKK30KKworLyoKKyAqIGRlbGV0ZVNwbGl0UGFydGl0aW9uQ29u dGV4dDogZGVsZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgorICovCitzdGF0aWMgdm9pZAor ZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAqIHBj LCBpbnQgdGlfb3B0aW9ucykKK3sKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHBj LT5kc3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKHBjLT5iaXN0YXRlKTsKKworCXRh YmxlX2ZpbmlzaF9idWxrX2luc2VydChwYy0+cGFydFJlbCwgdGlfb3B0aW9ucyk7CisKKwlw ZnJlZShwYyk7Cit9CisKKy8qCisgKiBtb3ZlU3BsaXRUYWJsZVJvd3M6IHNjYW4gc3BsaXQg cGFydGl0aW9uIChzcGxpdFJlbCkgb2YgcGFydGl0aW9uZWQgdGFibGUKKyAqIChyZWwpIGFu ZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9ucy4KKyAqCisgKiBOZXcgcGFydGl0aW9u cyBkZXNjcmlwdGlvbjoKKyAqIHBhcnRsaXN0OiBsaXN0IG9mIHBvaW50ZXJzIHRvIFNpbmds ZVBhcnRpdGlvblNwZWMgc3RydWN0dXJlcy4KKyAqIG5ld1BhcnRSZWxzOiBsaXN0IG9mIFJl bGF0aW9uJ3MuCisgKiBkZWZhdWx0UGFydE9pZDogb2lkIG9mIERFRkFVTFQgcGFydGl0aW9u LCBmb3IgdGFibGUgcmVsLgorICovCitzdGF0aWMgdm9pZAorbW92ZVNwbGl0VGFibGVSb3dz KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsIExpc3QgKnBhcnRsaXN0LCBMaXN0 ICpuZXdQYXJ0UmVscywgT2lkIGRlZmF1bHRQYXJ0T2lkKQoreworCS8qIFRoZSBGU00gaXMg ZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4gKi8KKwlpbnQJCQl0aV9vcHRpb25z ID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOworCUNvbW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJ ICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOwor CVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwlU YWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJc25hcHNob3Q7CisJTWVtb3J5Q29udGV4 dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRleHRzID0gTklMOworCVR1cGxlQ29udmVy c2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqZGVmYXVsdFBh cnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCWJvb2wJCWlzT2xkRGVmYXVsdFBhcnQgPSBm YWxzZTsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCWVzdGF0 ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWZvcmJvdGgobGlzdHB0ciwgcGFydGxp c3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMg KnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQlw YyA9IGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dCgoUmVsYXRpb24pIGxmaXJzdChsaXN0 cHRyMikpOworCisJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0KQorCQl7CisJCQkvKiBX ZSBzaG91bGQgbm90IGNyZWF0ZSBjb25zdHJhaW50IGZvciBkZXRhY2hlZCBERUZBVUxUIHBh cnRpdGlvbi4gKi8KKwkJCWRlZmF1bHRQYXJ0Q3R4ID0gcGM7CisJCX0KKwkJZWxzZQorCQl7 CisJCQlMaXN0CSAgICpwYXJ0Q29uc3RyYWludDsKKworCQkJLyogQnVpbGQgZXhwcmVzc2lv biBleGVjdXRpb24gc3RhdGVzIGZvciBwYXJ0aXRpb24gY2hlY2sgcXVhbHMuICovCisJCQlw YXJ0Q29uc3RyYWludCA9IGdldF9xdWFsX2Zyb21fcGFydGJvdW5kKHJlbCwgc3BzLT5ib3Vu ZCk7CisJCQlwYXJ0Q29uc3RyYWludCA9CisJCQkJKExpc3QgKikgZXZhbF9jb25zdF9leHBy ZXNzaW9ucyhOVUxMLAorCQkJCQkJCQkJCQkJKE5vZGUgKikgcGFydENvbnN0cmFpbnQpOwor CQkJLyogTWFrZSBib29sZWFuIGV4cHJlc3Npb24gZm9yIEV4ZWNDaGVjaygpLiAqLworCQkJ cGFydENvbnN0cmFpbnQgPSBsaXN0X21ha2UxKG1ha2VfYW5kc19leHBsaWNpdChwYXJ0Q29u c3RyYWludCkpOworCisJCQkvKgorCQkJICogTWFwIHRoZSB2YXJzIGluIHRoZSBjb25zdHJh aW50IGV4cHJlc3Npb24gZnJvbSByZWwncyBhdHRub3MgdG8KKwkJCSAqIHNwbGl0UmVsJ3Mu CisJCQkgKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbWFwX3BhcnRpdGlvbl92YXJhdHRub3Mo cGFydENvbnN0cmFpbnQsCisJCQkJCQkJCQkJCQkJIDEsIHNwbGl0UmVsLCByZWwpOworCisJ CQlwYy0+cGFydHF1YWxzdGF0ZSA9CisJCQkJRXhlY1ByZXBhcmVFeHByKChFeHByICopIGxp bml0aWFsKHBhcnRDb25zdHJhaW50KSwgZXN0YXRlKTsKKwkJCUFzc2VydChwYy0+cGFydHF1 YWxzdGF0ZSAhPSBOVUxMKTsKKwkJfQorCisJCS8qIFN0b3JlIHBhcnRpdGlvbiBjb250ZXh0 IGludG8gbGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFwcGVuZChwYXJ0Q29udGV4dHMs IHBjKTsKKwl9CisKKwkvKgorCSAqIENyZWF0ZSBwYXJ0aXRpb24gY29udGV4dCBmb3IgREVG QVVMVCBwYXJ0aXRpb24uIFdlIGNhbiBpbnNlcnQgdmFsdWVzCisJICogaW50byB0aGlzIHBh cnRpdGlvbiBpbiBjYXNlIHNwYWNlcyB3aXRoIHZhbHVlcyBiZXR3ZWVuIG5ldyBwYXJ0aXRp b25zLgorCSAqLworCWlmICghZGVmYXVsdFBhcnRDdHggJiYgT2lkSXNWYWxpZChkZWZhdWx0 UGFydE9pZCkpCisJeworCQkvKiBJbmRpY2F0ZSB0aGF0IHdlIGFsbG9jYXRlIGNvbnRleHQg Zm9yIG9sZCBERUZBVUxUIHBhcnRpdGlvbiAqLworCQlpc09sZERlZmF1bHRQYXJ0ID0gdHJ1 ZTsKKwkJZGVmYXVsdFBhcnRDdHggPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQodGFi bGVfb3BlbihkZWZhdWx0UGFydE9pZCwgQWNjZXNzRXhjbHVzaXZlTG9jaykpOworCX0KKwor CWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOworCisJLyogQ3Jl YXRlIG5lY2Vzc2FyeSB0dXBsZSBzbG90LiAqLworCXNyY3Nsb3QgPSBNYWtlU2luZ2xlVHVw bGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihzcGxpdFJlbCksCisJCQkJCQkJCQkgICB0 YWJsZV9zbG90X2NhbGxiYWNrcyhzcGxpdFJlbCkpOworCisJLyoKKwkgKiBNYXAgY29tcHV0 aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBvZiBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBh cnRpdGlvbgorCSAqIChmb3IgZmlyc3QgbmV3IHBhcnRpdGlvbiBidXQgb3RoZXIgbmV3IHBh cnRpdGlvbnMgY2FuIHVzZSB0aGUgc2FtZQorCSAqIG1hcCkuCisJICovCisJcGMgPSAoU3Bs aXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0X2hlYWQocGFydENvbnRleHRzKSk7 CisJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShSZWxhdGlvbkdldERlc2Ny KHNwbGl0UmVsKSwKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwp KTsKKworCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihzcGxpdFJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCisJLyoKKwkgKiBTd2l0Y2gg dG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBs ZQorCSAqIHByb2R1Y2VkLCBzbyB3ZSBkb24ndCBsZWFrIG1lbW9yeS4KKwkgKi8KKwlvbGRD eHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVz dGF0ZSkpOworCisJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2Fy ZFNjYW5EaXJlY3Rpb24sIHNyY3Nsb3QpKQorCXsKKwkJU3BsaXRQYXJ0aXRpb25Db250ZXh0 ICpwYzsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJVHVwbGVUYWJsZVNsb3QgKmluc2Vy dHNsb3Q7CisKKwkJLyogRXh0cmFjdCBkYXRhIGZyb20gb2xkIHR1cGxlLiAqLworCQlzbG90 X2dldGFsbGF0dHJzKHNyY3Nsb3QpOworCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9 IHNyY3Nsb3Q7CisKKwkJLyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgY3VycmVudCBzbG90IHNy Y3Nsb3QuICovCisJCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQorCQl7CisJCQlw YyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCQlp ZiAocGMtPnBhcnRxdWFsc3RhdGUgLyogc2tpcCBERUZBVUxUIHBhcnRpdGlvbiAqLyAmJgor CQkJCUV4ZWNDaGVjayhwYy0+cGFydHF1YWxzdGF0ZSwgZWNvbnRleHQpKQorCQkJeworCQkJ CWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCVJlc2V0RXhwckNvbnRleHQo ZWNvbnRleHQpOworCQl9CisJCWlmICghZm91bmQpCisJCXsKKwkJCS8qIFVzZSBERUZBVUxU IHBhcnRpdGlvbiBpZiBpdCBleGlzdHMuICovCisJCQlpZiAoZGVmYXVsdFBhcnRDdHgpCisJ CQkJcGMgPSBkZWZhdWx0UGFydEN0eDsKKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DSEVDS19WSU9MQVRJT04pLAorCQkJCQkJIGVycm1z ZygiY2FuIG5vdCBmaW5kIHBhcnRpdGlvbiBmb3Igc3BsaXQgcGFydGl0aW9uIHJvdyIpLAor CQkJCQkJIGVycnRhYmxlKHNwbGl0UmVsKSkpOworCQl9CisKKwkJaWYgKHR1cGxlX21hcCkK KwkJeworCQkJLyogTmVlZCB0byB1c2UgbWFwIGZvciBjb3B5IGF0dHJpYnV0ZXMuICovCisJ CQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1h cCwgc3Jjc2xvdCwgcGMtPmRzdHNsb3QpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogQ29w eSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAqLworCQkJaW5zZXJ0c2xvdCA9IHBjLT5kc3RzbG90 OworCisJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsKKworCQkJbWVtY3B5KGluc2Vy dHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJCQkJICAgc2l6ZW9m KERhdHVtKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCQkJbWVtY3B5KGluc2VydHNsb3Qt PnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGwsCisJCQkJICAgc2l6ZW9mKGJvb2wp ICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShp bnNlcnRzbG90KTsKKwkJfQorCisJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5l dyByZWxhdGlvbi4gKi8KKwkJdGFibGVfdHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVsLCBpbnNl cnRzbG90LCBteWNpZCwgdGlfb3B0aW9ucywgcGMtPmJpc3RhdGUpOworCisJCVJlc2V0RXhw ckNvbnRleHQoZWNvbnRleHQpOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQor CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN4dCk7CisKKwl0YWJsZV9lbmRzY2FuKHNj YW4pOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwlpZiAodHVwbGVfbWFw KQorCQlmcmVlX2NvbnZlcnNpb25fbWFwKHR1cGxlX21hcCk7CisKKwlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRl KTsKKworCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQorCQlkZWxldGVTcGxpdFBh cnRpdGlvbkNvbnRleHQoKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0 ciksIHRpX29wdGlvbnMpOworCisJLyogTmVlZCB0byBjbG9zZSB0YWJsZSBhbmQgZnJlZSBi dWZmZXJzIGZvciBERUZBVUxUIHBhcnRpdGlvbi4gKi8KKwlpZiAoaXNPbGREZWZhdWx0UGFy dCkKKwl7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9j bG9zZShkZWZhdWx0UGFydEN0eC0+cGFydFJlbCwgTm9Mb2NrKTsKKwkJZGVsZXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0KGRlZmF1bHRQYXJ0Q3R4LCB0aV9vcHRpb25zKTsKKwl9Cit9CisK Ky8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZTogY3JlYXRlIHRhYmxlIGZvciBuZXcgcGFy dGl0aW9uIHdpdGggZ2l2ZW4gbmFtZQorICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxlICht b2RlbFJlbE5hbWUpCisgKgorICogRW11bGF0ZXMgY29tbWFuZDogQ1JFQVRFIFRBQkxFIDxu ZXdQYXJ0TmFtZT4gKExJS0UgPG1vZGVsUmVsTmFtZT4KKyAqIElOQ0xVRElORyBBTEwgRVhD TFVESU5HIElOREVYRVMpCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVQYXJ0aXRpb25UYWJs ZShSYW5nZVZhciAqbmV3UGFydE5hbWUsIFJhbmdlVmFyICptb2RlbFJlbE5hbWUsCisJCQkJ CSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJQ3JlYXRlU3RtdCAq Y3JlYXRlU3RtdDsKKwlUYWJsZUxpa2VDbGF1c2UgKnRsYzsKKwlQbGFubmVkU3RtdCAqd3Jh cHBlcjsKKworCWNyZWF0ZVN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsKKwljcmVhdGVT dG10LT5yZWxhdGlvbiA9IG5ld1BhcnROYW1lOworCWNyZWF0ZVN0bXQtPnRhYmxlRWx0cyA9 IE5JTDsKKwljcmVhdGVTdG10LT5pbmhSZWxhdGlvbnMgPSBOSUw7CisJY3JlYXRlU3RtdC0+ Y29uc3RyYWludHMgPSBOSUw7CisJY3JlYXRlU3RtdC0+b3B0aW9ucyA9IE5JTDsKKwljcmVh dGVTdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisJY3JlYXRlU3RtdC0+dGFibGVz cGFjZW5hbWUgPSBOVUxMOworCWNyZWF0ZVN0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsK KworCXRsYyA9IG1ha2VOb2RlKFRhYmxlTGlrZUNsYXVzZSk7CisJdGxjLT5yZWxhdGlvbiA9 IG1vZGVsUmVsTmFtZTsKKworCS8qCisJICogSW5kZXhlcyB3aWxsIGJlIGluaGVyaXRlZCBv biAiYXR0YWNoIG5ldyBwYXJ0aXRpb25zIiBzdGFnZSwgYWZ0ZXIgZGF0YQorCSAqIG1vdmlu Zy4KKwkgKi8KKwl0bGMtPm9wdGlvbnMgPSBDUkVBVEVfVEFCTEVfTElLRV9BTEwgJiB+Q1JF QVRFX1RBQkxFX0xJS0VfSU5ERVhFUzsKKwl0bGMtPnJlbGF0aW9uT2lkID0gSW52YWxpZE9p ZDsKKwljcmVhdGVTdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKGNyZWF0ZVN0bXQtPnRhYmxl RWx0cywgdGxjKTsKKworCS8qIE5lZWQgdG8gbWFrZSBhIHdyYXBwZXIgUGxhbm5lZFN0bXQu ICovCisJd3JhcHBlciA9IG1ha2VOb2RlKFBsYW5uZWRTdG10KTsKKwl3cmFwcGVyLT5jb21t YW5kVHlwZSA9IENNRF9VVElMSVRZOworCXdyYXBwZXItPmNhblNldFRhZyA9IGZhbHNlOwor CXdyYXBwZXItPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgY3JlYXRlU3RtdDsKKwl3cmFwcGVy LT5zdG10X2xvY2F0aW9uID0gY29udGV4dC0+cHN0bXQtPnN0bXRfbG9jYXRpb247CisJd3Jh cHBlci0+c3RtdF9sZW4gPSBjb250ZXh0LT5wc3RtdC0+c3RtdF9sZW47CisKKwlQcm9jZXNz VXRpbGl0eSh3cmFwcGVyLAorCQkJCSAgIGNvbnRleHQtPnF1ZXJ5U3RyaW5nLAorCQkJCSAg IGZhbHNlLAorCQkJCSAgIFBST0NFU1NfVVRJTElUWV9TVUJDT01NQU5ELAorCQkJCSAgIE5V TEwsCisJCQkJICAgTlVMTCwKKwkJCQkgICBOb25lX1JlY2VpdmVyLAorCQkJCSAgIE5VTEwp OworfQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFy dGl0aW9uLW5hbWU+IElOVE8gPHBhcnRpdGlvbi1saXN0PgorICovCitzdGF0aWMgdm9pZAor QVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJs ZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCXNwbGl0UmVsOworCU9p ZAkJCXNwbGl0UmVsT2lkOworCWNoYXIJCXJlbG5hbWVbTkFNRURBVEFMRU5dOworCU9pZAkJ CW5hbWVzcGFjZUlkOworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7 CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURB VEFMRU5dOworCUxpc3QJICAgKm5ld1BhcnRSZWxzID0gTklMOworCU9iamVjdEFkZHJlc3Mg b2JqZWN0OworCVJhbmdlVmFyICAgKnNwbGl0UGFydE5hbWUgPSBjbWQtPm5hbWU7CisJT2lk CQkJZGVmYXVsdFBhcnRPaWQ7CisKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29p ZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsK KworCS8qCisJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFy dGl0aW9uOiBuZWVkIHRvIHVzZSBleGNsdXNpdmUKKwkgKiBsb2NrIGZvciBwcmV2ZW50IERN TC1xdWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJsZV9v cGVucnYoc3BsaXRQYXJ0TmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwlpZiAoc3Bs aXRSZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CSBlcnJtc2coImNhbm5vdCBzcGxpdCBub24tdGFibGUgcGFydGl0aW9uIFwiJXNcIiIsCisJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzcGxpdFJlbCkpKSk7CisKKwlzcGxpdFJl bE9pZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3Jp cHRpb25zIG9mIG5ldyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2gobGlzdHB0ciwgY21kLT5w YXJ0bGlzdCkKKwl7CisJCU9pZAkJCWV4aXN0aW5nX3JlbGlkOworCQlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7 CisKKwkJc3RybGNweShyZWxuYW1lLCBzcHMtPm5hbWUtPnJlbG5hbWUsIE5BTUVEQVRBTEVO KTsKKworCQkvKgorCQkgKiBMb29rIHVwIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggd2UgYXJl IHN1cHBvc2VkIHRvIGNyZWF0ZSB0aGUKKwkJICogcGFydGl0aW9uLCBjaGVjayB3ZSBoYXZl IHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0CisJCSAqIGFnYWluc3QgY29u Y3VycmVudCBkcm9wLCBhbmQgbWFyayBzdG10LT5yZWxhdGlvbiBhcworCQkgKiBSRUxQRVJT SVNURU5DRV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcyBzZWxlY3RlZC4KKwkJ ICovCisJCW5hbWVzcGFjZUlkID0KKwkJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5h bWVzcGFjZShzcHMtPm5hbWUsIE5vTG9jaywgTlVMTCk7CisKKwkJLyoKKwkJICogVGhpcyB3 b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSwgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhp c3RzLgorCQkgKiBCdXQgYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2Vy IGVycm9yIG1lc3NhZ2UuCisJCSAqLworCQlleGlzdGluZ19yZWxpZCA9IGdldF9yZWxuYW1l X3JlbGlkKHJlbG5hbWUsIG5hbWVzcGFjZUlkKTsKKwkJaWYgKGV4aXN0aW5nX3JlbGlkID09 IHNwbGl0UmVsT2lkICYmICFpc1NhbWVOYW1lKQorCQkJLyogT25lIG5ldyBwYXJ0aXRpb24g Y2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24uICovCisJCQlpc1Nh bWVOYW1lID0gdHJ1ZTsKKwkJZWxzZSBpZiAoZXhpc3RpbmdfcmVsaWQgIT0gSW52YWxpZE9p ZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRF X1RBQkxFKSwKKwkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3Rz IiwgcmVsbmFtZSkpKTsKKwl9CisKKwkvKiBEZXRhY2ggc3BsaXQgcGFydGl0aW9uLiAqLwor CVJlbW92ZUluaGVyaXRhbmNlKHNwbGl0UmVsLCByZWwsIGZhbHNlKTsKKwkvKiBEbyB0aGUg ZmluYWwgcGFydCBvZiBkZXRhY2hpbmcuICovCisJRGV0YWNoUGFydGl0aW9uRmluYWxpemUo cmVsLCBzcGxpdFJlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKworCS8qCisJICogSWYg bmV3IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24gdGhl biB3ZSBzaG91bGQKKwkgKiByZW5hbWUgc3BsaXQgcGFydGl0aW9uIGZvciByZXVzZSBuYW1l LgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2UgbXVzdCBidW1w IHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxl CisJCSAqIHZpc2libGUgZm9yIHJlbmFtZS4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5j cmVtZW50KCk7CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVs TmFtZSwgInNwbGl0LSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9j UGlkKTsKKwkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFt ZSwgZmFsc2UsIGZhbHNlKTsKKwkJc3BsaXRQYXJ0TmFtZSA9IG1ha2VSYW5nZVZhcigKKwkJ CQkJCQkJCSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uoc3BsaXRS ZWwpKSwKKwkJCQkJCQkJCSB0bXBSZWxOYW1lLCAtMSk7CisKKwkJLyoKKwkJICogV2UgbXVz dCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9u IHR1cGxlCisJCSAqIHZpc2libGUgYWZ0ZXIgcmVuYW1lLgorCQkgKi8KKwkJQ29tbWFuZENv dW50ZXJJbmNyZW1lbnQoKTsKKwl9CisKKwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxp a2Ugc3BsaXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2gobGlz dHB0ciwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9 IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24J bmV3UGFydFJlbDsKKworCQljcmVhdGVQYXJ0aXRpb25UYWJsZShzcHMtPm5hbWUsIHNwbGl0 UGFydE5hbWUsIGNvbnRleHQpOworCisJCS8qIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gYW5k IGFjcXVpcmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICovCisJCW5ld1BhcnRSZWwgPSB0YWJs ZV9vcGVucnYoc3BzLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQluZXdQYXJ0 UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0KKworCS8qIENv cHkgZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4gKi8KKwlt b3ZlU3BsaXRUYWJsZVJvd3MocmVsLCBzcGxpdFJlbCwgY21kLT5wYXJ0bGlzdCwgbmV3UGFy dFJlbHMsIGRlZmF1bHRQYXJ0T2lkKTsKKwkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1p dC4gKi8KKwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKKworCS8qIEF0dGFjaCBu ZXcgcGFydGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlmb3Jib3RoKGxpc3Rw dHIsIGNtZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmds ZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChs aXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbCA9IChSZWxhdGlvbikgbGZpcnN0KGxp c3RwdHIyKTsKKworCQkvKiB3cXVldWUgPSBOVUxMOiB2ZXJpZmljYXRpb24gZm9yIGVhY2gg Y2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWQuICovCisJCWF0dGFjaFBhcnRpdGlvblRh YmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgc3BzLT5ib3VuZCk7CisJCS8qIFVubG9jayBu ZXcgcGFydGl0aW9uLiAqLworCQl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOwor CX0KKworCS8qIERyb3Agc3BsaXQgcGFydGl0aW9uLiAqLworCW9iamVjdC5jbGFzc0lkID0g UmVsYXRpb25SZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOwor CW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJLyogUHJvYmFibHkgRFJPUF9DQVNDQURFIGlz IG5vdCBuZWVkZWQuICovCisJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJ Q1QsIDApOworfQorCisvKgorICogU3RydWN0IHdpdGggY29udGV4dCBvZiBtZXJnZWQgcGFy dGl0aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IE1lcmdlZFBhcnRDb250ZXh0Cit7CisJUmVs YXRpb24JcGFydFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30JCQlNZXJn ZWRQYXJ0Q29udGV4dDsKKworLyoKKyAqIG1vdmVNZXJnZWRUYWJsZXNSb3dzOiBzY2FuIG1l cmdlZCBwYXJ0aXRpb25zIChwYXJ0Q29udGV4dCkgb2YgcGFydGl0aW9uZWQKKyAqIHRhYmxl IChyZWwpIGFuZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKS4K KyAqLworc3RhdGljIHZvaWQKK21vdmVNZXJnZWRUYWJsZXNSb3dzKFJlbGF0aW9uIHJlbCwg TGlzdCAqcGFydENvbnRleHQsIFJlbGF0aW9uIG5ld1BhcnRSZWwpCit7CisJQ29tbWFuZElk CW15Y2lkOworCisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5n IGl0LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJ TGlzdENlbGwgICAqbGlzdHB0cjsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3Rh dGUgb2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAq ZHN0c2xvdDsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8q IFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8K KwliaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNz YXJ5IHR1cGxlIHNsb3QuICovCisJZHN0c2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xv dChSZWxhdGlvbkdldERlc2NyKG5ld1BhcnRSZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xv dF9jYWxsYmFja3MobmV3UGFydFJlbCkpOworCUV4ZWNTdG9yZUFsbE51bGxUdXBsZShkc3Rz bG90KTsKKworCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHQpCisJeworCQlNZXJnZWRQ YXJ0Q29udGV4dCAqcGMgPSAoTWVyZ2VkUGFydENvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIp OworCQlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwkJVHVwbGVDb252ZXJzaW9uTWFwICp0 dXBsZV9tYXA7CisJCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwkJU25hcHNob3QJc25hcHNob3Q7 CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJCXNy Y3Nsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihwYy0+ cGFydFJlbCksCisJCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MocGMtPnBhcnRS ZWwpKTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRl cyBvZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0aXRpb24uCisJCSAqLwor CQl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3Io cGMtPnBhcnRSZWwpLAorCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IobmV3UGFydFJl bCkpOworCisJCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwkJc25hcHNob3QgPSBS ZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCQlzY2FuID0gdGFibGVf YmVnaW5zY2FuKHBjLT5wYXJ0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkJd2hpbGUg KHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNy Y3Nsb3QpKQorCQl7CisJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkJLyog RXh0cmFjdCBkYXRhIGZyb20gb2xkIHR1cGxlLiAqLworCQkJc2xvdF9nZXRhbGxhdHRycyhz cmNzbG90KTsKKworCQkJaWYgKHR1cGxlX21hcCkKKwkJCXsKKwkJCQkvKiBOZWVkIHRvIHVz ZSBtYXAgZm9yIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZXhlY3V0 ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgZHN0c2xvdCk7 CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5 LiAqLworCQkJCWluc2VydHNsb3QgPSBkc3RzbG90OworCisJCQkJRXhlY0NsZWFyVHVwbGUo aW5zZXJ0c2xvdCk7CisKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jj c2xvdC0+dHRzX3ZhbHVlcywKKwkJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0 c19udmFsaWQpOworCQkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90 LT50dHNfaXNudWxsLAorCQkJCQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZh bGlkKTsKKworCQkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJCX0K KworCQkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLwor CQkJdGFibGVfdHVwbGVfaW5zZXJ0KG5ld1BhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLCB0 aV9vcHRpb25zLCBiaXN0YXRlKTsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJ fQorCisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFw c2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVfY29udmVyc2lvbl9tYXAodHVw bGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOwor CX0KKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QoZHN0c2xvdCk7CisJRnJlZUJ1 bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChu ZXdQYXJ0UmVsLCB0aV9vcHRpb25zKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1l PiBNRVJHRSBQQVJUSVRJT05TIDxwYXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0aW9uLW5h bWU+CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSAgUGFy dGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sK KwlSZWxhdGlvbgluZXdQYXJ0UmVsOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisJTGlzdAkg ICAqcGFydENvbnRleHRzID0gTklMOworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWNoYXIJ CXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCVJhbmdlVmFyICAgKm1lcmdlUGFydE5hbWUg PSBjbWQtPm5hbWU7CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCisJLyoKKwkgKiBM b2NrIGFsbCBtZXJnZWQgcGFydGl0aW9ucywgY2hlY2sgdGhlbSBhbmQgY3JlYXRlIGxpc3Qg d2l0aCBwYXJ0aXRpb25zCisJICogY29udGV4dHMuCisJICovCisJZm9yZWFjaChsaXN0cHRy LCBjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAq KSBsZmlyc3QobGlzdHB0cik7CisJCU1lcmdlZFBhcnRDb250ZXh0ICpwYzsKKworCQlwYyA9 IChNZXJnZWRQYXJ0Q29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihNZXJnZWRQYXJ0Q29udGV4 dCkpOworCisJCS8qCisJCSAqIFdlIGFyZSBnb2luZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0 aGlzIHBhcnRpdGlvbjogbmVlZCB0byB1c2UKKwkJICogZXhjbHVzaXZlIGxvY2sgZm9yIHBy ZXZlbnQgRE1MLXF1ZXJpZXMgdG8gdGhlIHBhcnRpdGlvbi4KKwkJICovCisJCXBjLT5wYXJ0 UmVsID0gdGFibGVfb3BlbnJ2KG5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCWlm IChwYy0+cGFydFJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IG1lcmdlIG5vbi10YWJsZSBwYXJ0aXRpb24g XCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYy0+cGFydFJlbCkp KSk7CisKKwkJaWYgKGVxdWFsKG5hbWUsIGNtZC0+bmFtZSkpCisJCQkvKiBPbmUgbmV3IHBh cnRpdGlvbiBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIG1lcmdlZCBwYXJ0aXRpb24uICov CisJCQlpc1NhbWVOYW1lID0gdHJ1ZTsKKworCQkvKiBTdG9yZSBwYXJ0aXRpb24gY29udGV4 dCBpbnRvIHBhcnRpdGlvbnMgbGlzdC4gKi8KKwkJcGFydENvbnRleHRzID0gbGFwcGVuZChw YXJ0Q29udGV4dHMsIHBjKTsKKwl9CisKKwkvKiBEZXRhY2ggYWxsIG1lcmdlZCBwYXJ0aXRp b25zLiAqLworCWRlZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFy dGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCWZvcmVhY2go bGlzdHB0ciwgcGFydENvbnRleHRzKQorCXsKKwkJTWVyZ2VkUGFydENvbnRleHQgKnBjID0g KE1lcmdlZFBhcnRDb250ZXh0ICopIGxmaXJzdChsaXN0cHRyKTsKKworCQlSZW1vdmVJbmhl cml0YW5jZShwYy0+cGFydFJlbCwgcmVsLCBmYWxzZSk7CisJCS8qIERvIHRoZSBmaW5hbCBw YXJ0IG9mIGRldGFjaGluZy4gKi8KKwkJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCBw Yy0+cGFydFJlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKwl9CisKKwkvKiBDcmVhdGUg dGFibGUgZm9yIG5ldyBwYXJ0aXRpb24sIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSBhcyBtb2Rl bC4gKi8KKwlpZiAoaXNTYW1lTmFtZSkKKwl7CisJCS8qIENyZWF0ZSBwYXJ0aXRpb24gdGFi bGUgd2l0aCBnZW5lcmF0ZWQgdGVtcGFyYXJ5IG5hbWUuICovCisJCXNwcmludGYodG1wUmVs TmFtZSwgIm1lcmdlLSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9j UGlkKTsKKwkJbWVyZ2VQYXJ0TmFtZSA9IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25h bWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCisJCQkJCQkJCQkgdG1wUmVsTmFtZSwg LTEpOworCX0KKwljcmVhdGVQYXJ0aXRpb25UYWJsZShtZXJnZVBhcnROYW1lLAorCQkJCQkJ IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uo cmVsKSksCisJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIC0xKSwK KwkJCQkJCSBjb250ZXh0KTsKKworCS8qIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gYW5kIGFj cXVpcmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICovCisJbmV3UGFydFJlbCA9IHRhYmxlX29w ZW5ydihtZXJnZVBhcnROYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCS8qIENvcHkg ZGF0YSBmcm9tIG1lcmdlZCBwYXJ0aXRpb25zIHRvIG5ldyBwYXJ0aXRpb24uICovCisJbW92 ZU1lcmdlZFRhYmxlc1Jvd3MocmVsLCBwYXJ0Q29udGV4dHMsIG5ld1BhcnRSZWwpOworCisJ LyoKKwkgKiBBdHRhY2ggbmV3IHBhcnRpdGlvbiB0byBwYXJ0aXRpb25lZCB0YWJsZS4gd3F1 ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9uCisJICogZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFp bnQgaXMgbm90IG5lZWQuCisJICovCisJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVs LCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsKKworCS8qIFVubG9jayBhbmQgZHJvcCBtZXJn ZWQgcGFydGl0aW9ucy4gKi8KKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwl7 CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlNZXJnZWRQYXJ0Q29udGV4dCAqcGMgPSAo TWVyZ2VkUGFydENvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIFVubG9jayBw YXJ0aXRpb24uICovCisJCXRhYmxlX2Nsb3NlKHBjLT5wYXJ0UmVsLCBOb0xvY2spOworCisJ CW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0 SWQgPSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKTsKKwkJb2JqZWN0Lm9iamVjdFN1 YklkID0gMDsKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDAp OworCisJCXBmcmVlKHBjKTsKKwl9CisKKwkvKiBSZW5hbWUgbmV3IHBhcnRpdGlvbiBpZiBp dCBpcyBuZWVkZWQuICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBt dXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcgcGFydGl0aW9u IHR1cGxlCisJCSAqIHZpc2libGUgZm9yIHJlbmFtZS4KKwkJICovCisJCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCVJlbmFtZVJl bGF0aW9uSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKSwKKwkJCQkJCQkg ICBjbWQtPm5hbWUtPnJlbG5hbWUsIGZhbHNlLCBmYWxzZSk7CisJfQorCS8qIEtlZXAgdGhl IGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9j ayk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBjMDE4MTQwYWZlNC4uYWQzOGUxZDQ1NmYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtMjczLDYgKzI3Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJUGFydGl0aW9uRWxlbSAqcGFydGVsZW07CiAJUGFydGl0aW9uU3BlYyAqcGFy dHNwZWM7CiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmRzcGVjOworCVNpbmdsZVBh cnRpdGlvblNwZWMgKnNpbmdsZXBhcnRzcGVjOwogCVJvbGVTcGVjICAgKnJvbGVzcGVjOwog CVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVibGljYXRpb25vYmplY3RzcGVjOwogCXN0cnVjdCBT ZWxlY3RMaW1pdCAqc2VsZWN0bGltaXQ7CkBAIC02NDQsNiArNjQ1LDggQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlwZSA8 bGlzdD4JCXBhcnRfcGFyYW1zCiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91 bmRTcGVjCisldHlwZSA8c2luZ2xlcGFydHNwZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMKKyV0 eXBlIDxsaXN0PgkJcGFydGl0aW9uc19saXN0CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJv dW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQogCkBAIC04MjYsNyAr ODI5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZ IE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJ TkcgT1dORUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQ QVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRICisJUEFSQUxMRUwgUEFSQU1FVEVSIFBB UlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQgUEFU SAogCVBMQUNJTkcgUExBTiBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJF Q0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJ TEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FU SU9OCkBAIC04NDAsNyArODQzLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAog CVNBVkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNPTkRf UCBTRUNVUklUWSBTRUxFQ1QKIAlTRVFVRU5DRSBTRVFVRU5DRVMgU0VSSUFMSVpBQkxFIFNF UlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRPRgotCVNIQVJFIFNIT1cg U0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNRTF9QIFNUQUJM RSBTVEFOREFMT05FX1AKKwlTSEFSRSBTSE9XIFNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJ TlQgU05BUFNIT1QgU09NRSBTUExJVCBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCiAJU1RB UlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNU UklDVF9QIFNUUklORyBTVFJJUF9QCiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JU IFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUAogCkBAIC0yMzQyLDYgKzIzNDUsMjMgQEAgYWx0 ZXJfdGFibGVfY21kczoKIAkJCXwgYWx0ZXJfdGFibGVfY21kcyAnLCcgYWx0ZXJfdGFibGVf Y21kCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCitwYXJ0aXRpb25zX2xpc3Q6 CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsg fQorCQkJfCBwYXJ0aXRpb25zX2xpc3QgJywnIFNpbmdsZVBhcnRpdGlvblNwZWMJeyAkJCA9 IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK1NpbmdsZVBhcnRpdGlvblNwZWM6CisJCQlQ QVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCisJCQkJeworCQkJ CQlTaW5nbGVQYXJ0aXRpb25TcGVjICpuID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3Bl Yyk7CisKKwkJCQkJbi0+bmFtZSA9ICQyOworCQkJCQluLT5ib3VuZCA9ICQzOworCisJCQkJ CSQkID0gbjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9uX2NtZDoKIAkJCS8qIEFMVEVSIFRB QkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJsZV9uYW1lPiBGT1IgVkFMVUVTICov CiAJCQlBVFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5kU3Bl YwpAQCAtMjM1Miw2ICsyMzcyLDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlw ZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNt ZC0+Ym91bmQgPSAkNDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+ Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAg LTIzNjYsNiArMjM4Nyw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBB VF9EZXRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJv dW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29u Y3VycmVudCA9ICQ0OwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzNzks NiArMjQwMSwzNSBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0 YWNoUGFydGl0aW9uRmluYWxpemU7CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQt PmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CisJCQkJCWNtZC0+ Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJ CSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BM SVQgUEFSVElUSU9OIDxwYXJ0aXRpb25fbmFtZT4gSU5UTyAoKSAqLworCQkJfCBTUExJVCBQ QVJUSVRJT04gcXVhbGlmaWVkX25hbWUgSU5UTyAnKCcgcGFydGl0aW9uc19saXN0ICcpJwor CQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQp OworCQkJCQlQYXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisK KwkJCQkJbi0+c3VidHlwZSA9IEFUX1NwbGl0UGFydGl0aW9uOworCQkJCQljbWQtPm5hbWUg PSAkMzsKKwkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAk NjsKKwkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRlZiA9IChOb2Rl ICopIGNtZDsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCS8qIEFMVEVSIFRB QkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TICgpIElOVE8gPHBhcnRpdGlvbl9uYW1lPiAq LworCQkJfCBNRVJHRSBQQVJUSVRJT05TICcoJyBxdWFsaWZpZWRfbmFtZV9saXN0ICcpJyBJ TlRPIHF1YWxpZmllZF9uYW1lCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFr ZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5v ZGUoUGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfTWVyZ2VQYXJ0aXRp b25zOworCQkJCQljbWQtPm5hbWUgPSAkNzsKKwkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJ CQkJCWNtZC0+cGFydGxpc3QgPSAkNDsKIAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7 CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwpA QCAtMjM5NSw2ICsyNDQ2LDcgQEAgaW5kZXhfcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3Vi dHlwZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJ CWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTlVMTDsKIAkJCQkJ Y21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsK IApAQCAtMTc4NzIsNiArMTc5MjQsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBB UlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05TCiAJ CQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApAQCAtMTc5MzksNiArMTc5 OTIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFNJTVBMRQogCQkJfCBTS0lQCiAJ CQl8IFNOQVBTSE9UCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJ fCBTVEFOREFMT05FX1AKQEAgLTE4NDkwLDYgKzE4NTQ0LDcgQEAgYmFyZV9sYWJlbF9rZXl3 b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJCXwg UEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBBVEgKQEAg LTE4NTY5LDYgKzE4NjI0LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBTTUFMTElO VAogCQkJfCBTTkFQU0hPVAogCQkJfCBTT01FCisJCQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJ CQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jCmluZGV4IGI1NzI1MzQ2M2I5Li44YzUwMDAxNGFkMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC01OCw2ICs1OCw4IEBACiAjaW5jbHVkZSAicGFyc2Vy L3BhcnNlX3R5cGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRl c2MuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUg InJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTEzNSw3ICsxMzcsNyBAQCBzdGF0aWMgdm9p ZCB0cmFuc2Zvcm1Db25zdHJhaW50QXR0cnMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJ CQkJCQkJCSBMaXN0ICpjb25zdHJhaW50TGlzdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1D b2x1bW5UeXBlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKTsK IHN0YXRpYyB2b2lkIHNldFNjaGVtYU5hbWUoY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIg KipzdG10X3NjaGVtYV9uYW1lKTsKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNt ZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCk7CitzdGF0aWMg dm9pZCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFy dGl0aW9uQm91bmRTcGVjICpib3VuZCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtUGFydGl0 aW9uUmFuZ2VCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCwKIAkJCQkJ CQkJCQkgICBSZWxhdGlvbiBwYXJlbnQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVJbmZpbml0 ZUJvdW5kcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0KTsKQEAgLTMyNzEsNiAr MzI3MywxMTcgQEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNo YXIgKnF1ZXJ5U3RyaW5nLAogfQogCiAKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRG b3JTcGxpdAorICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxMRSAuLi4gU1BMSVQgUEFSVElU SU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+Ym91bmQg aXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqIERvZXMgY2hl Y2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkCit0 cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQ YXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7 CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisKKwlpZiAo cGFyZW50LT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNU X0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25l ZCB0YWJsZSIsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudCkpKSk7CisKKwkvKiBU cmFuc2Zvcm0gcGFydGl0aW9uIGJvdW5kcyBmb3IgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxp c3Q6ICovCisJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7CisJCVNp bmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJz dChsaXN0cHRyKTsKKworCQljeHQtPnBhcnRib3VuZCA9IE5VTEw7CisJCXRyYW5zZm9ybVBh cnRpdGlvbkNtZChjeHQsIHNwcy0+Ym91bmQpOworCQkvKiBBc3NpZ24gdHJhbnNmb3JtZWQg dmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZC4gKi8KKwkJc3BzLT5ib3VuZCA9IGN4dC0+ cGFydGJvdW5kOworCX0KKworCXNwbGl0UGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWQocGFy dGNtZC0+bmFtZSwgTm9Mb2NrLCBmYWxzZSk7CisKKwkvKiBUaGVuIHdlIHNob3VsZCBjaGVj ayBwYXJ0aXRpb25zIHdpdGggdHJhbnNmb3JtZWQgYm91bmRzLiAqLworCWNoZWNrX3BhcnRp dGlvbnNfZm9yX3NwbGl0KHBhcmVudCwgc3BsaXRQYXJ0T2lkLCBwYXJ0Y21kLT5wYXJ0bGlz dCwgY3h0LT5wc3RhdGUpOworfQorCisKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRG b3JNZXJnZQorICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxMRSAuLi4gTUVSR0UgUEFSVElU SU9OUyBjb21tYW5kCisgKgorICogRG9lcyBzaW1wbGUgY2hlY2tzIGZvciBtZXJnZWQgcGFy dGl0aW9ucy4gQ2FsY3VsYXRlcyBib3VuZCBvZiByZXN1bHQKKyAqIHBhcnRpdGlvbi4KKyAq Lworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqcGFydGNtZCkKK3sKKwlPaWQJCQlkZWZh dWx0UGFydE9pZDsKKwlPaWQJCQlwYXJ0T2lkOworCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+ cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJTGlzdENlbGwg ICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlib29sCQlpc0RlZmF1bHRQYXJ0ID0g ZmFsc2U7CisJTGlzdAkgICAqcGFydE9pZHMgPSBOSUw7CisKKwlpZiAocGFyZW50LT5yZF9y ZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudCkpKSk7CisKKwlrZXkgPSBSZWxhdGlvbkdl dFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJh dGVneShrZXkpOworCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9IQVNI KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25l ZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkIikpKTsKKworCS8qIElzIGN1cnJlbnQgcGFydGl0 aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYygKKwkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UGFy dGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCWZvcmVhY2gobGlzdHB0ciwgcGFydGNt ZC0+cGFydGxpc3QpCisJeworCQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxm aXJzdChsaXN0cHRyKTsKKworCQkvKiBQYXJ0aXRpb25zIGluIHRoZSBsaXN0IHNob3VsZCBo YXZlIGRpZmZlcmVudCBuYW1lcy4gKi8KKwkJZm9yX2VhY2hfY2VsbChsaXN0cHRyMiwgcGFy dGNtZC0+cGFydGxpc3QsIGxuZXh0KHBhcnRjbWQtPnBhcnRsaXN0LCBsaXN0cHRyKSkKKwkJ eworCQkJUmFuZ2VWYXIgICAqbmFtZTIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIy KTsKKworCQkJaWYgKGVxdWFsKG5hbWUsIG5hbWUyKSkKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJIGVycm1z ZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVs bmFtZSkpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lMi0+ bG9jYXRpb24pKTsKKwkJfQorCisJCS8qIFNlYXJjaCBERUZBVUxUIHBhcnRpdGlvbiBpbiB0 aGUgbGlzdC4gKi8KKwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWQobmFtZSwgTm9Mb2Nr LCBmYWxzZSk7CisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZh dWx0UGFydCA9IHRydWU7CisJCXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBh cnRPaWQpOworCX0KKworCS8qIEFsbG9jYXRlIGJvdW5kIG9mIHJlc3VsdCBwYXJ0aXRpb24u ICovCisJQXNzZXJ0KHBhcnRjbWQtPmJvdW5kID09IE5VTEwpOworCXBhcnRjbWQtPmJvdW5k ID0gbWFrZU5vZGUoUGFydGl0aW9uQm91bmRTcGVjKTsKKworCS8qIEZpbGwgcGFydGl0aW9u IGJvdW5kLiAqLworCXBhcnRjbWQtPmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5OworCXBh cnRjbWQtPmJvdW5kLT5sb2NhdGlvbiA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZh dWx0ID0gaXNEZWZhdWx0UGFydDsKKwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0 ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3Qs CisJCQkJCQkJCQkJCXBhcnRPaWRzLCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0 LT5wc3RhdGUpOworfQorCiAvKgogICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJ CXBhcnNlIGFuYWx5c2lzIGZvciBBTFRFUiBUQUJMRQpAQCAtMzUzNCw3ICszNjQ3LDcgQEAg dHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3Rt dCwKIAkJCQl7CiAJCQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQg KikgY21kLT5kZWY7CiAKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRj bWQpOworCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZC0+Ym91bmQp OwogCQkJCQkvKiBhc3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBi b3VuZCAqLwogCQkJCQlwYXJ0Y21kLT5ib3VuZCA9IGN4dC5wYXJ0Ym91bmQ7CiAJCQkJfQpA QCAtMzU0Miw2ICszNjU1LDI0IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxp ZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21k cywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpw YXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9s ZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJCQkJCSBlcnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5z IGF0IGxlYXN0IHR3byBpdGVtcyIpKSk7CisKKwkJCQkJaWYgKGNtZC0+c3VidHlwZSA9PSBB VF9TcGxpdFBhcnRpdGlvbikKKwkJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0 KCZjeHQsIHBhcnRjbWQpOworCQkJCQllbHNlCisJCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25D bWRGb3JNZXJnZSgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3 Y21kcywgY21kKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQlkZWZhdWx0OgogCiAJCQkJ LyoKQEAgLTM5MzMsMTMgKzQwNjQsMTMgQEAgc2V0U2NoZW1hTmFtZShjaGFyICpjb250ZXh0 X3NjaGVtYSwgY2hhciAqKnN0bXRfc2NoZW1hX25hbWUpCiAKIC8qCiAgKiB0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQKLSAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBj b21tYW5kCisgKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSC9TUExJVCBQQVJUSVRJT04g Y29tbWFuZAogICoKLSAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSCBQQVJUSVRJT04gY29tbWFu ZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQotICogdHJhbnNmb3JtZWQgdmFsdWUg b2YgY21kLT5ib3VuZC4KKyAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSC9TUExJVCBQQVJUSVRJ T04gY29tbWFuZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQorICogdHJhbnNmb3Jt ZWQgdmFsdWUgb2YgYm91bmQuCiAgKi8KIHN0YXRpYyB2b2lkCi10cmFuc2Zvcm1QYXJ0aXRp b25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCit0cmFu c2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQm91 bmRTcGVjICpib3VuZCkKIHsKIAlSZWxhdGlvbglwYXJlbnRSZWwgPSBjeHQtPnJlbDsKIApA QCAtMzk0OCw5ICs0MDc5LDkgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRD b250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQljYXNlIFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEU6CiAJCQkvKiB0cmFuc2Zvcm0gdGhlIHBhcnRpdGlvbiBib3VuZCwgaWYg YW55ICovCiAJCQlBc3NlcnQoUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50UmVsKSAh PSBOVUxMKTsKLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0g TlVMTCkKIAkJCQljeHQtPnBhcnRib3VuZCA9IHRyYW5zZm9ybVBhcnRpdGlvbkJvdW5kKGN4 dC0+cHN0YXRlLCBwYXJlbnRSZWwsCi0JCQkJCQkJCQkJCQkJCSBjbWQtPmJvdW5kKTsKKwkJ CQkJCQkJCQkJCQkJIGJvdW5kKTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTEtJTkRfUEFSVElU SU9ORURfSU5ERVg6CiAKQEAgLTM5NTgsNyArNDA4OSw3IEBAIHRyYW5zZm9ybVBhcnRpdGlv bkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJCSAq IEEgcGFydGl0aW9uZWQgaW5kZXggY2Fubm90IGhhdmUgYSBwYXJ0aXRpb24gYm91bmQgc2V0 LiAgQUxURVIKIAkJCSAqIElOREVYIHByZXZlbnRzIHRoYXQgd2l0aCBpdHMgZ3JhbW1hciwg YnV0IG5vdCBBTFRFUiBUQUJMRS4KIAkJCSAqLwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVM TCkKKwkJCWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAogCQkJCQkJIGVy cm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmluZGV4IDA5MWQ2ZTg4NmI2Li40YzU1MTE1MDc0 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwor KysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTk5LDMg KzQ5OTksODQ2IEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdT KQogCiAJUEdfUkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVsdXMgPT0gcmVtYWluZGVyKTsK IH0KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfcmFuZ2UKKyAqCisg KiBDaGVja3MgdGhhdCBib3VuZHMgb2YgcGFydGl0aW9ucyAobmFtZSwgYm91bmQpIGFuZCAo cHJldl9uYW1lLCBwcmV2X2JvdW5kKQorICogZG8gbm90IG92ZXJsYXAuIExvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAicHJldl9uYW1lIiBzaG91bGQgYmUgbGVzcyBvciBlcXVhbAorICog dGhhbiBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gIm5hbWUiLgorICogSW4gY2FzZSBkZWZh dWx0UGFydD10cnVlIGNhbiBiZSBmcmVlIHNwYWNlIGJldHdlZW4gYm91bmQgYW5kIHByZXZf Ym91bmQuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFw X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICAgUmFuZ2VWYXIgKm5hbWUsCisJ CQkJCQkJCSAgIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQsCisJCQkJCQkJCSAgIFJhbmdl VmFyICpwcmV2X25hbWUsCisJCQkJCQkJCSAgIFBhcnRpdGlvbkJvdW5kU3BlYyAqcHJldl9i b3VuZCwKKwkJCQkJCQkJICAgYm9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJICAgUGFyc2VT dGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRp dGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmxvd2VyOworCVBhcnRp dGlvblJhbmdlQm91bmQgKnByZXZ1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQo a2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93ZXIg PSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIGJvdW5kLT5sb3dlcmRhdHVt cywgdHJ1ZSk7CisJcHJldnVwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXks IC0xLCBwcmV2X2JvdW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJLyogbG93ZXIxPWZh bHNlIGZvciBjb3JyZWN0IGNvbXBhcmlzb24gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyAqLwor CWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJ CQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAor CQkJCQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNl LCBwcmV2dXBwZXIpOworCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1 bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0 dW0gPSBsaW5pdGlhbChib3VuZC0+bG93ZXJkYXR1bXMpOworCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkgZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGNvbmZsaWN0cyB3 aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJ bmFtZS0+cmVsbmFtZSwgcHJldl9uYW1lLT5yZWxuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGNo ZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdAorICoKKyAqIENoZWNrcyB0aGF0IHZh bHVlcyBvZiBuZXcgcGFydGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqIHBhcnRzOiBhcnJh eSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHMKKyAqIG5wYXJ0czogc2l6ZSBvZiBh cnJheSAicGFydHMiLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19ub3Rf b3ZlcmxhcF9saXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRp b25TcGVjICogKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgUGFy c2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgUEdfVVNFRF9GT1JfQVNT RVJUU19PTkxZID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlpbnQJCQlv dmVybGFwX2xvY2F0aW9uID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNpbmdsZVBhcnRp dGlvblNwZWMgKnNwczEsCisJCQkgICAqc3BzMjsKKwlMaXN0CSAgICpvdmVybGFwOworCisJ QXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJ Zm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJc3BzMSA9IHBhcnRzW2ldOwor CisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJCXNwczIgPSBw YXJ0c1tqXTsKKworCQkJLyoKKwkJCSAqIENhbGN1bGF0ZSBpbnRlcnNlY3Rpb24gYmV0d2Vl biB2YWx1ZXMgb2YgdHdvIHBhcnRpdGlvbnMuCisJCQkgKi8KKwkJCW92ZXJsYXAgPSBsaXN0 X2ludGVyc2VjdGlvbihzcHMxLT5ib3VuZC0+bGlzdGRhdHVtcywKKwkJCQkJCQkJCQlzcHMy LT5ib3VuZC0+bGlzdGRhdHVtcyk7CisJCQlpZiAobGlzdF9sZW5ndGgob3ZlcmxhcCkgPiAw KQorCQkJeworCQkJCUNvbnN0CSAgICp2YWwgPSAoQ29uc3QgKikgbGZpcnN0KGxpc3RfaGVh ZChvdmVybGFwKSk7CisKKwkJCQlvdmVybGFwX2xvY2F0aW9uID0gdmFsLT5sb2NhdGlvbjsK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCSBlcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wi IHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJ CQkJCQkJc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3BzMi0+bmFtZS0+cmVsbmFtZSksCisJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwkJ CX0KKwkJfQorCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3Nw bGl0X3JhbmdlCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24g aXMgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdCBwYXJ0aXRpb24KKyAqICh3aXRoIHNwbGl0UGFy dE9pZCkuIElmIGZpcnN0PXRydWUgdGhlbiBsb3dlciBib3VuZHMgb2YgcGFydGl0aW9ucyBz aG91bGQKKyAqIGJlIGVxdWFscy4gSWYgbGFzdD10cnVlIHRoZW4gdXBwZXIgYm91bmRzIG9m IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGVxdWFscy4KKyAqIElmIGRlZmluZWQgc3BzUHJldiB0 aGVuIGZ1bmN0aW9uIGNvbXBhcmVzIGxvd2VyIGJvdW5kIG9mIHNwZWMgd2l0aCB1cHBlcgor ICogYm91bmQgb2Ygc3BzUHJldi4KKyAqIGRlZmF1bHRQYXJ0PXRydWUgaW4gY2FzZSBwYXJ0 aXRpb25lZCB0YWJsZSBoYXMgREVGQVVMVCBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lk CitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShjaGFyICpyZWxuYW1l LCBSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNw ZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgYm9vbCBm aXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVmYXVs dFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9u S2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9u RGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNl KTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5m bzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJ CW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpsb3dlciwK KwkJCSAgICp1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCUFzc2VydChzcGVjLT5zdHJhdGVn eSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93ZXIgPSBtYWtlX29uZV9w YXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwl1 cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BlYy0+dXBwZXJk YXR1bXMsIGZhbHNlKTsKKworCS8qCisJICogRmlyc3QgY2hlY2sgaWYgdGhlIHJlc3VsdGlu ZyByYW5nZSB3b3VsZCBiZSBlbXB0eSB3aXRoIHNwZWNpZmllZCBsb3dlcgorCSAqIGFuZCB1 cHBlciBib3VuZHMuICBwYXJ0aXRpb25fcmJvdW5kX2NtcCBjYW5ub3QgcmV0dXJuIHplcm8g aGVyZSwgc2luY2UKKwkgKiB0aGUgbG93ZXItYm91bmQgZmxhZ3MgYXJlIGRpZmZlcmVudC4K KwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywK KwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFydGNvbGxh dGlvbiwKKwkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJ ICB0cnVlLCB1cHBlcik7CisJQXNzZXJ0KGNtcHZhbCAhPSAwKTsKKwlpZiAoY21wdmFsID4g MCkKKwl7CisJCS8qIFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIgZGF0 dW1zIGxpc3QuICovCisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGlzdF9udGgo c3BlYy0+bG93ZXJkYXR1bXMsCisJCQkJCQkJCQkJCSAgY21wdmFsIC0gMSk7CisKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCSBlcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3Ig cGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQlyZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJT cGVjaWZpZWQgbG93ZXIgYm91bmQgJXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHVw cGVyIGJvdW5kICVzLiIsCisJCQkJCQkgICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhz cGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgICBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmlu ZyhzcGVjLT51cHBlcmRhdHVtcykpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBkYXR1bS0+bG9jYXRpb24pKSk7CisJfQorCisJaWYgKHBhcnRkZXNjLT5ucGFydHMgPiAw KQorCXsKKwkJaW50CQkJb2Zmc2V0OworCisJCUFzc2VydChib3VuZGluZm8gJiYKKwkJCSAg IGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYmCisJ CQkgICAoYm91bmRpbmZvLT5uZGF0dW1zID4gMCB8fAorCQkJCXBhcnRpdGlvbl9ib3VuZF9o YXNfZGVmYXVsdChib3VuZGluZm8pKSk7CisKKwkJLyoKKwkJICogVGVzdCB3aGV0aGVyIHRo ZSBuZXcgbG93ZXIgYm91bmQgKHdoaWNoIGlzIHRyZWF0ZWQgaW5jbHVzaXZlbHkgYXMKKwkJ ICogcGFydCBvZiB0aGUgbmV3IHBhcnRpdGlvbikgbGllcyBpbnNpZGUgYW4gZXhpc3Rpbmcg cGFydGl0aW9uLCBvciBpbgorCQkgKiBhIGdhcC4KKwkJICoKKwkJICogSWYgaXQncyBpbnNp ZGUgYW4gZXhpc3RpbmcgcGFydGl0aW9uLCB0aGUgYm91bmQgYXQgb2Zmc2V0ICsgMSB3aWxs CisJCSAqIGJlIHRoZSB1cHBlciBib3VuZCBvZiB0aGF0IHBhcnRpdGlvbiwgYW5kIGl0cyBp bmRleCB3aWxsIGJlID49IDAuCisJCSAqCisJCSAqIElmIGl0J3MgaW4gYSBnYXAsIHRoZSBi b3VuZCBhdCBvZmZzZXQgKyAxIHdpbGwgYmUgdGhlIGxvd2VyIGJvdW5kCisJCSAqIG9mIHRo ZSBuZXh0IHBhcnRpdGlvbiwgYW5kIGl0cyBpbmRleCB3aWxsIGJlIC0xLiBUaGlzIGlzIGFs c28gdHJ1ZQorCQkgKiBpZiB0aGVyZSBpcyBubyBuZXh0IHBhcnRpdGlvbiwgc2luY2UgdGhl IGluZGV4IGFycmF5IGlzIGluaXRpYWxpc2VkCisJCSAqIHdpdGggYW4gZXh0cmEgLTEgYXQg dGhlIGVuZC4KKwkJICovCisJCW9mZnNldCA9IHBhcnRpdGlvbl9yYW5nZV9ic2VhcmNoKGtl eS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCSBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJ CSBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJIGJvdW5kaW5mbywgbG93ZXIsCisJ CQkJCQkJCQkJICZjbXB2YWwpOworCisJCWlmIChib3VuZGluZm8tPmluZGV4ZXNbb2Zmc2V0 ICsgMV0gPCAwKQorCQl7CisJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpc3Rf bnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBBYnMoY21wdmFsKSAtIDEpOworCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkgZXJybXNnKCJib3VuZHMgb2YgcGFydGl0aW9uIFwiJXNcIiBhcmUgb3V0 c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQlyZWxuYW1lKSwKKwkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgbmV3IHBhcnRpdGlvbiBvdmVybGFw cyB3aXRoIHRoZSBleGlzdGluZyBwYXJ0aXRpb24gYmV0d2VlbgorCQkJICogb2Zmc2V0IGFu ZCBvZmZzZXQgKyAxLgorCQkJICovCisJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsK KworCQkJLyoKKwkJCSAqIFBvaW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIg ZGF0dW1zIGxpc3Q7IGlmIHdlIGhhdmUKKwkJCSAqIGVxdWFsaXR5LCBwb2ludCB0byB0aGUg Zmlyc3Qgb25lLgorCQkJICovCisJCQlkYXR1bSA9IGNtcHZhbCA9PSAwID8gbGluaXRpYWwo c3BlYy0+bG93ZXJkYXR1bXMpIDoKKwkJCQlsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywg QWJzKGNtcHZhbCkgLSAxKTsKKwkJCW92ZXJsYXBfbG9jYXRpb24gPSBkYXR1bS0+bG9jYXRp b247CisJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVzW29mZnNldCArIDFdOworCQkJaWYg KHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCQlvdmVybGFwID0g dHJ1ZTsKKwkJCWVsc2UgaWYgKGZpcnN0IHx8IGxhc3QpCisJCQl7CisJCQkJLyoKKwkJCQkg KiBMb3dlciBib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24gc2hvdWxkIGJlIGVxdWFscyB0byBs b3dlcgorCQkJCSAqIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4gVXBwZXIgYm91bmQgb2Yg bGFzdCBwYXJ0aXRpb24KKwkJCQkgKiBzaG91bGQgYmUgZXF1YWxzIHRvIHVwcGVyIGJvdW5k IG9mIHNwbGl0IHBhcnRpdGlvbi4KKwkJCQkgKgorCQkJCSAqIE5lZWQgdG8gZG8gZXhhY3Qg Y2hlY2sgb2YgdGhpcyBjb25kaXRpb24gaWYgbm90IGV4aXN0cworCQkJCSAqIERFRkFVTFQg cGFydGl0aW9uLiBPdGhlcndpc2UgY2FuIGJlIHNwYWNlcyBiZXR3ZWVuCisJCQkJICogcGFy dGl0aW9ucy4KKwkJCQkgKi8KKwkJCQlEYXR1bQkgICAqZGF0dW1zOworCQkJCVBhcnRpdGlv blJhbmdlRGF0dW1LaW5kICpraW5kOworCQkJCWludAkJCWN1cm9mZnNldCA9IG9mZnNldCAr IChsYXN0ID8gMSA6IDApOworCisJCQkJZGF0dW1zID0gYm91bmRpbmZvLT5kYXR1bXNbY3Vy b2Zmc2V0XTsKKwkJCQlraW5kID0gYm91bmRpbmZvLT5raW5kW2N1cm9mZnNldF07CisKKwkJ CQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJ CQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxh dGlvbiwKKwkJCQkJCQkJCQkJICBkYXR1bXMsIGtpbmQsCisJCQkJCQkJCQkJCSAgZmlyc3Qs CisJCQkJCQkJCQkJCSAgZmlyc3QgPyBsb3dlciA6IHVwcGVyKTsKKwkJCQlpZiAoKCFkZWZh dWx0UGFydCAmJiBjbXB2YWwpIHx8CisJCQkJLyogSXMgcGFydGl0aW9uIGJvdW5kIG91dHNp ZGUgb2Ygc3BsaXQgcGFydGl0aW9uIGJvdW5kPyAqLworCQkJCQkoZGVmYXVsdFBhcnQgJiYg Zmlyc3QgJiYgY21wdmFsID4gMCkgfHwKKwkJCQkJKGRlZmF1bHRQYXJ0ICYmIGxhc3QgJiYg Y21wdmFsIDwgMCkpCisJCQkJeworCQkJCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9 IGxpc3RfbnRoKGZpcnN0ID8KKwkJCQkJCQkJCQkJCQkJICBzcGVjLT5sb3dlcmRhdHVtcyA6 IHNwZWMtPnVwcGVyZGF0dW1zLAorCQkJCQkJCQkJCQkJCQkgIEFicyhjbXB2YWwpIC0gMSk7 CisKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCSBlcnJtc2coIiVzIGJvdW5kIG9mIHBh cnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFscyB0byAlcyBib3VuZCBvZiBzcGxpdCBwYXJ0 aXRpb24iLAorCQkJCQkJCQkJZmlyc3QgPyAibG93ZXIiIDogInVwcGVyIiwKKwkJCQkJCQkJ CXJlbG5hbWUsCisJCQkJCQkJCQlmaXJzdCA/ICJsb3dlciIgOiAidXBwZXIiKSwKKwkJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCQkJ CX0KKwkJCX0KKwkJfQorCX0KKworCWlmIChvdmVybGFwKQorCXsKKwkJQXNzZXJ0KHdpdGgg Pj0gMCk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNc IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gXCIl c1wiIiwKKwkJCQkJCXJlbG5hbWUsIGdldF9yZWxfbmFtZShwYXJ0ZGVzYy0+b2lkc1t3aXRo XSkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9u KSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X2xpc3QKKyAqCisgKiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiBpcyBp bnNpZGUgYm91bmRzIG9mIHNwbGl0IHBhcnRpdGlvbgorICogKHdpdGggc3BsaXRQYXJ0T2lk KS4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X2xpc3QoY2hhciAqcmVsbmFtZSwgUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgIE9pZCBzcGxpdFBhcnRPaWQsCisJ CQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRk ZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRp dGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJ CXdpdGggPSAtMTsKKwlib29sCQlvdmVybGFwID0gZmFsc2U7CisJaW50CQkJb3ZlcmxhcF9s b2NhdGlvbiA9IC0xOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlBc3NlcnQoa2V5LT5zdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KHNwZWMtPnN0cmF0 ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCS8qIFNob3VsZCBiZSBleGlz dHMgYXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBmb3Igc3BsaXQ6ICovCisJQXNzZXJ0KHBhcnRk ZXNjLT5ucGFydHMgPiAwKTsKKworCUFzc2VydChib3VuZGluZm8gJiYKKwkJICAgYm91bmRp bmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCAmJgorCQkgICAoYm91 bmRpbmZvLT5uZGF0dW1zID4gMCB8fAorCQkJcGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVs bHMoYm91bmRpbmZvKSB8fAorCQkJcGFydGl0aW9uX2JvdW5kX2hhc19kZWZhdWx0KGJvdW5k aW5mbykpKTsKKworCWZvcmVhY2goY2VsbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCUNv bnN0CSAgICp2YWwgPSBsZmlyc3Rfbm9kZShDb25zdCwgY2VsbCk7CisKKwkJb3ZlcmxhcF9s b2NhdGlvbiA9IHZhbC0+bG9jYXRpb247CisJCWlmICghdmFsLT5jb25zdGlzbnVsbCkKKwkJ eworCQkJaW50CQkJb2Zmc2V0OworCQkJYm9vbAkJZXF1YWw7CisKKwkJCW9mZnNldCA9IHBh cnRpdGlvbl9saXN0X2JzZWFyY2goJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJ CWtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJYm91bmRpbmZvLAorCQkJCQkJCQkJ CQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCSZlcXVhbCk7CisJCQlpZiAob2Zmc2V0 ID49IDAgJiYgZXF1YWwpCisJCQl7CisJCQkJd2l0aCA9IGJvdW5kaW5mby0+aW5kZXhlc1tv ZmZzZXRdOworCQkJCWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRoXSAhPSBzcGxpdFBhcnRPaWQp CisJCQkJeworCQkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJ fQorCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1zZygibmV3IHBhcnRp dGlvbiBcIiVzXCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRp dGlvbiBkb2VzIG5vdCBoYXZlIiwKKwkJCQkJCQkJcmVsbmFtZSksCisJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwkJfQorCQllbHNl IGlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pKQorCQl7CisJ CQl3aXRoID0gYm91bmRpbmZvLT5udWxsX2luZGV4OworCQkJaWYgKHBhcnRkZXNjLT5vaWRz W3dpdGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCXsKKwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkgZXJy bXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJCXJlbG5hbWUpLAor CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsK Kwl9CisKKwlpZiAob3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCisJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgd291bGQgb3Zlcmxh cCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQly ZWxuYW1lLCBnZXRfcmVsX25hbWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwl9Cit9CisK Ky8qCisgKiBmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zCisgKgorICogRnVuY3Rpb24g cmV0dXJucyAidHJ1ZSIgaW4gY2FzZSBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIChwYXJ0bGlz dCkgY29udGFpbnMKKyAqIHZhbHVlICJ2YWx1ZSIgYW5kICJmYWxzZSIgaWYgbm90IGNvbnRh aW5zLgorICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9ucyhG bWdySW5mbyAqcGFydHN1cGZ1bmMsCisJCQkJCQkJIE9pZCAqcGFydGNvbGxhdGlvbiwKKwkJ CQkJCQkgU2luZ2xlUGFydGl0aW9uU3BlYyAqICpwYXJ0cywKKwkJCQkJCQkgaW50IG5wYXJ0 cywKKwkJCQkJCQkgRGF0dW0gdmFsdWUsCisJCQkJCQkJIGJvb2wgaXNudWxsKQoreworCUxp c3RDZWxsICAgKnZhbHB0cjsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0 czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisK KwkJZm9yZWFjaCh2YWxwdHIsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsKKwkJCUNv bnN0CSAgICp2YWwgPSBsZmlyc3Rfbm9kZShDb25zdCwgdmFscHRyKTsKKworCQkJaWYgKGlz bnVsbCAmJiB2YWwtPmNvbnN0aXNudWxsKQorCQkJCXJldHVybiB0cnVlOworCisJCQlpZiAo IWlzbnVsbCAmJiAhdmFsLT5jb25zdGlzbnVsbCkKKwkJCXsKKwkJCQlpZiAoRGF0dW1HZXRJ bnQzMihGdW5jdGlvbkNhbGwyQ29sbCgmcGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkJ cGFydGNvbGxhdGlvblswXSwKKwkJCQkJCQkJCQkJCQl2YWwtPmNvbnN0dmFsdWUsCisJCQkJ CQkJCQkJCQkJdmFsdWUpKSA9PSAwKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQor CX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBjaGVja19wYXJlbnRfdmFsdWVzX2lu X25ld19wYXJ0aXRpb25zCisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxp dCBwYXJ0aXRpb24gKHBhcnRPaWQpIGNvbnRhaW5zIGluIG5ldworICogcGFydGl0aW9ucyAo cGFydGxpc3QpLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9u ZXdfcGFydGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lk LAorCQkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICogKnBhcnRzLAorCQkJCQkJCQkJ ICBpbnQgbnBhcnRzLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQs IGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJv dW5kaW5mbzsKKwlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0gdHJ1ZTsKKwlib29sCQlzZWFy Y2hOdWxsID0gZmFsc2U7CisJRGF0dW0JCWRhdHVtID0gUG9pbnRlckdldERhdHVtKE5VTEwp OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCisJLyoKKwkgKiBTcGVjaWFsIHByb2Nlc3NpbmcgZm9yIE5VTEwgdmFsdWUuIFNlYXJj aCBOVUxMLXZhbHVlIGlmIGl0IGNvbnRhaW5zCisJICogc3BsaXQgcGFydGl0aW9uIChwYXJ0 T2lkKS4KKwkgKi8KKwlpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRp bmZvKSAmJgorCQlwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPm51bGxfaW5kZXhdID09IHBh cnRPaWQpCisJeworCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnMoJmtleS0+ cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRz LCBucGFydHMsIGRhdHVtLCB0cnVlKSkKKwkJeworCQkJZm91bmQgPSBmYWxzZTsKKwkJCXNl YXJjaE51bGwgPSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBTZWFyY2ggYWxsIHZhbHVl cyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBwYXJ0T2lkIGluIFBhcnRpdGlvbkRlc2Mgb2YK KwkgKiBwYXJ0aXRpb25kZSB0YWJsZS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYm91bmRp bmZvLT5uZGF0dW1zOyBpKyspCisJeworCQlpZiAocGFydGRlc2MtPm9pZHNbYm91bmRpbmZv LT5pbmRleGVzW2ldXSA9PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBXZSBmb3VuZCB2YWx1ZSB0 aGF0IHNwbGl0IHBhcnRpdGlvbiBjb250YWlucy4gKi8KKwkJCWRhdHVtID0gYm91bmRpbmZv LT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnMo JmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9u LCBwYXJ0cywgbnBhcnRzLCBkYXR1bSwgZmFsc2UpKQorCQkJeworCQkJCWZvdW5kID0gZmFs c2U7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJ Q29uc3QJICAgKm5vdEZvdW5kVmFsOworCisJCWlmICghc2VhcmNoTnVsbCkKKwkJCS8qIE1h a2UgQ29uc3QgZm9yIGdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygbm90IGZvdW5kIHZh bHVlLiAqLworCQkJbm90Rm91bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0dHlwaWRbMF0s CisJCQkJCQkJCQlrZXktPnBhcnR0eXBtb2RbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBj b2xsWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwbGVuWzBdLAorCQkJCQkJCQkJZGF0dW0s CisJCQkJCQkJCQlmYWxzZSwJLyogaXNudWxsICovCisJCQkJCQkJCQlrZXktPnBhcnR0eXBi eXZhbFswXSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coIm5ldyBwYXJ0aXRpb25z IG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBwYXJ0aXRpb24gaGFzIiwKKwkJCQkJCXNl YXJjaE51bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKG5vdEZvdW5k VmFsKSkpKTsKKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdAor ICoKKyAqIE5lZWQgdG8gY2hlY2sgbmV3IHBhcnRpdGlvbnMgZm9yIFNQTElUIFBBUlRJVElP TlMgY29tbWFuZDoKKyAqIDEuIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUuCisg KiAyLiBOZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMKKyAqICAg ICh3aXRoIGV4aXN0aW5nIHBhcnRpdGlvbnMgdG9vKS4KKyAqIDMuIEJvdW5kcyBvZiBuZXcg cGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5nCisg KiAgICBwYXJ0aXRpb25zLgorICogNC4gSW4gY2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVG QVVMVCBwYXJ0aXRpb24sIG9uZSBvZiBuZXcgcGFydGl0aW9ucworICogICAgc2hvdWxkIGJl IERFRkFVTFQuCisgKiA1LiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG9yIGV4aXN0aW5nIHBh cnRpdGlvbnMgY29udGFpbnMgREVGQVVMVAorICogICAgcGFydGl0aW9uLCBuZXcgcGFydGl0 aW9ucyBjYW4gaGF2ZSBhbnkgYm91bmRzIGluc2lkZSBzcGxpdAorICogICAgcGFydGl0aW9u IGJvdW5kIChjYW4gYmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMpLgorICog Ni4gSW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFy dGl0aW9uLCBERUZBVUxUCisgKiAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25l IG9mIG5ldyBwYXJ0aXRpb24uCisgKiA3LiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG5vdCBj b250YWlucyBERUZBVUxUIHBhcnRpdGlvbiBhbmQKKyAqICAgIHBhcnRpdGlvbmVkIHRhYmxl IGRvZXMgbm90IGhhdmUgREVGQVVMVCBwYXJ0aXRpb24gdGhlIGZvbGxvd2luZworICogICAg c2hvdWxkIGJlIHRydWU6IHN1bSBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJl IGVxdWFsCisgKiAgICB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisgKi8KK3ZvaWQK K2NoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCSAg IE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCSAg IFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0 cmF0ZWd5OworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWJvb2wJCWlzU3BsaXRQYXJ0RGVm YXVsdDsKKwlib29sCQlleGlzdHNEZWZhdWx0UGFydDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy OworCWludAkJCWRlZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2lu Z2xlUGFydGl0aW9uU3BlYyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpz cHNQcmV2ID0gTlVMTDsKKwlpbnQJCQlucGFydHMgPSAwOworCisJa2V5ID0gUmVsYXRpb25H ZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3Ry YXRlZ3koa2V5KTsKKworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElP Tl9TVFJBVEVHWV9MSVNUOgorCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJ CXsKKwkJCQkvKgorCQkJCSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGggbmV3IHBhcnRp dGlvbnMgZXhjZXB0IERFRkFVTFQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJ bmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiAqKQorCQkJCQlwYWxsb2MwKGxp c3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsK KwkJCQlpID0gLTE7CisJCQkJZm9yZWFjaChsaXN0cHRyLCBwYXJ0bGlzdCkKKwkJCQl7CisJ CQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9CisJCQkJCShTaW5nbGVQYXJ0aXRpb25T cGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkJCQlpKys7CisJCQkJCWlmIChzcHMtPmJv dW5kLT5pc19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlpZiAoZGVmYXVsdF9pbmRleCA+PSAw KQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQkJIGVycm1zZygiREVGQVVMVCBw YXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIpKSwKKwkJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIHNwcy0+bmFtZS0+bG9jYXRpb24pKTsKKwkJCQkJCWRlZmF1bHRfaW5kZXgg PSBpOworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQkJbmV3X3BhcnRzW25wYXJ0cysr XSA9IHNwczsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9T VFJBVEVHWV9IQVNIOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJwYXJ0aXRpb24gb2Yg aGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgc3BsaXQiKSkpOworCQkJYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBz dHJhdGVneTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFrOwor CX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJewor CQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQlTaW5nbGVQYXJ0aXRp b25TcGVjICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxpZnkgY2hl Y2sgZm9yIHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBuZWVkIHRvIHNvcnQgYWxsCisJCSAq IHBhcnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZW0gYm91bmRzICh3ZSBjb21w YXJlIHVwcGVyCisJCSAqIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJfYm91bmRzID0g KFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQ YXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2YgbG93ZXIg Ym91bmRzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsKKwkJCWxv d2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLAorCQkJ CQkJCQkJCQkJCQluZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJ CX0KKworCQkvKiBTb3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNvcnRfYXJn KGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwK KwkJCQkgIHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJ CS8qIFJlb3JkZXIgYXJyYXkgb2YgcGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19wYXJ0cyA9 IG5ld19wYXJ0czsKKwkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiAqKQor CQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSk7CisJ CWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJCW5ld19wYXJ0c1tpXSA9IHRtcF9u ZXdfcGFydHNbbG93ZXJfYm91bmRzW2ldLT5pbmRleF07CisKKwkJcGZyZWUodG1wX25ld19w YXJ0cyk7CisJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJfQorCisJZGVmYXVsdFBhcnRPaWQg PQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlv bkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxhZzog aXMgc3BsaXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJaXNTcGxpdFBh cnREZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7CisKKwlpZiAo aXNTcGxpdFBhcnREZWZhdWx0ICYmIGRlZmF1bHRfaW5kZXggPCAwKQorCXsKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCSBlcnJtc2coImFueSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJl IERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCIpKSwKKwkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGlu aXRpYWwocGFydGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisJZWxzZSBpZiAoIWlz U3BsaXRQYXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCA+PSAwKSAmJiBPaWRJc1ZhbGlk KGRlZmF1bHRQYXJ0T2lkKSkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwc0RlZiA9 CisJCShTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZhdWx0 X2luZGV4KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbiBj YW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhp c3RzIikpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwc0RlZi0+bmFtZS0+ bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJbmRpY2F0b3IgdGhhdCBwYXJ0aXRpb25lZCB0YWJs ZSBoYXMgKG9yIHdpbGwgaGF2ZSkgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwlleGlzdHNEZWZh dWx0UGFydCA9IE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpIHx8IChkZWZhdWx0X2luZGV4 ID49IDApOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJU2luZ2xl UGFydGl0aW9uU3BlYyAqc3BzID0gbmV3X3BhcnRzW2ldOworCisJCWlmIChpc1NwbGl0UGFy dERlZmF1bHQpCisJCXsKKwkJCS8qCisJCQkgKiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBp cyBERUZBVUxUIHBhcnRpdGlvbiB3ZSBjYW4gdXNlIGFueQorCQkJICogZnJlZSByYW5nZXMg LSBhcyB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJY2hlY2tf bmV3X3BhcnRpdGlvbl9ib3VuZChzcHMtPm5hbWUtPnJlbG5hbWUsIHBhcmVudCwgc3BzLT5i b3VuZCwKKwkJCQkJCQkJCSAgcHN0YXRlKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJ CQkgKiBDaGVja3MgdGhhdCBib3VuZCBvZiBjdXJyZW50IHBhcnRpdGlvbiBpcyBpbnNpZGUg Ym91bmQgb2Ygc3BsaXQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIHJhbmdlIHBhcnRpdGlvbmlu ZzogY2hlY2tzIHRoYXQgdXBwZXIgYm91bmQgb2YKKwkJCSAqIHByZXZpb3VzIHBhcnRpdGlv biBpcyBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBjdXJyZW50CisJCQkgKiBwYXJ0aXRpb24u IEZvciBsaXN0IHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgc3BsaXQgcGFydGl0aW9uCisJ CQkgKiBjb250YWlucyBhbGwgdmFsdWVzIG9mIGN1cnJlbnQgcGFydGl0aW9uLgorCQkJICov CisJCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQorCQkJewor CQkJCWJvb2wJCWZpcnN0ID0gKGkgPT0gMCk7CisJCQkJYm9vbAkJbGFzdCA9IChpID09IChu cGFydHMgLSAxKSk7CisKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9y YW5nZShzcHMtPm5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJCQkJICAgcGFyZW50LCBzcHMt PmJvdW5kLCBzcGxpdFBhcnRPaWQsIGZpcnN0LCBsYXN0LAorCQkJCQkJCQkJCQkJCSAgIGV4 aXN0c0RlZmF1bHRQYXJ0LCBwc3RhdGUpOworCQkJfQorCQkJZWxzZQorCQkJCWNoZWNrX3Bh cnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3Qoc3BzLT5uYW1lLT5yZWxuYW1lLAorCQkJ CQkJCQkJCQkJCSAgcGFyZW50LCBzcHMtPmJvdW5kLCBzcGxpdFBhcnRPaWQsIHBzdGF0ZSk7 CisJCX0KKworCQkvKiBSYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVy bGFwLiAqLworCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFICYm IHNwc1ByZXYpCisJCQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX3JhbmdlKHBhcmVu dCwgc3BzLT5uYW1lLCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJCQkgICBzcHNQcmV2LT5uYW1l LCBzcHNQcmV2LT5ib3VuZCwgZXhpc3RzRGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisKKwkJc3Bz UHJldiA9IHNwczsKKworCQkvKiBDaGVjazogbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhhdmUg ZGlmZmVyZW50IG5hbWVzLiAqLworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5wYXJ0czsgaisr KQorCQl7CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMyID0gbmV3X3BhcnRzW2pdOwor CisJCQlpZiAoZXF1YWwoc3BzLT5uYW1lLCBzcHMyLT5uYW1lKSkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJ IGVycm1zZygibmFtZSBcIiVzXCIgYWxyZWFkeSB1c2VkIiwgc3BzMi0+bmFtZS0+cmVsbmFt ZSkpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzMi0+bmFtZS0+bG9j YXRpb24pKTsKKwkJfQorCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRF R1lfTElTVCkKKwl7CisJCS8qIFZhbHVlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90 IG92ZXJsYXAuICovCisJCWNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdChwYXJl bnQsIG5ld19wYXJ0cywgbnBhcnRzLAorCQkJCQkJCQkJCSAgcHN0YXRlKTsKKworCQkvKgor CQkgKiBOZWVkIHRvIGNoZWNrIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24g Y29udGFpbnMgaW4gbmV3CisJCSAqIHBhcnRpdGlvbnMuIFNraXAgdGhpcyBjaGVjayBpZiBE RUZBVUxUIHBhcnRpdGlvbiBleGlzdHMuCisJCSAqLworCQlpZiAoIWV4aXN0c0RlZmF1bHRQ YXJ0KQorCQkJY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhwYXJlbnQs IHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCQkJCSAgbmV3X3BhcnRzLCBucGFydHMsIHBzdGF0 ZSk7CisJfQorCisJcGZyZWUobmV3X3BhcnRzKTsKK30KKworLyoKKyAqIGdldF9wYXJ0aXRp b25fYm91bmRfc3BlYworICoKKyAqIFJldHVybnMgZGVzY3JpcHRpb24gb2YgcGFydGl0aW9u IHdpdGggT2lkICJwYXJ0T2lkIiBhbmQgbmFtZSAibmFtZSIuCisgKi8KK3N0YXRpYyBQYXJ0 aXRpb25Cb3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lk LCBSYW5nZVZhciAqbmFtZSkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWRhdHVt OworCWJvb2wJCWlzbnVsbDsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kc3BlYyA9IE5V TEw7CisKKwkvKiBUcnkgZmV0Y2hpbmcgdGhlIHR1cGxlIGZyb20gdGhlIGNhdGNhY2hlLCBm b3Igc3BlZWQuICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBwYXJ0T2lk KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBuYW1lLT5yZWxu YW1lKTsKKworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFJFTE9JRCwgdHVwbGUsCisJCQkJ CQkJQW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJJmlzbnVsbCk7CisJaWYg KGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgInBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24g XCIlc1wiIGlzIG51bGwiLAorCQkJIG5hbWUtPnJlbG5hbWUpOworCisJYm91bmRzcGVjID0g c3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKworCWlmICghSXNB KGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRTcGVjKSkKKwkJZWxvZyhFUlJPUiwgImV4cGVj dGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBuYW1l LT5yZWxuYW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcmV0dXJuIGJvdW5k c3BlYzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdl CisgKgorICogQ2FsY3VsYXRlcyBib3VuZCBvZiBtZXJnZWQgcGFydGl0aW9uICJzcGVjIiBi eSB1c2luZyBib3VuZHMgb2YgcGFydGl0aW9ucworICogd2l0aCBPaWRzICJwYXJ0T2lkcyIg YW5kIG5hbWVzICJwYXJ0TmFtZXMiLgorICovCit2b2lkCitjYWxjdWxhdGVfcGFydGl0aW9u X2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQlMaXN0ICpwYXJ0 TmFtZXMsCisJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKKwkJCQkJCQkJCVBhcnRpdGlvbkJv dW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCVBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0 aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0 aXRpb25Cb3VuZFNwZWMgKmJvdW5kOworCisJQXNzZXJ0KCFzcGVjLT5pc19kZWZhdWx0KTsK KworCXN3aXRjaCAoa2V5LT5zdHJhdGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFU RUdZX1JBTkdFOgorCQkJeworCQkJCWludAkJCWk7CisJCQkJUGFydGl0aW9uUmFuZ2VCb3Vu ZCAqKmxvd2VyX2JvdW5kczsKKwkJCQlpbnQJCQlucGFydHMgPSBsaXN0X2xlbmd0aChwYXJ0 T2lkcyk7CisJCQkJTGlzdAkgICAqYm91bmRzID0gTklMOworCisJCQkJbG93ZXJfYm91bmRz ID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQkJCXBhbGxvYzAobnBhcnRzICogc2l6 ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCQkJLyoKKwkJCQkgKiBDcmVhdGUg YXJyYXkgb2YgbG93ZXIgYm91bmRzIGFuZCBsaXN0IG9mCisJCQkJICogUGFydGl0aW9uQm91 bmRTcGVjLgorCQkJCSAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJ CQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKGxpc3RfbnRoX29p ZChwYXJ0T2lkcywgaSksCisJCQkJCQkJCQkJCQkJIChSYW5nZVZhciAqKSBsaXN0X250aChw YXJ0TmFtZXMsIGkpKTsKKworCQkJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9wYXJ0 aXRpb25fcmJvdW5kKGtleSwgaSwgYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJCQkJ Ym91bmRzID0gbGFwcGVuZChib3VuZHMsIGJvdW5kKTsKKwkJCQl9CisKKwkJCQkvKiBTb3J0 IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJCQlxc29ydF9hcmcobG93ZXJfYm91bmRz LCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCQkJICBxc29y dF9wYXJ0aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQgKikga2V5KTsKKworCQkJCS8qIFJhbmdl cyBvZiBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJCQlmb3IgKGkgPSAx OyBpIDwgbnBhcnRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlpbmRleCA9IGxvd2VyX2Jv dW5kc1tpXS0+aW5kZXg7CisJCQkJCWludAkJCXByZXZfaW5kZXggPSBsb3dlcl9ib3VuZHNb aSAtIDFdLT5pbmRleDsKKworCQkJCQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX3Jh bmdlKHBhcmVudCwKKwkJCQkJCQkJCQkJCQkgICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFy dE5hbWVzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJICAgKFBhcnRpdGlvbkJvdW5kU3BlYyAq KSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgICAoUmFuZ2VWYXIg KikgbGlzdF9udGgocGFydE5hbWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgICAo UGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgcHJldl9pbmRleCksCisJ CQkJCQkJCQkJCQkJICAgZmFsc2UsIHBzdGF0ZSk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkg KiBMb3dlciBib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24gaXMgYSBsb3dlciBib3VuZCBvZiBt ZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+bG93ZXJkYXR1 bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxv d2VyX2JvdW5kc1swXS0+aW5kZXgpKS0+bG93ZXJkYXR1bXM7CisKKwkJCQkvKgorCQkJCSAq IFVwcGVyIGJvdW5kIG9mIGxhc3QgcGFydGl0aW9uIGlzIGEgdXBwZXIgYm91bmQgb2YgbWVy Z2VkCisJCQkJICogcGFydGl0aW9uLgorCQkJCSAqLworCQkJCXNwZWMtPnVwcGVyZGF0dW1z ID0KKwkJCQkJKChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBsb3dl cl9ib3VuZHNbbnBhcnRzIC0gMV0tPmluZGV4KSktPnVwcGVyZGF0dW1zOworCisJCQkJcGZy ZWUobG93ZXJfYm91bmRzKTsKKwkJCQlsaXN0X2ZyZWUoYm91bmRzKTsKKwkJCQlicmVhazsK KwkJCX0KKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQkJeworCQkJCUxp c3RDZWxsICAgKmxpc3RwdHIsCisJCQkJCQkgICAqbGlzdHB0cjI7CisKKwkJCQkvKiBDb25z b2xpZGF0ZSBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0LiAqLworCQkJ CWZvcmJvdGgobGlzdHB0ciwgcGFydE9pZHMsIGxpc3RwdHIyLCBwYXJ0TmFtZXMpCisJCQkJ eworCQkJCQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRy Mik7CisJCQkJCU9pZAkJCWN1ck9pZCA9IGxmaXJzdF9vaWQobGlzdHB0cik7CisKKwkJCQkJ Ym91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMoY3VyT2lkLCBuYW1lKTsKKwkJCQkJ c3BlYy0+bGlzdGRhdHVtcyA9IGxpc3RfY29uY2F0KHNwZWMtPmxpc3RkYXR1bXMsIGJvdW5k LT5saXN0ZGF0dW1zKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVmYXVsdDoK KwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAor CQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKaW5kZXggMjZjZjRmYTlhMGUuLmQ5MDg5YmM3YWY2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMjg2NSwzICsxMjg2NSwyMSBAQCBnZXRfcmFuZ2Vf cGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVmLT5k YXRhOwogfQorCisvKgorICogZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZworICoJCUEgQyBz dHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygb25lIGxpc3QgcGFydGl0aW9uIHZhbHVlCisgKi8K K2NoYXIgKgorZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKQoreworCWRl cGFyc2VfY29udGV4dCBjb250ZXh0OworCVN0cmluZ0luZm8JYnVmID0gbWFrZVN0cmluZ0lu Zm8oKTsKKworCW1lbXNldCgmY29udGV4dCwgMCwgc2l6ZW9mKGRlcGFyc2VfY29udGV4dCkp OworCWNvbnRleHQuYnVmID0gYnVmOworCisJZ2V0X2NvbnN0X2V4cHIodmFsLCAmY29udGV4 dCwgLTEpOworCisJcmV0dXJuIGJ1Zi0+ZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCBiMGM5YzVmMmVmNi4uYzM1MWRjNDhmMzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKQEAgLTg5NSw2ICs4OTUsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUmFu Z2VEYXR1bQogCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlm IHVua25vd24gKi8KIH0gUGFydGl0aW9uUmFuZ2VEYXR1bTsKIAorLyoKKyAqIFBhcnRpdGlv bkRlc2MgLSBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24gZm9yIEFMVEVSIFRBQkxFIFNQ TElUIFBBUlRJVElPTiBjb21tYW5kCisgKi8KK3R5cGVkZWYgc3RydWN0IFNpbmdsZVBhcnRp dGlvblNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkv KiBuYW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8q IEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBTaW5nbGVQYXJ0aXRpb25TcGVjOwor CiAvKgogICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVggQVRU QUNIL0RFVEFDSCBQQVJUSVRJT04gY29tbWFuZHMKICAqLwpAQCAtOTAzLDYgKzkxNCw3IEBA IHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAogCU5vZGVUYWcJCXR5cGU7CiAJUmFuZ2VW YXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoICov CiAJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNo aW5nICovCisJTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMsIGZv ciBTUExJVCBQQVJUSVRJT04gY29tbWFuZCAqLwogCWJvb2wJCWNvbmN1cnJlbnQ7CiB9IFBh cnRpdGlvbkNtZDsKIApAQCAtMjMwMiw2ICsyMzE0LDggQEAgdHlwZWRlZiBlbnVtIEFsdGVy VGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFDSCBQQVJUSVRJT04g Ki8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVUQUNIIFBBUlRJVElPTiAqLwogCUFU X0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRBQ0ggUEFSVElUSU9OIEZJTkFMSVpF ICovCisJQVRfU3BsaXRQYXJ0aXRpb24sCQkJLyogU1BMSVQgUEFSVElUSU9OICovCisJQVRf TWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBBUlRJVElPTlMgKi8KIAlBVF9BZGRJZGVu dGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJQVRfU2V0SWRlbnRpdHksCQkJCS8qIFNF VCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwogCUFUX0Ryb3BJZGVudGl0eSwJCQkvKiBE Uk9QIElERU5USVRZICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggYWUzNWYwMzI1MTMuLjU4 ZDhlYzE0YjlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzMsNiArMzMzLDcgQEAgUEdf S0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQ QVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo InBhcnRpdGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0aCIsIFBBVEgsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQxNSw2ICs0MTYsNyBAQCBQR19L RVlXT1JEKCJza2lwIiwgU0tJUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgic3BsaXQiLCBTUExJVCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3FsIiwgU1FMX1As IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YWJsZSIs IFNUQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi c3RhbmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu aCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggYjFlM2Yx Yjg0MDAuLjM2MzBjMGVhZWY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmgKQEAgLTE0Myw0ICsxNDMsMTQgQEAgZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2Vf ZGF0dW1fYnNlYXJjaChGbWdySW5mbyAqcGFydHN1cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRp dGlvbl9oYXNoX2JzZWFyY2goUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbywKIAkJCQkJ CQkJICAgaW50IG1vZHVsdXMsIGludCByZW1haW5kZXIpOwogCitleHRlcm4gdm9pZCBjaGVj a19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBP aWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgTGlzdCAqcGFydGxpc3QsCisJCQkJCQkJ CQkgICBQYXJzZVN0YXRlICpwc3RhdGUpOworZXh0ZXJuIHZvaWQgY2FsY3VsYXRlX3BhcnRp dGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJCQkJTGlz dCAqcGFydE5hbWVzLAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCisJCQkJCQkJCQkJ CQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkJCQlQYXJzZVN0YXRlICpw c3RhdGUpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSVEJPVU5EU19IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1 bGV1dGlscy5oCmluZGV4IDdkNDg5NzE4YTM1Li5lZDEzYTQzZjUzZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cnVsZXV0aWxzLmgKQEAgLTQ0LDQgKzQ0LDYgQEAgZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9w YXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcyk7CiAKIGV4dGVybiBjaGFyICpw Z19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CiAKK2V4dGVy biBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwpOworCiAjZW5k aWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQtbWVyZ2Uub3V0IGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC1tZXJnZS5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM0ZGYxMzQ1YjJiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC1tZXJn ZS5vdXQKQEAgLTAsMCArMSwzNiBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lv bnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJj IHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0 IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRw YXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElU SU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBz MmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4u LiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZS T00gdHBhcnQ7CitpfHQgICAgCistKy0tLS0tCisxfHRleHQxCisoMSByb3cpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMg czJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJF R0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDFtb2RpZicg d2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy dTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCAqIEZST00gdHBhcnQ7CitpfHQgICAgICAgICAKKy0rLS0tLS0tLS0tLQorMXx0ZXh0MW1v ZGlmCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmlu ZGV4IDUyOWE0Y2JkNGRhLi4yMmU4MWIwMWE0YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNv bGF0aW9uX3NjaGVkdWxlCkBAIC0xMDEsNiArMTAxLDcgQEAgdGVzdDogcGFydGl0aW9uLWtl eS11cGRhdGUtMQogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMgogdGVzdDogcGFydGl0 aW9uLWtleS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtNAordGVzdDog cGFydGl0aW9uLXNwbGl0LW1lcmdlCiB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiBjbHVz dGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0LXBhcnRpdGlvbgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC1tZXJnZS5z cGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC1tZXJnZS5z cGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMTBjN2M2MDdh NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRp b24tc3BsaXQtbWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDQzIEBACisjIFZlcmlmeSB0aGF0IFNQ TElUIGFuZCBNRVJHRSBvcGVyYXRpb25zIGxvY2tzIERNTCBvcGVyYXRpb25zCisjIHdpdGgg cGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAKK3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMg dHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChpIGludCwgdCB0ZXh0KSBwYXJ0aXRpb24g YnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0cGFydF8wMF8xMCBQQVJUSVRJT04gT0Yg dHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworICBDUkVBVEUgVEFCTEUgdHBh cnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9S IFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1 bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7Cit9CisKK3RlYXJkb3duCit7CisgIERS T1AgVEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0K K3N0ZXAgczFzcGx0CXsgQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0 XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZB TFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7IH0KK3N0ZXAgczFtZXJnCXsgQUxURVIgVEFCTEUg dHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRP IHRwYXJ0XzAwXzIwOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIK K3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxLCAndGV4dDEnKTsgfQorc3RlcCBzMnUJeyBVUERBVEUgdHBhcnQgU0VUIHQgPSAn dGV4dDFtb2RpZicgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVw IHMycwl7IFNFTEVDVCAqIEZST00gdHBhcnQ7IH0KKworCisjIHMxIHN0YXJ0cyBTUExJVCBQ QVJUSVRJT04gdGhlbiBzMiB0cnlpbmcgdG8gaW5zZXJ0IHJvdyBhbmQKKyMgd2FpdHMgdW50 aWwgczEgZmluaXNoZWQgU1BMSVQgb3BlcmF0aW9uLgorcGVybXV0YXRpb24gczFiIHMxc3Bs dCBzMmIgczJpIHMxYyBzMmMgczJzCisKKyMgczIgaW5zZXJ0cyByb3cgaW50byB0YWJsZS4g czEgc3RhcnRzIE1FUkdFIFBBUlRJVElPTlMgdGhlbgorIyBzMiB0cnlpbmcgdG8gdXBkYXRl IGluc2VydGVkIHJvdyBhbmQgd2FpdHMgdW50aWwgczEgZmluaXNoZWQKKyMgTUVSR0Ugb3Bl cmF0aW9uLgorcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfb2F0X2hvb2tz L3Rlc3Rfb2F0X2hvb2tzLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfb2F0X2hvb2tzL3Rl c3Rfb2F0X2hvb2tzLmMKaW5kZXggOTAwZDU5N2Y1ZGQuLjEzYjgzZjM5ZGY1IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfb2F0X2hvb2tzL3Rlc3Rfb2F0X2hvb2tzLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X29hdF9ob29rcy90ZXN0X29hdF9ob29rcy5j CkBAIC0xNjQ0LDYgKzE2NDQsOSBAQCBub2RldGFnX3RvX3N0cmluZyhOb2RlVGFnIHRhZykK IAkJY2FzZSBUX1BhcnRpdGlvblJhbmdlRGF0dW06CiAJCQlyZXR1cm4gIlBhcnRpdGlvblJh bmdlRGF0dW0iOwogCQkJYnJlYWs7CisJCWNhc2UgVF9TaW5nbGVQYXJ0aXRpb25TcGVjOgor CQkJcmV0dXJuICJTaW5nbGVQYXJ0aXRpb25TcGVjIjsKKwkJCWJyZWFrOwogCQljYXNlIFRf UGFydGl0aW9uQ21kOgogCQkJcmV0dXJuICJQYXJ0aXRpb25DbWQiOwogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM3ODNjNGFkMDk4Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVy Z2Uub3V0CkBAIC0wLDAgKzEsNzE1IEBACistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0g VGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1h bmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworU0VUIHNl YXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBC WSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNt YW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjEtMTItMDEnKSBUTyAoJzIwMjEtMTItMzEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc21hbl9p ZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjog IHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwg c2FsZXNfbWFyMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIw MjI7CitFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVh ZHkgdXNlZAorTElORSAxOiAuLi5lIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGNh bm5vdCBtZXJnZSBub24tdGFibGUgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2Fs ZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7 CitFUlJPUjogIGNhbm5vdCBtZXJnZSBub24tdGFibGUgcGFydGl0aW9uICJzYWxlc19hcHIy MDIyIgorLS0gRVJST1I6ICBpbnZhbGlkIHBhcnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlvbiAi c2FsZXNfbWFyMjAyMiIgY2FuIG5vdCBiZSBtZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVuIHNl Y3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIy MDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0tIEVSUk9SOiAgaW52YWxp ZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNhbiBub3Qg YmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFu ZCBzYWxlc19qYW4yMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5U TyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfamFuMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJl dmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorLS0gTk8gRVJST1I6IHRlc3QgZm9y IGN1c3RvbSBwYXJ0aXRpb25zIG9yZGVyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19qYW4y MDIyKSBJTlRPIHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MK KyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxv Zy50ZXh0OworICAgICAgICAgIG9pZCAgICAgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hw ZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHNhbGVzX2FwcjIwMjIgICAgICAgICB8IHAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisg c2FsZXNfZGVjMjAyMSAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcxMi0wMS0yMDIxJykgVE8gKCcxMi0zMS0yMDIxJykKKyBzYWxl c19qYW5fZmViX21hcjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzA0LTAxLTIwMjInKQorIHNhbGVzX290 aGVycyAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAor KDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBBZGQgcm93cyBp bnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBP TiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVD VCBwZ19jYXRhbG9nLnBnX2dldF9wYXJ0a2V5ZGVmKCdzYWxlc19yYW5nZSc6OnJlZ2NsYXNz KTsKKyBwZ19nZXRfcGFydGtleWRlZiAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJBTkdF IChzYWxlc19kYXRlKQorKDEgcm93KQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQs IGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8 IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIy JykKKyBzYWxlc19mZWIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19q YW4yMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00g KCcwMS0wMS0yMDIyJykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19tYXIyMDIyIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIy JykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBz YWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIHNob3cgcGFy dGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJl bGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsK KyAgICAgICAgICBvaWQgICAgICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8 ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxl c19mZWJfbWFyX2FwcjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ph bjIwMjIgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfb3RoZXJz ICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3Nh bGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJn ZV9zY2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgIHwgICAgICAgdGFibGVuYW1l ICAgICAgIHwgICAgICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgICAgIHwgdGFibGVz cGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEgfCBzYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBzYWxlc19mZWJfbWFyX2FwcjIw MjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSBy b3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAg ICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAy MgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwg VHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgor ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIw MjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAg fCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAg MTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAg ICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAg ICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMTAg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx IHJvdykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzCitTRVQgZW5hYmxl X2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICog RlJPTSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAx LTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg fCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVy ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBs YXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgMTEg fCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAy MgorKDEwIHJvd3MpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxl X3NlcXNjYW4gPSBPTjsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKy0tIE1l cmdlIHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0 aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX290 aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CitzZWxlY3QgKiBmcm9tIHNhbGVzX290aGVyczsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAw IHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAg ICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0 aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDcgcm93cykKKworLS0g c2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MK KyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxv Zy50ZXh0OworICAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8 ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAy MiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQt MDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRP ICgnMDMtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK Ky0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0t ICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFs dWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQs CisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChM UEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9u dGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAn MCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAn U2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBU TyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAy LCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxV RVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3 KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIxLCAxMiwg OCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMSwg MSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMiwg NCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMSwg Mik7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMiwg MSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMywg Myk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMywg NCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgNSwg MSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19k ZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2Vy MSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAg ICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAy Mi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAg ICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8 IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVj MjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2Fs ZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIxIHwgICAg ICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDgg fCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2Fs ZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxl c19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5h Z2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAy Mi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFy dG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7Cisgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVz X2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAg ICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygz IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsKK0lO U0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJ TlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVz X21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOwor U0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFy IHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0 bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8 IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIu MDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAx MCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIu MDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19kZWMyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIw MjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAg ICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxl c195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNf ZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdl cjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIu MDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAg ICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIw MjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoNiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEg fCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX2RhdGU7 CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3 aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JF QVRFIFRBQkxFIHNhbGVzbWFuczEwXzIwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMyMF8zMCBQ QVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitD UkVBVEUgVEFCTEUgc2FsZXNtYW5zMzBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1Ig VkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVF UyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcg QVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFj dGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdf V0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVB VEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisg ICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggU1RBVEVN RU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdz YWxlc21hbnMnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfcm93 X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1Ig RUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoJ3NhbGVzbWFucycpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cg KyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXkn KTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21h bnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RB VEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJ TlRPIHNhbGVzbWFuczEwXzIwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRy aWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVS LCBsZXZlbCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzbWFuczEwXzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBfNDApIElOVE8g c2FsZXNtYW5zMTBfNDA7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyAr IHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1NtaXJu b2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2Fs ZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9 IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNF UlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAg dHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZU RVIsIGxldmVsID0gUk9XCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxl c21hbnMxMF80MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgMTkg fCBJdmFub3YKKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgMzAgfCBGb3Jk CisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzbWFuczsKK0RST1AgRlVOQ1RJT04gYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9u cyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2Fs ZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc21h bnMwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDEwKTsKKy0tIENyZWF0ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6 CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzbWFu X2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVB VEUgVEFCTEUgc2FsZXNtYW5zMjBfMzAoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBk MiBJTlQsICBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxl c21hbnMzMF80MChzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUsIHNhbGVz bWFuX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfMjAgVkFM VUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxl c21hbnMyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8g c2FsZXNtYW5zMzBfNDAgVkFMVUVTICgzMSwgbm93KCksICdQb3BvdicpOworQUxURVIgVEFC TEUgc2FsZXNtYW5zMTBfMjAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21h bnMyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczMwXzQwIERS T1AgQ09MVU1OIGQzOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04g c2FsZXNtYW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVSIFRB QkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxV RVMgRlJPTSAoMjApIFRPICgzMCk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBB UlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOwor SU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgJ1BvaXJvdCcpOworSU5TRVJUIElO VE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFu cyBWQUxVRVMgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzbWFuczEwXzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBf NDApIElOVE8gc2FsZXNtYW5zMTBfNDA7CitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAxIHwgUG9pcm90CisgICAgICAgICAgMTkgfCBJdmFub3YKKyAg ICAgICAgICAxMCB8IE1heQorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAz MSB8IFBvcG92CisgICAgICAgICAgMzAgfCBGb3JkCisoNiByb3dzKQorCitzZWxlY3QgKiBm cm9tIHNhbGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygx IHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMxMF80MDsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAyMCB8IFNt aXJub2ZmCisgICAgICAgICAgMzEgfCBQb3BvdgorICAgICAgICAgIDMwIHwgRm9yZAorKDUg cm93cykKKworRFJPUCBUQUJMRSBzYWxlc21hbnM7CistLQorLS0gVGVzdDogbWVyZ2Ugc3Vi LXBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lk IElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fw cjIwMjIgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9O IE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNC0xMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRP ICgnMjAyMi0wNC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFS VElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcp IFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2Fs ZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcy MDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgor ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIw MjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0x MC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwg MDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4 NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAg ICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIK KyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0y MDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQt MzAtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEw OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAg ICAgMzgwIHwgMDQtMDYtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19h cHIyMDIyXzEwXzIwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg fCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfYXByMjAyMl8yMF8zMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDEgcm93KQorCitBTFRFUiBU QUJMRSBzYWxlc19hcHIyMDIyIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2FwcjIwMjJfMDFf MTAsIHNhbGVzX2FwcjIwMjJfMTBfMjAsIHNhbGVzX2FwcjIwMjJfMjBfMzApIElOVE8gc2Fs ZXNfYXByX2FsbDsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIK KyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0y MDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEt MDktMjAyMgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8 IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAx NTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAg ICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAg ICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg fCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAg ICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiso MTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYt MjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAg fCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVz dDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMg QVMgSURFTlRJVFksCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2sn LCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdT bW9sZW5zaycsICdCcnlhbnNrJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNr JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1Zv bGdvZ3JhZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNhbGVz X2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdN dXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIERFRkFVTFQ7CitDUkVBVEUg VEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUg c2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CistLSBFUlJPUjogIHBhcnRpdGlv biBib3VuZCBmb3IgcmVsYXRpb24gInNhbGVzX2V4dGVybmFsIiBpcyBudWxsCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vh c3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcGFydGl0aW9u IGJvdW5kIGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwiIGlzIG51bGwKKy0tIEVSUk9S OiAgcGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwyIiBpcyBu dWxsCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dl c3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7CitFUlJP UjogIHBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24gInNhbGVzX2V4dGVybmFsMiIgaXMg bnVsbAorLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRp dGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3Qp IElOVE8gc2FsZXNfYWxsOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5v dCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAic2FsZXNfbGlzdCIKK0RST1AgVEFCTEUgc2Fs ZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogQlkg TElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZ UyBBUyBJREVOVElUWSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0 YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRF KQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBJTkRFWCBzYWxl c19saXN0X3NhbGVzbWFuX25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNh bGVzbWFuX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4 IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdN dXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9u ZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0to YWJhcm92c2snLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFs IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6 YW4nLCAnVm9sZ29ncmFkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxl c21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMgKCdUcnVtcCcsICAgICdNYWdhZGFuJywgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwg c2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWlybm9mZicsICdTbW9sZW5z aycsICAgICAgIDUwMCwgICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0 IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRl KSBWQUxVRVMgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAz LTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19z dGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdJdmFub3YnLCAgICdN b3Njb3cnLCAgICAgICAgIDc1MCwgICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxl c19kYXRlKSBWQUxVRVMgKCdEZWV2JywgICAgICdWb3JvbmV6aCcsICAgICAgIDI1MCwgICcy MDIyLTAzLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBz YWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQb2lyb3Qn LCAgICdLYXphbicsICAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5U TyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50 LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAgICAgICAgIDEy MDAsICcyMDIyLTAzLTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9u YW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdM aScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNf YW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAgICAg ICAgIDEyMDAsICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxl c21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMgKCdIYWxkZXInLCAgICdNdXJtYW5zaycsICAgICAgIDgwMCwgICcyMDIyLTAzLTAyJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwg c2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdCcnlhbnNr JywgICAgICAgIDY1MCwgICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0 IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRl KSBWQUxVRVMgKCdTbWl0aCcsICAgICdWb2xnb2dyYWQnLCAgICAgIDM1MCwgICcyMDIyLTAz LTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19z dGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAgICdN b3Njb3cnLCAgICAgICAgIDE1MCwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxl c19kYXRlKSBWQUxVRVMgKCdQbGF0bycsICAgICdWb3JvbmV6aCcsICAgICAgIDk1MCwgICcy MDIyLTAzLTA1Jyk7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VM RUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBl bmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQor ICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBp CisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNf bGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgIG9pZCAgICAgIHwgcmVsa2luZCB8IGlu aGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHNhbGVzX2NlbnRyYWwgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykK KyBzYWxlc19lYXN0ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJykKKyBzYWxl c19ub3JkICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElO ICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKQorIHNhbGVzX3dlc3Qg ICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdWb3Jv bmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoNSByb3dzKQorCitBTFRFUiBUQUJM RSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3Qs IHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworLS0gc2hvdyBwYXJ0aXRpb25zIHdp dGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5y ZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2Nh dGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGku aW5ocGFyZW50ID0gJ3NhbGVzX2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgIG9pZCAg ICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBzYWxlc19hbGwgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgJ01hZ2FkYW4n LCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycsICdNb3Njb3cnLCAnS2F6YW4nLCAnVm9s Z29ncmFkJykKKyBzYWxlc19ub3JkICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScp Cisgc2FsZXNfb3RoZXJzIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxU CisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgfCBTbW9sZW5zayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCBWb3JvbmV6aCAgICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgfCBCcnlh bnNrICAgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAxNCB8 IFBsYXRvICAgICAgICAgfCBWb3JvbmV6aCAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1 LTIwMjIKKyAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgfCBNYWdhZGFuICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgOCB8IExpICAgICAgICAg ICAgfCBWbGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAg ICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNt aXRoICAgICAgICAgfCBWb2xnb2dyYWQgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIw MjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCBNb3Njb3cgICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAg fCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAgICAgICAg ICAgNyB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8 IDAzLTA2LTIwMjIKKyAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAg ICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRl ciAgICAgICAgfCBNdXJtYW5zayAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIK KygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAg ICAgICAgICAgNyB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAg MTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgfCBVa2h0 YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgfCBNdXJtYW5zayAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAy LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxsOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgIHwgU21vbGVuc2sgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAg ICAgIDUgfCBEZWV2ICAgICAgICAgIHwgVm9yb25lemggICAgfCAgICAgICAgICAyNTAgfCAw My0wNy0yMDIyCisgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgIHwgQnJ5YW5zayAgICAg fCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgMTQgfCBQbGF0byAgICAg ICAgIHwgVm9yb25lemggICAgfCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisgICAgICAg ICAgIDEgfCBUcnVtcCAgICAgICAgIHwgTWFnYWRhbiAgICAgfCAgICAgICAgIDEwMDAgfCAw My0wMS0yMDIyCisgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sg fCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAg ICAgIDYgfCBQb2lyb3QgICAgICAgIHwgS2F6YW4gICAgICAgfCAgICAgICAgIDEwMDAgfCAw My0wMS0yMDIyCisgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgIHwgVm9sZ29ncmFkICAg fCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAg ICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMTAgcm93 cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzIGFmdGVyIG1lcmdlIHBh cnRpdGlvbnMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNj YW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdNb3Njb3cnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRl IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAg fCAwMy0wNC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAg ICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnTW9zY293JzsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAg ICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAg ICAgIDEzIHwgR2FuZGkgICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgMTUwIHwg MDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJF IHNhbGVzbWFuX25hbWUgPSAnSXZhbm92JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAg IHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxlX2lu ZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNh bGVzX2xpc3Q7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdjYWY3NjZmMGI0Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0CkBAIC0wLDAgKzEsMTQyNSBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0g VGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFu ZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBS QU5HRSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIGludCwgc2FsZXNtYW5f bmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFy X2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CistLSBFUlJPUjog IHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIg YWxyZWFkeSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9u IGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9u CitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcy MDIyLTA1LTAxJywgJzIwMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVk IGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFy dGl0aW9uICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBT cGVjaWZpZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFuIG9y IGVxdWFsIHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxpc3Qg b2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbnMgYXQgbGVhc3QgdHdvIGl0ZW1z CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CitFUlJPUjogIGxpc3Qg b2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVtcwor LS0gRVJST1I6ICBib3VuZHMgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBhcmUgb3V0 c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHdvdWxk IG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfamFu MjAyMiIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWJf bWFyX2FwcjIwMjIiIGFscmVhZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9u IHdpdGggdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVh dGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNf ZmViX21hcl9hcHIyMDIyIiBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLi4uCisgICAg ICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFs cmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBu YW1lICJzYWxlc19mZWIyMDIyIiBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisg ICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFyX2FwcjIw MjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBp cyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gdXBwZXIgYm91bmQg b2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CitF UlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90 IGVxdWFscyB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgNDogLi4u IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRp b24gInNhbGVzX2phbjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHdvdWxkIG92ZXJsYXAgd2l0 aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0xJTkUg MjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gdXBwZXIgYm91bmQgb2YgcHJldmlvdXMg cGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgY29uZmxpY3RzIHdpdGgg dXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorTElO RSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9u cywgdGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7 CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIg aXMgbm90IGVxdWFscyB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8uLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CistLQorLS0gQWRkIHJvd3MgaW50 byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBC WSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRP ICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAg MjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAg JzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjIt MDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4 LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAg ICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAg NSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAg ICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAg ICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIK KygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIw MjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0y OC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwg MDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAg fCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAg MTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAg ICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf bWFyMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAg ICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAg ICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDEx IHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cp CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBBZGQgc3BsaXQg cGFydGl0aW9uIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXkn LCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwg ICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAn RXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEt MzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAz NzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg fCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVy ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBs YXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDMg fCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2Fs ZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAx LTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAg Mzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIy MDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAg ICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAg ICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8 ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfbWFyMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAg IHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAg ICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0 IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwg c2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiso MSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0 IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFU RUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2Rh dGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3ll YXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIs ICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQs CisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0 bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwg MSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxV RSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIs IHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIs IDcpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEy LCA4KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAx LCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAy LCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAx LCAyKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAy LCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAz LCAzKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAz LCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCA1 LCAxKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVz X2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFn ZXIxICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIx LjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIx IHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAy MDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAg ICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19k ZWMyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBz YWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAg ICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAg OCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFy IHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0 bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjMgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8 IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNh bGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBz YWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBz YWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIs IDMsIDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIy LCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAy MiwgMiwgMTApOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzbWFuX25hbWUg fCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwg c2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg TWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8 IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAg IDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8 ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEu MDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIu MDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAg ICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFy IHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0 bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAg ICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Ciso MiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUg fCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAx IHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVz X2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFn ZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIy LjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAy MDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworLS1FUlJPUjogIHJl bGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZS T00gc2FsZXNfamFuX2ZlYjIwMjI7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmVi MjAyMiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUICogRlJPTSBzYWxlc19qYW5f ZmViMjAyMjsKKyAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2Rh dGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbjsgdXNp bmcgYSBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBpbmRleCBhZnRlciBzcGxpdAor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVy cyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxl c19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2Fs ZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5Jywg ICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3 NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywg ICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0x MC0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1 MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAg ICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAg ICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8 ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAxMiB8 IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDExIHJv d3MpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2Fs ZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsK KyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5k ZXhuYW1lICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVzX290 aGVyc19zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNf b3RoZXJzX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNf b3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CistLSBV c2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0g T047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Zl YjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgor ICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIw MjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5 IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAx LTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAg ICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9 IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4 ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0g J3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAg IHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3Bh Y2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgfCBzYWxlc19mZWIyMDIyIHwgc2FsZXNfZmViMjAyMl9zYWxlc19kYXRlX2lk eCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfZmViMjAyMl9zYWxlc19kYXRl X2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2ZlYjIwMjIgVVNJTkcgYnRy ZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYSc7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFi bGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl eGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3Nj aGVtYSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IHwg ICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4 IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRp b25fc3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5h bWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h IHwgc2FsZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAg ICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04g cGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxl c19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3Nw bGl0X3NjaGVtYSc7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8 ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNf b3RoZXJzIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSB8ICAgICAgICAgICAgfCBD UkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSBPTiBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygx IHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6 IHNvbWUgY2FzZXMgZm9yIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91 bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBz YWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAobG93ZXIgYm91bmQpCist LSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZs aWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBG T1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVy IGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0xJTkUgMzog ICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRP ICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIy ICh1cHBlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19mZWIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIw MiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBj b25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVz X2Vycm9yIgorTElORSA0OiAgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMjAxKSBUTyAoMjAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3Rz IHdpdGggc2FsZXNfZGVjMjAyMiAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBi b3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91 cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxl c19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMS4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAoZXhhY3QgdGhlIHNhbWUg Ym91bmRzKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vy cm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRP ICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMg d2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIi CitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGFueSBwYXJ0aXRpb24gaW4gdGhlIGxp c3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVM VAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSkp OworRVJST1I6ICBhbnkgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxU IGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0xJTkUgMjogICAoUEFSVElU SU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwLi4u CisgICAgICAgICAgICAgICAgICAgICBeCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVz X25vZXJyb3IgYmV0d2VlbiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEp IFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVT IEZST00gKDIwMjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIG5vIGVycm9yOiBi b3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBlcXVhbHMgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5k cyBvZiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEw MSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEw MTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRl c3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJB SU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMo c2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp KTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKAorc2FsZXNtYW5faWQgSU5UIFJFRkVSRU5DRVMgc2Fs ZXNtYW5zKHNhbGVzbWFuX2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNhbGVzX2Ft b3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFt ZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19m ZWJfbWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkOworICAgICAgICAgICAgICAgICAgICBw Z19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBj b25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNf YW1vdW50X2NoZWNrIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzbWFuX2lkKSBSRUZFUkVO Q0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9m a2V5ICAgfCB7MX0KKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNf ZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVs aWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQg PiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9z YWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5faWQpIFJF RkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzbWFu X2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u cmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91 bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5n ZV9zYWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5faWQp IFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVz bWFuX2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJh aW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUg Y29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19h bW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19y YW5nZV9zYWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5f aWQpIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3Nh bGVzbWFuX2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworLS0gRVJST1I6ICBuZXcgcm93 IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAic2FsZXNfcmFuZ2Vfc2FsZXNtYW5faWRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEsIDAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIG5ldyByb3cgZm9y IHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJz YWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBj b250YWlucyAoMSwgMCwgMDMtMTEtMjAyMikuCistLSBFUlJPUjogIGluc2VydCBvciB1cGRh dGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNtYW5faWRfZmtleSIKK0RFVEFJTDog IEtleSAoc2FsZXNtYW5faWQpPSgtMSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVz bWFucyIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwg JzIwMjItMDMtMTEnKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1Ag VEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9u IG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2UgZXhpc3RzIEZPUkVJR04gS0VZIHJlZmVy ZW5jZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNh bGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMg KHNhbGVzbWFuX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSk7CitDUkVBVEUgVEFCTEUgc2FsZXNt YW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVz bWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNt YW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxV RVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxOSwgJ0l2 YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicp OworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAsICdGb3JkJyk7CitJTlNFUlQg SU5UTyBzYWxlcyBWQUxVRVMgKDEsICAxMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDEsICAxMTAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBz YWxlcyBWQUxVRVMgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxl cyBWQUxVRVMgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBW QUxVRVMgKDE5LCAyMDAsICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxV RVMgKDIwLCA1MCwgICcyMDIyLTAzLTEyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMg KDIwLCAxNzAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMw LCAzMCwgICcyMDIyLTAzLTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBzYWxlc21hbnMxMF80MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAg ICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAgICAgMzAg fCBGb3JkCisoNCByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElU SU9OIHNhbGVzbWFuczEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIw XzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNt YW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CitTRUxFQ1QgKiBGUk9N IHNhbGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg IDEwIHwgTWF5CisgICAgICAgICAgMTkgfCBJdmFub3YKKygyIHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNtYW5zMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAyMCB8IFNtaXJub2Zm CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMzBfNDA7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBk YXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi c2FsZXNfc2FsZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAs IDUwLCAgJzIwMjItMDMtMDQnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJs ZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVz bWFuX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzbWFuX2lkKT0oNDApIGlzIG5vdCBw cmVzZW50IGluIHRhYmxlICJzYWxlc21hbnMiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVz IFZBTFVFUyAoMzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0RST1AgVEFCTEUgc2FsZXMgQ0FT Q0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CistLQorLS0gVGVzdDogc3Bs aXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9p ZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFu cyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5z MTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo NDApOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJF VFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJB SVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBs ZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAg UkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNf YWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAg T04gc2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9D RURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKK0NSRUFURSBU UklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJ TlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRF IFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworLS0g MiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJU IElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIo c2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZl bCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0g SU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIg c2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQwIFZB TFVFUyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxs ZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworQUxURVIg VEFCTEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21hbnMxMF80MCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNtYW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBU TyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAo MzApIFRPICg0MCkpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBz dGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9m ZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVz bWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBT VEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJU IElOVE8gc2FsZXNtYW5zMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElDRTogIHRy aWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVS LCBsZXZlbCA9IFJPVworU0VMRUNUICogRlJPTSBzYWxlc21hbnMwMV8xMDsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNt YW5zMTBfMjA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgIDE5IHwg SXZhbm92CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczIwXzMwOworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzbWFuczMwXzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMzAgfCBGb3JkCisoMSByb3cp CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVy X2luc2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3 aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMg aWRlbnRpdHktY29sdW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0 eS1jb2x1bW5zIHRvby4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lk IElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsK K0NSRUFURSBUQUJMRSBzYWxlc21hbnMxXzIgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1Ig VkFMVUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGgg aWRlbnRpdHktY29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczJfNShzYWxlc21hbl9p ZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNt YW5fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBB UlRJVElPTiBzYWxlc21hbnMyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOwor SU5TRVJUIElOVE8gc2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdJdmFub3Yn KTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdf YXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6 OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2Vu ZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K KyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAg ICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0 dHJlbGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAg ICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgICAgICAgICAgICAg fCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIFNw bGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHktY29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0 dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVt ID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5zMl81Jzo6cmVnY2xhc3M6Om9pZDsKKyAg ICBhdHRuYW1lICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzbWFuX2lkICAgfCBh ICAgICAgICAgICB8IAorIHNhbGVzbWFuX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93 cykKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21hbnMy XzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczJfMyBGT1IgVkFMVUVTIEZST00gKDIp IFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzXzQgRk9SIFZBTFVFUyBGUk9NICgz KSBUTyAoNCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zNF81IEZPUiBWQUxVRVMgRlJPTSAo NCkgVE8gKDUpKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFM VUVTICgnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZB TFVFUyAoJ0ZvcmQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMV8yOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21h bnMyXzM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IEl2YW5vdgorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzbWFuczNfNDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgTWF5Ciso MSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zNF81OworIHNhbGVzbWFuX2lkIHwg c2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgIDQgfCBGb3JkCisoMSByb3cpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0 dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8 IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAK KyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2NsYXNz OjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAor LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21h bl9pZCAgIHwgICAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAg fCAKKygyIHJvd3MpCisKKy0tIE5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHktY29sdW1u czoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdf YXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczJf Myc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0 Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwg ICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0 eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzbWFuczNfNCc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFt ZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAg ICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NF TEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczRfNSc6OnJl Z2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJh dGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBz YWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAg ICAgICAgfCAKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7Cist LQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5f aWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21h bnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRp b24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMx MF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJ TlQsIGQzIERBVEUsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8g c2FsZXNtYW5zMTBfNDAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAxMDAsIG5vdygp LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKCdkdW1t eSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworQUxURVIgVEFCTEUg c2FsZXNtYW5zMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMx MF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1Ag Q09MVU1OIGQzOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2Fs ZXNtYW5zMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRP IHNhbGVzbWFucyBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFu cyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgz MCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2Fs ZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9S IFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80 MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK3NlbGVjdCAqIGZyb20gc2FsZXNt YW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitz ZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEwXzIwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTkgfCBJ dmFub3YKKyAgICAgICAgICAxMCB8IE1heQorKDIgcm93cykKKworc2VsZWN0ICogZnJvbSBz YWxlc21hbnMyMF8zMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKygxIHJv dykKKworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMzMF80MDsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg IDMwIHwgRm9yZAorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOwor LS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fw cl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug QVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNf cmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0y MDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEt MjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1 MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAg ICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8g ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZv cmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAg MzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAy MiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykg VE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEt MzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAz NzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg fCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVy ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBs YXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDUg fCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAy MgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2Fs ZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0 LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAg fCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMl8wMV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAg ICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfYXByMjAyMl8xMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxIHJv dykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlv bmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFy dGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJ TlQsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFS KDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElP TiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBl dGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdT bW9sZW5zaycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3Zzaycs ICdWb2xnb2dyYWQnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKy0tIEVSUk9SOiAgcGFydGl0 aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAn U21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycsICdNdXJt YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01v c2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24g InNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBh cnRpdGlvbiAic2FsZXNfbm9yZCIKK0xJTkUgMzogLi4uQUxVRVMgSU4gKCdNYWdhZGFuJywg J0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snLCAnTXVybWFuc2snLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdp dGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdC cnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFn YWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1Zvcm9uZXpo JywgJ1ZvbGdvZ3JhZCcpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIg d291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJh bCIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zv cm9uZXpoJywgJ1Ntb2xlbnNrLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2Vz dCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2Vz IG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zv cm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxh ZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworRVJST1I6ICBuZXcgcGFydGl0 aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQg cGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0xJTkUgMjogLi4uZXN0IEZPUiBWQUxVRVMgSU4g KCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgTlVMTCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMg ZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9u cyBub3QgaGFzIE5VTEwgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAq IG5ldyBwYXJ0aXRpb25zIG5vdCBoYXMgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBo YXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQsCisg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwK KyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBM SVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1 cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5z aycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xn b2dyYWQnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlv bnMgbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5z aycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1Zv bGdvZ3JhZCcpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgTlVM TCBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBu b3QgaGF2ZSB2YWx1ZSAnVm9sZ29ncmFkJyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9s ZW5zaycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJU SVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywg TlVMTCkpOworRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSAnVm9sZ29n cmFkJyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworRFJPUCBUQUJMRSBzYWxlc19saXN0Owor LS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQQVJUSVRJT04gd2l0 aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQg R0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIo MzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisg c2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NS RUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzbWFuX25hbWVfaWR4IE9OIHNhbGVzX2xpc3Qg VVNJTkcgYnRyZWUgKHNhbGVzbWFuX25hbWUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rf c2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZP UiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnTW9zY293JywgJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snLCAn TWFnYWRhbicsICdLYXphbicsICdLaGFiYXJvdnNrJywgJ1ZvbGdvZ3JhZCcsICdWbGFkaXZv c3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnVHJ1bXAn LCAgICAnTWFnYWRhbicsICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pcm5vZmYnLCAnU21vbGVuc2snLCAgICAgICA1 MDAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgn Rm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSXZhbm92JywgICAnTW9zY293JywgICAg ICAgICA3NTAsICAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnRGVldicsICAgICAnVm9yb25lemgnLCAgICAgICAyNTAsICAnMjAyMi0wMy0wNycp OworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUG9pcm90JywgICAnS2F6YW4n LCAgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0w My0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGknLCAgICAgICAn VmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAn MjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFsZGVy JywgICAnTXVybWFuc2snLCAgICAgICA4MDAsICAnMjAyMi0wMy0wMicpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTXVsbGVyJywgICAnQnJ5YW5zaycsICAgICAgICA2 NTAsICAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgn U21pdGgnLCAgICAnVm9sZ29ncmFkJywgICAgICAzNTAsICAnMjAyMi0wMy0xMCcpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnR2FuZGknLCAgICAnTW9zY293JywgICAg ICAgICAxNTAsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnUGxhdG8nLCAgICAnVm9yb25lemgnLCAgICAgICA5NTAsICAnMjAyMi0wMy0wNScp OworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcs ICdTbW9sZW5zaycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0th emFuJywgJ1ZvbGdvZ3JhZCcpKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdDsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwg U21pcm5vZmYgICAgICB8IFNtb2xlbnNrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMt MjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8IFZvcm9uZXpoICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMDctMjAyMgorICAgICAgICAgIDExIHwgTXVsbGVyICAgICAg ICB8IEJyeWFuc2sgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAg ICAgIDE0IHwgUGxhdG8gICAgICAgICB8IFZvcm9uZXpoICAgICAgIHwgICAgICAgICAgOTUw IHwgMDMtMDUtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICB8IEthemFuICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAy MgorICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IFZvbGdvZ3JhZCAgICAgIHwgICAg ICAgICAgMzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8 IE1vc2NvdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorICAgICAgICAg ICAxIHwgVHJ1bXAgICAgICAgICB8IE1hZ2FkYW4gICAgICAgIHwgICAgICAgICAxMDAwIHwg MDMtMDEtMjAyMgorICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9zdG9r ICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAg ICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgor ICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAgICAgICAgIHwgICAgICAg ICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICB8IFVr aHRhICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEw IHwgSGFsZGVyICAgICAgICB8IE11cm1hbnNrICAgICAgIHwgICAgICAgICAgODAwIHwgMDMt MDItMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfd2VzdDsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICB8IFNtb2xlbnNrICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICB8IFZvcm9uZXpoICAgIHwgICAgICAgICAgMjUw IHwgMDMtMDctMjAyMgorICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICB8IEJyeWFuc2sg ICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgIDE0IHwgUGxhdG8g ICAgICAgICB8IFZvcm9uZXpoICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorKDQg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19lYXN0OworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgIHwgTWFn YWRhbiAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgIDggfCBM aSAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIy CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyAg ICAgICAgICAgNyB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAg MTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgfCBVa2h0 YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgfCBNdXJtYW5zayAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAy LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbDsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8IEthemFuICAgICAgIHwgICAgICAgICAxMDAw IHwgMDMtMDEtMjAyMgorICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IFZvbGdvZ3Jh ZCAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDQg cm93cykKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzIGFmdGVyIHNwbGl0 IHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19z dGF0ZSA9ICdNb3Njb3cnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAg ICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9z Y293ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnTW9zY293JzsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgor ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAg MTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0 IFdIRVJFIHNhbGVzbWFuX25hbWUgPSAnSXZhbm92JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2Nv dyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRB QkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVM VCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsK Ky0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04g Y29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElO VCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0 LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAg J011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAy Mi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRv JywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDQtMTAnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwg MDEtMDktMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRl Y2FkZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMDktMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfbWFyMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfYXByMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIz LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAg ICAgICA1MTAgfCAwNS0wNC0yMDIyCisoOCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRp dGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAq IHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5k LgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxl c21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0 LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAy Mi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRl Y2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNC0xMCcpKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMl8xZGVjYWRlOworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAw MS0wOS0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVj YWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAg ICA1MDAgfCAwMi0wOS0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAg ICAgICAgMTUwIHwgMDItMDctMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c19tYXIyMDIyXzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBzYWxlc19hcHIyMDIyXzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg MTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorICAgICAg ICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy CisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAy LTIzLTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAg fCAwMy0xMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTE5LTIwMjIKKyg4IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CistLQorLS0gVGVzdCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIERF RkFVTFQgcGFydGl0aW9uICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBi b3VuZHMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQs IHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDIt MTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAg IDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAn TGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVy JywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAz NzcsICAnMjAyMi0wMS0wOScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIw MjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0y OC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwg MDEtMDktMjAyMgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAg ICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAg ICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNyB8 IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAg IDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIy CisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0y MDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEt MjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAg ICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAg ICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg fCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAg ICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAg ICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBN dWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAg ICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoNCBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KK0RST1AgU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRl eCAxMDNlMTE0ODNkMi4uYzZmOTc0ZDdiNWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQpAQCAtMTI3LDcgKzEyNyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBn c3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRy CiAjIFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRp bmcgc3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0t Ci10ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNo X3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBs ZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzCit0ZXN0OiBwYXJ0aXRp b25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVu ZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBh cnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3Rh dHMKIAogIyBldmVudF90cmlnZ2VyIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGggYW55 IHRlc3QgdGhhdCBydW5zIERETAogIyBvaWRqb2lucyBpcyByZWFkLW9ubHksIHRob3VnaCwg YW5kIHNob3VsZCBydW4gbGF0ZSBmb3IgYmVzdCBjb3ZlcmFnZQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjVhNzI0Y2U2NWRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApAQCAtMCwwICsxLDQxMSBAQAorLS0K Ky0tIFBBUlRJVElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIE1F UkdFIFBBUlRJVElPTlMgLi4uIiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0K KworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEy LTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMSBQ QVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIgUEFSVElU SU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xNScpIFRP ICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBu YW1lICJzYWxlc19mZWIyMDIyIiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNh bGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJST1I6ICBj YW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNh bGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIy OworLS0gRVJST1I6ICBpbnZhbGlkIHBhcnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlvbiAic2Fs ZXNfbWFyMjAyMiIgY2FuIG5vdCBiZSBtZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rp b25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIy KSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBpbnZhbGlkIHBhcnRpdGlv bnMgb3JkZXIsIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgY2FuIG5vdCBiZSBtZXJnZWQK Ky0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ph bjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxl c19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2Rl Y19qYW5fZmViMjAyMjsKKworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBwYXJ0aXRp b25zIG9yZGVyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChz YWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVz X2phbl9mZWJfbWFyMjAyMjsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywg cGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBB TkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVM VCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0RS T1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlv bmVkIHRhYmxlIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK K0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5n ZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAg ICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUw LCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMt MTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgcGdfY2F0 YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisKKy0t IHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQg PSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNz CisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFs b2cudGV4dDsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxl c19mZWJfbWFyX2FwcjIwMjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlv bnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5o ZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2lu aGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9 ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworU0VMRUNUICogRlJPTSBwZ19p bmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJzsKKworU0VMRUNUICogRlJP TSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAq IEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhl cnM7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcworU0VUIGVuYWJsZV9p bmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICog RlJPTSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAx LTAxJzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IE9OOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIE1lcmdl IHBhcnRpdGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9u IHdpdGggdGhlIHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX290aGVy cykgSU5UTyBzYWxlc19vdGhlcnM7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNfb3RoZXJzOwor CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2Nh dGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMu b2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdj bGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19j YXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0 IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBHRU5FUkFU RUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVzX2Rh dGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3ll YXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIs ICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQs CisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0 bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAx LCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19k YXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgy MDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9u dGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyk7CitJTlNF UlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Zl YjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCitBTFRFUiBUQUJMRSBzYWxl c19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVT ICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNh bGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVF UyAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Rh dGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbl9mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworRFJPUCBUQUJM RSBzYWxlc19kYXRlOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0 aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFu cyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFCTEUg c2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfMjAgUEFSVElUSU9OIE9G IHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxF IHNhbGVzbWFuczIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9N ICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMzMF80MCBQQVJUSVRJT04g T0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJ TlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dl ciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAn dHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBU R19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7 CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNl cnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21h bnMKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRl cl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworCitDUkVBVEUgVFJJR0dFUiBz YWxlc21hbnNfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisg ICAgT04gc2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURV UkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKworLS0gMiB0cmln Z2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8g c2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmly ZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfMjAgVkFMVUVTICgxOSwg J0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIwXzMwLCBzYWxlc21hbnMzMF80MCkgSU5UTyBz YWxlc21hbnMxMF80MDsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cg KyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWly bm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQg SU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBG Uk9NIHNhbGVzbWFuczAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF80MDsKKwor RFJPUCBUQUJMRSBzYWxlc21hbnM7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcigpOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRlbGV0 ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzbWFuX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0g Q3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBU QUJMRSBzYWxlc21hbnMxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBz YWxlc21hbnMyMF8zMChzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQw KHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzIwIFZBTFVFUyAoJ2R1 bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMjBf MzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFu czMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3YnKTsKKworQUxURVIgVEFCTEUgc2Fs ZXNtYW5zMTBfMjAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMyMF8z MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczMwXzQwIERST1AgQ09M VU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxl c21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUg c2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBG Uk9NICgyMCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lO U0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRP IHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMg VkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzbWFuczEwXzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBf NDApIElOVE8gc2FsZXNtYW5zMTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zOwor c2VsZWN0ICogZnJvbSBzYWxlc21hbnMwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5z MTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zOworCistLQorLS0gVGVzdDogbWVyZ2Ug c3ViLXBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFu X2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8wMV8xMCBQQVJU SVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA0LTEwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQ QVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEw JykgVE8gKCcyMDIyLTA0LTIwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8yMF8z MCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRB Q0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNf cmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5Jywg ICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3 NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAn MjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0Vy aWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywg ICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEw LCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8w MV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xMF8yMDsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMl8yMF8zMDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBN RVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEw XzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVD VCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNw ZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElE RU5USVRZLAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFS Q0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJU SVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0 LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVu c2snLCAnQnJ5YW5zaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdW bGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dy YWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ugc2FsZXNf bGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAoJ011 cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKworCitDUkVB VEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgcGFy dGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwiIGlzIG51bGwKK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICBw YXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbDIiIGlzIG51bGwK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwg c2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9S OiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRp b24gInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQyLCBzYWxlc19lYXN0KSBJTlRPIHNhbGVzX2Fs bDsKKworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4 dGVybmFsOworRFJPUCBUQUJMRSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlz dDsKKworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJ T05TIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5f aWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQg SU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0 ZSk7CisKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzbWFuX25hbWVfaWR4IE9OIHNh bGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzbWFuX25hbWUpOworQ1JFQVRFIElOREVYIHNh bGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNh bGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywg J1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnVHJ1bXAnLCAgICAnTWFnYWRhbics ICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnU21pcm5vZmYnLCAnU21vbGVuc2snLCAgICAgICA1MDAsICAnMjAyMi0wMy0w MycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAnU3Qu IFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnSXZhbm92JywgICAnTW9zY293JywgICAgICAgICA3NTAsICAnMjAy Mi0wMy0wNCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAg ICAnVm9yb25lemgnLCAgICAgICAyNTAsICAnMjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnUG9pcm90JywgICAnS2F6YW4nLCAgICAgICAgICAxMDAw LCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5 JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5TRVJU IElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAg ICAxMTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNt YW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFsZGVyJywgICAnTXVybWFuc2sn LCAgICAgICA4MDAsICAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnTXVsbGVyJywgICAnQnJ5YW5zaycsICAgICAgICA2NTAsICAnMjAyMi0wMy0w NScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAnVm9s Z29ncmFkJywgICAgICAzNTAsICAnMjAyMi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnR2FuZGknLCAgICAnTW9zY293JywgICAgICAgICAxNTAsICAnMjAy Mi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUGxhdG8nLCAg ICAnVm9yb25lemgnLCAgICAgICA5NTAsICAnMjAyMi0wMy0wNScpOworCistLSBzaG93IHBh cnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhy ZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdE RUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsK KworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0 LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKworLS0gc2hv dyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGku aW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX2xpc3QnOjpyZWdjbGFzcworICBP UkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkg PSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRl eHQ7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdDsKK1NFTEVDVCAqIEZST00gc2FsZXNf bm9yZDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxsOworCistLSBVc2UgaW5kZXhzY2FuIGZv ciB0ZXN0IGluZGV4ZXMgYWZ0ZXIgbWVyZ2UgcGFydGl0aW9ucworU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJP TSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnTW9zY293JzsKK1NFTEVDVCAqIEZS T00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOworU0VMRUNUICog RlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzbWFuX25hbWUgPSAnSXZhbm92JzsKKworU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworCitE Uk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlv bl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZDAxN2YyZTkxOQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxp dC5zcWwKQEAgLTAsMCArMSw4MzkgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRl c3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQK Ky0tCisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK1NFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZ IFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBpbnQsIHNhbGVz bWFuX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0 ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmVi X21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJPUjog IHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhp c3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgaW52 YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAy Mi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNw ZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25z IHNob3VsZCBjb250YWlucyBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0xMC0wMScpKTsKKworLS0gRVJST1I6ICBib3VuZHMgb2YgcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIiBhcmUgb3V0c2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAi c2FsZXNfZmViX21hcl9hcHIyMDIyIiBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRl IHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQg Y2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9S OiAgbmFtZSAic2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIg aXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0 IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworCistLSBFUlJP UjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIHdvdWxkIG92ZXJsYXAgd2l0aCBh bm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gdXBwZXIgYm91bmQg b2YgcHJldmlvdXMgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3Vs ZCBiZSBleGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKworLS0gRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVh bHMgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDIn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxF IHNhbGVzX290aGVyczsKKworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFi bGUgdGhlbiBzcGxpdCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXkn LCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwg ICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAn RXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ph bjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX21hcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOwor CistLQorLS0gQWRkIHNwbGl0IHBhcnRpdGlvbiB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0 aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lk IElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0 LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAy Mi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAq IEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjI7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290 aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVz dCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJB VEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19k YXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195 ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAy LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVE LAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFy dG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRo LCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwg MSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9S IFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhW QUxVRSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNf eWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIx LCAxMiwgNyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAy MSwgMTIsIDgpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIw MjIsIDEsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIw MjIsIDIsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIw MjIsIDEsIDIpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIw MjIsIDIsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIw MjIsIDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIw MjIsIDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIw MjIsIDUsIDEpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfamFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIs IDEpIFRPICgyMDIyLCAzLCAxKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNt YW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgn TWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVz bWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAo J01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ph bjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX290aGVyOworCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBk b2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKworRFJP UCBUQUJMRSBzYWxlc19kYXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBERUZB VUxUIHBhcnRpdGlvbjsgdXNpbmcgYSBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBp bmRleCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNt YW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK K0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5n ZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0w Mi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAg ICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUw LCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMt MTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9N IHNhbGVzX290aGVyczsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5h bWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRf c2NoZW1hJzsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQpOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMK K1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7 CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIw MjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVzX2Rh dGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJz IHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1NFVCBlbmFibGVfaW5kZXhz Y2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworU0VMRUNUICogRlJPTSBw Z19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKK1NFTEVDVCAqIEZST00gcGdfaW5k ZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlv bl9zcGxpdF9zY2hlbWEnOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisK Ky0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiAo ZGlmZmVyZW50IGJvdW5kcykKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz bWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAo bG93ZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRp dGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAyMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIw MSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBl ciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRp b24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKwor LS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGluc2lkZSBi b3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJv ciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJz YWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAo MjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0g c2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGV4YWN0IHRoZSBz YW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0 aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAx KSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK KworLS0gRVJST1I6ICBhbnkgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZB VUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIw MTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAxMDEpIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpKTsKKworLS0gbm8gZXJyb3I6 IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGJldHdlZW4gc2FsZXNfZGVjMjAyMiBhbmQgc2Fs ZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25v ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9Q IFRBQkxFIHNhbGVzX3JhbmdlOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz bWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworCistLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgZXF1YWxzIHRv IGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmVi MjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3Ig Rk9SIFZBTFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMw MSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hF Q0sgYW5kIEZPUkVJR04gS0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVks IHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZB TFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3Nh bGVzbWFuX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCksCitzYWxl c19hbW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK1NFTEVDVCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2Ns YXNzOjpvaWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gV2Ug c2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29u bmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxl c19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRl ZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJl bGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lkOworU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CisKKy0t IEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVz IGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2NoZWNrIgorSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworLS0g RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9m a2V5IgorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAz LTExJyk7CistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwg JzIwMjItMDMtMTEnKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJP UCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRp dGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiBjYXNlIGV4aXN0cyBGT1JFSUdOIEtFWSBy ZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFu cyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNh bGVzIChzYWxlc21hbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworCitDUkVBVEUgVEFCTEUg c2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfNDAgUEFSVElUSU9OIE9G IHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5U TyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNt YW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMg KDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1Nt aXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsK KworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpOwor SU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpOworSU5T RVJUIElOVE8gc2FsZXMgVkFMVUVTICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpOworSU5TRVJU IElOVE8gc2FsZXMgVkFMVUVTICgxMCwgOTAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElO VE8gc2FsZXMgVkFMVUVTICgxOSwgMjAwLCAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElOVE8g c2FsZXMgVkFMVUVTICgyMCwgNTAsICAnMjAyMi0wMy0xMicpOworSU5TRVJUIElOVE8gc2Fs ZXMgVkFMVUVTICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXMg VkFMVUVTICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz bWFuczAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF80MDsKKworQUxURVIgVEFC TEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21hbnMxMF80MCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNtYW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwK KyAgIFBBUlRJVElPTiBzYWxlc21hbnMyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzAp IFRPICg0MCkpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworU0VMRUNUICog RlJPTSBzYWxlc21hbnMxMF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMjBfMzA7CitT RUxFQ1QgKiBGUk9NIHNhbGVzbWFuczMwXzQwOworCistLSBFUlJPUjogIGluc2VydCBvciB1 cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJzYWxlc19zYWxlc21hbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0 MCwgNTAsICAnMjAyMi0wMy0wNCcpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVF UyAoMzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURF OworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0 IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVz bWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQp OworCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFu cyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5z MTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAo NDApOworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOwor CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo KSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4K KwlSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0g JSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOwor ICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxl c21hbnNfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJU CisgICAgT04gc2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VU RSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKwor Q1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAg IEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFJPVworICAg IEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5z Jyk7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50 KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRy aWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEw XzQwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQ TElUIFBBUlRJVElPTiBzYWxlc21hbnMxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNt YW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc21hbnMyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElU SU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCist LSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CistLSAxIHRyaWdn ZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczMwXzQw IFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMDFfMTA7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc21h bnMyMF8zMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMzBfNDA7CisKK0RST1AgVEFCTEUg c2FsZXNtYW5zIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJp Z2dlcigpOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5 IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eS1jb2x1 bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5LWNvbHVtbnMgdG9v LgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRF RCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFC TEUgc2FsZXNtYW5zMV8yIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIGlkZW50aXR5LWNv bHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMyXzUoc2FsZXNtYW5faWQgSU5UIEdFTkVS QVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFS Q0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2Fs ZXNtYW5zMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUpOworCitJTlNFUlQgSU5UTyBz YWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOworSU5TRVJUIElO VE8gc2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdJdmFub3YnKTsKKworU0VM RUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1 dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5zJzo6cmVnY2xh c3M6Om9pZDsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZS T00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVz bWFuczFfMic6OnJlZ2NsYXNzOjpvaWQ7CistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50 aXR5LWNvbHVtbjoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVk IEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3Nh bGVzbWFuczJfNSc6OnJlZ2NsYXNzOjpvaWQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBT UExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21h bnMyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNt YW5zM180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVz bWFuczRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgnTWF5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ0ZvcmQnKTsKKworU0VMRUNUICog RlJPTSBzYWxlc21hbnMxXzI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczJfMzsKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zM180OworU0VMRUNUICogRlJPTSBzYWxlc21hbnM0XzU7CisK K1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0 cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJl Z2NsYXNzOjpvaWQ7CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc21hbnMxXzInOjpyZWdjbGFzczo6b2lkOworLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBp ZGVudGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQg PSAnc2FsZXNtYW5zMl8zJzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBhdHRuYW1lLCBhdHRp ZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+ IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczNfNCc6OnJlZ2NsYXNzOjpvaWQ7CitTRUxF Q1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0 ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnM0XzUnOjpyZWdj bGFzczo6b2lkOworCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworCistLQorLS0g VGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3 aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzQw KGQxIFZBUkNIQVIoMzApLCBzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwg ZDMgREFURSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzbWFuczEwXzQwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwg J0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgnZHVtbXkg dmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUg c2FsZXNtYW5zMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMx MF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1Ag Q09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBz YWxlc21hbnMxMF80MCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworCitJTlNFUlQg SU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxl c21hbnMgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVF UyAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJ T04gc2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBf MzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21h bnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKworc2VsZWN0ICogZnJv bSBzYWxlc21hbnMwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMTBfMjA7CitzZWxl Y3QgKiBmcm9tIHNhbGVzbWFuczIwXzMwOworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMzMF80 MDsKKworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNw bGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz bWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJ T04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2Fs ZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOwor CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAg J1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0w OCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00g c2FsZXNfYXByMjAyMjsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJU SVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8w MV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1 LTAxJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBz YWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzAxXzEwOworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOworU0VMRUNUICogRlJPTSBzYWxlc19h cHIyMDIyXzIwXzMwOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQlkg TElTVCBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMg Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QK KyhzYWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxl c19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUg REFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJM RSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdN dXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293 JywgJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snLCAnTWFnYWRhbicsICdLYXph bicsICdLaGFiYXJvdnNrJywgJ1ZvbGdvZ3JhZCcsICdWbGFkaXZvc3RvaycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOwor CistLSBFUlJPUjogIHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCBwYXJ0 aXRpb24gInNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVF UyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAn VmxhZGl2b3N0b2snLCAnTXVybWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFs IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworCist LSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0 aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0Jy eWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdh ZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9yb25lemgn LCAnVm9sZ29ncmFkJykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dl c3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9l cyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdW b3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgTlVMTCksCisgICBQQVJUSVRJT04g c2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1Zs YWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElO ICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcpKTsKKworRFJPUCBUQUJMRSBzYWxl c19saXN0OworCistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElT VCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgbm90IGhhcyBOVUxMIHZh bHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9ucyBu b3QgaGFzIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5ULAorIHNhbGVzbWFuX25hbWUgVkFS Q0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElO VCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUp OworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywg J01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxhZGl2 b3N0b2snLCBOVUxMKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2 YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gaGFzCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywg J0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOwor CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIG5vdCBoYXZlIHZhbHVlICdWb2xnb2dyYWQn IGJ1dCBzcGxpdCBwYXJ0aXRpb24gaGFzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElU IFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9S IFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92 c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBW QUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCBOVUxMKSk7CisKK0RST1AgVEFCTEUgc2Fs ZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQ QVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxl c21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc21hbl9u YW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVz X3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHgg T04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNtYW5fbmFtZSk7CitDUkVBVEUgSU5E RVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJl ZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1 cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5z aycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xn b2dyYWQnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnVHJ1bXAnLCAgICAnTWFnYWRhbicsICAgICAgICAxMDAwLCAnMjAyMi0w My0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pcm5vZmYnLCAn U21vbGVuc2snLCAgICAgICA1MDAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAn MjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSXZhbm92 JywgICAnTW9zY293JywgICAgICAgICA3NTAsICAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAgICAnVm9yb25lemgnLCAgICAgICAy NTAsICAnMjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgn UG9pcm90JywgICAnS2F6YW4nLCAgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAg ICAgICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScp OworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEn LCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnSGFsZGVyJywgICAnTXVybWFuc2snLCAgICAgICA4MDAsICAnMjAyMi0w My0wMicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTXVsbGVyJywgICAn QnJ5YW5zaycsICAgICAgICA2NTAsICAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAnVm9sZ29ncmFkJywgICAgICAzNTAsICAn MjAyMi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnR2FuZGkn LCAgICAnTW9zY293JywgICAgICAgICAxNTAsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUGxhdG8nLCAgICAnVm9yb25lemgnLCAgICAgICA5 NTAsICAnMjAyMi0wMy0wNScpOworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZB TFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2sn LCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxV RVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2xpc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2Vhc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2NlbnRyYWw7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhl cyBhZnRlciBzcGxpdCBwYXJ0aXRpb24KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJh bCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOworU0VMRUNUICogRlJPTSBzYWxlc19s aXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2xpc3QgV0hFUkUgc2FsZXNtYW5fbmFtZSA9ICdJdmFub3YnOworCitTRVQgZW5hYmxlX2lu ZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CisKK0RST1AgVEFCTEUg c2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQg cGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7Cist LSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNv bW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQs IHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcy MDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0 LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAg ICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAg J011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAy Mi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRv JywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJf MWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEw JyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNC0xMCcpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFkZWNhZGU7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00g c2FsZXNfbWFyMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzFk ZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZBVUxU IHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOwor LS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBj b21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5U LCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0z MScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQ b2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjIt MDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXIn LCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEz LCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19q YW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAy Mi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMl8x ZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBw YXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNw YWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKKworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0t CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCAzNGE3NmNlYjYwZi4uNGY0ZjhjOWZmZmYgMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNTI1LDYgKzI1MjUsNyBAQCBTaW1wbGVTdGF0cwog U2ltcGxlU3RyaW5nTGlzdAogU2ltcGxlU3RyaW5nTGlzdENlbGwKIFNpbmdsZUJvdW5kU29y dEl0ZW0KK1NpbmdsZVBhcnRpdGlvblNwZWMKIFNpemUKIFNraXBQYWdlcwogU2xhYkJsb2Nr Cg== --------------Gs8rpbvV92qHjyBScDlRbkEZ--