From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.2 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_NXDOMAIN autolearn=no autolearn_force=no version=3.4.4 Received: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 4CBCA24B04 for ; Sat, 27 Jul 2024 20:32:54 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============6919648188453186657==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_New_package=3A_hexcurse-1=2E60=2E0?= To: ml@inbox.vuxu.org From: MIvanchev Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sat, 27 Jul 2024 20:32:54 +0200 List-Id: Message-Id: <20240727183254.4CBCA24B04@inbox.vuxu.org> GitHub notification mails are now in MIME to allow UTF8. --===============6919648188453186657== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgTUl2YW5jaGV2IGFnYWluc3QgbWFz dGVyIG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9N SXZhbmNoZXYvdm9pZC1wYWNrYWdlcyBjaS1oZXhjdXJzZQpodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNTE1MDEKCk5ldyBwYWNrYWdlOiBoZXhjdXJzZS0x LjYwLjAKIyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQotIEkgdGVzdGVkIHRoZSBjaGFuZ2VzIGlu IHRoaXMgUFI6ICoqWUVTKioNCg0KIyMjIyBOZXcgcGFja2FnZQ0KLSBUaGlzIG5ldyBwYWNrYWdl IGNvbmZvcm1zIHRvIHRoZSBbcGFja2FnZSByZXF1aXJlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNv bS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI3Bh Y2thZ2UtcmVxdWlyZW1lbnRzKTogKipZRVMqKg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcN Ci0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsIChY ODZfNjQtR0xJQkMpDQoKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC81MTUwMS5wYXRjaCBpcyBhdHRhY2hlZA== --===============6919648188453186657== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ci-hexcurse-51501.patch" RnJvbSA1MDk3MDU5NTAzMzNjODAwMmY2ZGVlYmQ2NDFkZTQ1YmVlYWFjMWQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWhhaWwgSXZhbmNoZXYgPGNvbnRhY3RAaXZhbmNoZXYubmV0 PgpEYXRlOiBTYXQsIDI3IEp1bCAyMDI0IDIwOjE0OjAwICswMjAwClN1YmplY3Q6IFtQQVRDSF0g TmV3IHBhY2thZ2U6IGhleGN1cnNlLTEuNjAuMAoKLS0tCiAuLi4vaGV4Y3Vyc2UvcGF0Y2hlcy8z cmRwYXJ0eS1zdXBwb3J0LnBhdGNoICAgfCA0OTk4ICsrKysrKysrKysrKysrKysrCiBzcmNwa2dz L2hleGN1cnNlL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIDIgZmlsZXMg Y2hhbmdlZCwgNTAxMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9o ZXhjdXJzZS9wYXRjaGVzLzNyZHBhcnR5LXN1cHBvcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2hleGN1cnNlL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oZXhjdXJz ZS9wYXRjaGVzLzNyZHBhcnR5LXN1cHBvcnQucGF0Y2ggYi9zcmNwa2dzL2hleGN1cnNlL3BhdGNo ZXMvM3JkcGFydHktc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMC4uZDlhMjc4ZWM1MDBlZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2hl eGN1cnNlL3BhdGNoZXMvM3JkcGFydHktc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDQ5OTggQEAK K2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IGQ0N2YzZDguLjAwMDAwMDAKKy0tLSBhL01ha2VmaWxlLmluCisrKysg L2Rldi9udWxsCitAQCAtMSw3NzYgKzAsMCBAQAorLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5 IGF1dG9tYWtlIDEuMTUgZnJvbSBNYWtlZmlsZS5hbS4KKy0jIEBjb25maWd1cmVfaW5wdXRACist CistIyBDb3B5cmlnaHQgKEMpIDE5OTQtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKy0KKy0jIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBh bmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBh cyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKy0KKy0jIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdp dGhvdXQKKy0jIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEKKy0jIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKy0KKy1AU0VUX01BS0VACist VlBBVEggPSBAc3JjZGlyQAorLWFtX19pc19nbnVfbWFrZSA9IHsgXAorLSAgaWYgdGVzdCAteiAn JChNQUtFTEVWRUwpJzsgdGhlbiBcCistICAgIGZhbHNlOyBcCistICBlbGlmIHRlc3QgLW4gJyQo TUFLRV9IT1NUKSc7IHRoZW4gXAorLSAgICB0cnVlOyBcCistICBlbGlmIHRlc3QgLW4gJyQoTUFL RV9WRVJTSU9OKScgJiYgdGVzdCAtbiAnJChDVVJESVIpJzsgdGhlbiBcCistICAgIHRydWU7IFwK Ky0gIGVsc2UgXAorLSAgICBmYWxzZTsgXAorLSAgZmk7IFwKKy19CistYW1fX21ha2VfcnVubmlu Z193aXRoX29wdGlvbiA9IFwKKy0gIGNhc2UgJCR7dGFyZ2V0X29wdGlvbi19IGluIFwKKy0gICAg ICA/KSA7OyBcCistICAgICAgKikgZWNobyAiYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbjog aW50ZXJuYWwgZXJyb3I6IGludmFsaWQiIFwKKy0gICAgICAgICAgICAgICJ0YXJnZXQgb3B0aW9u ICckJHt0YXJnZXRfb3B0aW9uLX0nIHNwZWNpZmllZCIgPiYyOyBcCistICAgICAgICAgZXhpdCAx OzsgXAorLSAgZXNhYzsgXAorLSAgaGFzX29wdD1ubzsgXAorLSAgc2FuZV9tYWtlZmxhZ3M9JCRN QUtFRkxBR1M7IFwKKy0gIGlmICQoYW1fX2lzX2dudV9tYWtlKTsgdGhlbiBcCistICAgIHNhbmVf bWFrZWZsYWdzPSQkTUZMQUdTOyBcCistICBlbHNlIFwKKy0gICAgY2FzZSAkJE1BS0VGTEFHUyBp biBcCistICAgICAgKlxcW1wgXAldKikgXAorLSAgICAgICAgYnM9XFw7IFwKKy0gICAgICAgIHNh bmVfbWFrZWZsYWdzPWBwcmludGYgJyVzXG4nICIkJE1BS0VGTEFHUyIgXAorLSAgICAgICAgICB8 IHNlZCAicy8kJGJzJCRic1skJGJzICQkYnMJXSovL2ciYDs7IFwKKy0gICAgZXNhYzsgXAorLSAg Zmk7IFwKKy0gIHNraXBfbmV4dD1ubzsgXAorLSAgc3RyaXBfdHJhaWxvcHQgKCkgXAorLSAgeyBc CistICAgIGZsZz1gcHJpbnRmICclc1xuJyAiJCRmbGciIHwgc2VkICJzLyQkMS4qJCQvLyJgOyBc CistICB9OyBcCistICBmb3IgZmxnIGluICQkc2FuZV9tYWtlZmxhZ3M7IGRvIFwKKy0gICAgdGVz dCAkJHNraXBfbmV4dCA9IHllcyAmJiB7IHNraXBfbmV4dD1ubzsgY29udGludWU7IH07IFwKKy0g ICAgY2FzZSAkJGZsZyBpbiBcCistICAgICAgKj0qfC0tKikgY29udGludWU7OyBcCistICAgICAg ICAtKkkpIHN0cmlwX3RyYWlsb3B0ICdJJzsgc2tpcF9uZXh0PXllczs7IFwKKy0gICAgICAtKkk/ Kikgc3RyaXBfdHJhaWxvcHQgJ0knOzsgXAorLSAgICAgICAgLSpPKSBzdHJpcF90cmFpbG9wdCAn Tyc7IHNraXBfbmV4dD15ZXM7OyBcCistICAgICAgLSpPPyopIHN0cmlwX3RyYWlsb3B0ICdPJzs7 IFwKKy0gICAgICAgIC0qbCkgc3RyaXBfdHJhaWxvcHQgJ2wnOyBza2lwX25leHQ9eWVzOzsgXAor LSAgICAgIC0qbD8qKSBzdHJpcF90cmFpbG9wdCAnbCc7OyBcCistICAgICAgLVtkRURtXSkgc2tp cF9uZXh0PXllczs7IFwKKy0gICAgICAtW0pUXSkgc2tpcF9uZXh0PXllczs7IFwKKy0gICAgZXNh YzsgXAorLSAgICBjYXNlICQkZmxnIGluIFwKKy0gICAgICAqJCR0YXJnZXRfb3B0aW9uKikgaGFz X29wdD15ZXM7IGJyZWFrOzsgXAorLSAgICBlc2FjOyBcCistICBkb25lOyBcCistICB0ZXN0ICQk aGFzX29wdCA9IHllcworLWFtX19tYWtlX2RyeXJ1biA9ICh0YXJnZXRfb3B0aW9uPW47ICQoYW1f X21ha2VfcnVubmluZ193aXRoX29wdGlvbikpCistYW1fX21ha2Vfa2VlcGdvaW5nID0gKHRhcmdl dF9vcHRpb249azsgJChhbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uKSkKKy1wa2dkYXRhZGly ID0gJChkYXRhZGlyKS9AUEFDS0FHRUAKKy1wa2dpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9A UEFDS0FHRUAKKy1wa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VACistcGtnbGliZXhlY2Rp ciA9ICQobGliZXhlY2RpcikvQFBBQ0tBR0VACistYW1fX2NkID0gQ0RQQVRIPSIkJHtaU0hfVkVS U0lPTisufSQoUEFUSF9TRVBBUkFUT1IpIiAmJiBjZAorLWluc3RhbGxfc2hfREFUQSA9ICQoaW5z dGFsbF9zaCkgLWMgLW0gNjQ0CistaW5zdGFsbF9zaF9QUk9HUkFNID0gJChpbnN0YWxsX3NoKSAt YworLWluc3RhbGxfc2hfU0NSSVBUID0gJChpbnN0YWxsX3NoKSAtYworLUlOU1RBTExfSEVBREVS ID0gJChJTlNUQUxMX0RBVEEpCistdHJhbnNmb3JtID0gJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1l KQorLU5PUk1BTF9JTlNUQUxMID0gOgorLVBSRV9JTlNUQUxMID0gOgorLVBPU1RfSU5TVEFMTCA9 IDoKKy1OT1JNQUxfVU5JTlNUQUxMID0gOgorLVBSRV9VTklOU1RBTEwgPSA6CistUE9TVF9VTklO U1RBTEwgPSA6CistYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKKy1ob3N0X3RyaXBsZXQgPSBAaG9z dEAKKy1zdWJkaXIgPSAuCistQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAor LWFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworLWFtX19j b25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5E RU5DSUVTKSBcCistCSQoQUNMT0NBTF9NNCkKKy1ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtl ZmlsZS5hbSAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBcCistCSQoYW1fX2NvbmZpZ3VyZV9kZXBz KSAkKGFtX19ESVNUX0NPTU1PTikKKy1hbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUyA9IGNvbmZp Zy5zdGF0dXMgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgXAorLSBjb25maWd1cmUubGluZW5vIGNv bmZpZy5zdGF0dXMubGluZW5vCistbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpICQodG9wX3NyY2Rp cikvbWtpbnN0YWxsZGlycworLUNPTkZJR19IRUFERVIgPSBjb25maWcuaAorLUNPTkZJR19DTEVB Tl9GSUxFUyA9CistQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KKy1BTV9WX1AgPSAkKGFtX192 X1BfQEFNX1ZAKQorLWFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQorLWFtX192 X1BfMCA9IGZhbHNlCistYW1fX3ZfUF8xID0gOgorLUFNX1ZfR0VOID0gJChhbV9fdl9HRU5fQEFN X1ZAKQorLWFtX192X0dFTl8gPSAkKGFtX192X0dFTl9AQU1fREVGQVVMVF9WQCkKKy1hbV9fdl9H RU5fMCA9IEBlY2hvICIgIEdFTiAgICAgIiAkQDsKKy1hbV9fdl9HRU5fMSA9IAorLUFNX1ZfYXQg PSAkKGFtX192X2F0X0BBTV9WQCkKKy1hbV9fdl9hdF8gPSAkKGFtX192X2F0X0BBTV9ERUZBVUxU X1ZAKQorLWFtX192X2F0XzAgPSBACistYW1fX3ZfYXRfMSA9IAorLVNPVVJDRVMgPQorLURJU1Rf U09VUkNFUyA9CistUkVDVVJTSVZFX1RBUkdFVFMgPSBhbGwtcmVjdXJzaXZlIGNoZWNrLXJlY3Vy c2l2ZSBjc2NvcGVsaXN0LXJlY3Vyc2l2ZSBcCistCWN0YWdzLXJlY3Vyc2l2ZSBkdmktcmVjdXJz aXZlIGh0bWwtcmVjdXJzaXZlIGluZm8tcmVjdXJzaXZlIFwKKy0JaW5zdGFsbC1kYXRhLXJlY3Vy c2l2ZSBpbnN0YWxsLWR2aS1yZWN1cnNpdmUgXAorLQlpbnN0YWxsLWV4ZWMtcmVjdXJzaXZlIGlu c3RhbGwtaHRtbC1yZWN1cnNpdmUgXAorLQlpbnN0YWxsLWluZm8tcmVjdXJzaXZlIGluc3RhbGwt cGRmLXJlY3Vyc2l2ZSBcCistCWluc3RhbGwtcHMtcmVjdXJzaXZlIGluc3RhbGwtcmVjdXJzaXZl IGluc3RhbGxjaGVjay1yZWN1cnNpdmUgXAorLQlpbnN0YWxsZGlycy1yZWN1cnNpdmUgcGRmLXJl Y3Vyc2l2ZSBwcy1yZWN1cnNpdmUgXAorLQl0YWdzLXJlY3Vyc2l2ZSB1bmluc3RhbGwtcmVjdXJz aXZlCistYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCistICBjYXNlICQkQU1fVVBEQVRFX0lO Rk9fRElSIGluIFwKKy0gICAgbnxub3xOTykgZmFsc2U7OyBcCistICAgICopIChpbnN0YWxsLWlu Zm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCistICBlc2FjCistUkVDVVJTSVZFX0NM RUFOX1RBUkdFVFMgPSBtb3N0bHljbGVhbi1yZWN1cnNpdmUgY2xlYW4tcmVjdXJzaXZlCVwKKy0g IGRpc3RjbGVhbi1yZWN1cnNpdmUgbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKKy1hbV9fcmVj dXJzaXZlX3RhcmdldHMgPSBcCistICAkKFJFQ1VSU0lWRV9UQVJHRVRTKSBcCistICAkKFJFQ1VS U0lWRV9DTEVBTl9UQVJHRVRTKSBcCistICAkKGFtX19leHRyYV9yZWN1cnNpdmVfdGFyZ2V0cykK Ky1BTV9SRUNVUlNJVkVfVEFSR0VUUyA9ICQoYW1fX3JlY3Vyc2l2ZV90YXJnZXRzOi1yZWN1cnNp dmU9KSBUQUdTIENUQUdTIFwKKy0JY3Njb3BlIGRpc3RkaXIgZGlzdCBkaXN0LWFsbCBkaXN0Y2hl Y2sKKy1hbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxF UykgXAorLQkkKExJU1ApY29uZmlnLmguaW4KKy0jIFJlYWQgYSBsaXN0IG9mIG5ld2xpbmUtc2Vw YXJhdGVkIHN0cmluZ3MgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQsCistIyBhbmQgcHJpbnQgZWFj aCBvZiB0aGVtIG9uY2UsIHdpdGhvdXQgZHVwbGljYXRlcy4gIElucHV0IG9yZGVyIGlzCistIyAq bm90KiBwcmVzZXJ2ZWQuCistYW1fX3VuaXF1aWZ5X2lucHV0ID0gJChBV0spICdcCistICBCRUdJ TiB7IG5vbmVtcHR5ID0gMDsgfSBcCistICB7IGl0ZW1zWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7 IH0gXAorLSAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBpdGVtcykgcHJpbnQgaTsg fTsgfSBcCistJworLSMgTWFrZSBzdXJlIHRoZSBsaXN0IG9mIHNvdXJjZXMgaXMgdW5pcXVlLiAg VGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSwKKy0jIGUuZy4sIHRoZSBzYW1lIHNvdXJjZSBmaWxl IG1pZ2h0IGJlIHNoYXJlZCBhbW9uZyBfU09VUkNFUyB2YXJpYWJsZXMKKy0jIGZvciBkaWZmZXJl bnQgcHJvZ3JhbXMvbGlicmFyaWVzLgorLWFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMgPSBc CistICBsaXN0PSckKGFtX190YWdnZWRfZmlsZXMpJzsgXAorLSAgdW5pcXVlPWBmb3IgaSBpbiAk JGxpc3Q7IGRvIFwKKy0gICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBl Y2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCistICBkb25lIHwgJChhbV9fdW5pcXVpZnlfaW5wdXQp YAorLUVUQUdTID0gZXRhZ3MKKy1DVEFHUyA9IGN0YWdzCistQ1NDT1BFID0gY3Njb3BlCistRElT VF9TVUJESVJTID0gJChTVUJESVJTKQorLWFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtl ZmlsZS5pbiAkKHNyY2RpcikvY29uZmlnLmguaW4gQVVUSE9SUyBcCistCUNPUFlJTkcgQ2hhbmdl TG9nIElOU1RBTEwgTkVXUyBSRUFETUUgY29tcGlsZSBjb25maWcuZ3Vlc3MgXAorLQljb25maWcu c3ViIGRlcGNvbXAgaW5zdGFsbC1zaCBtaXNzaW5nIG1raW5zdGFsbGRpcnMKKy1ESVNURklMRVMg PSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNU KQorLWRpc3RkaXIgPSAkKFBBQ0tBR0UpLSQoVkVSU0lPTikKKy10b3BfZGlzdGRpciA9ICQoZGlz dGRpcikKKy1hbV9fcmVtb3ZlX2Rpc3RkaXIgPSBcCistICBpZiB0ZXN0IC1kICIkKGRpc3RkaXIp IjsgdGhlbiBcCistICAgIGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtMjAwIC1l eGVjIGNobW9kIHUrdyB7fSAnOycgXAorLSAgICAgICYmIHJtIC1yZiAiJChkaXN0ZGlyKSIgXAor LSAgICAgIHx8IHsgc2xlZXAgNSAmJiBybSAtcmYgIiQoZGlzdGRpcikiOyB9OyBcCistICBlbHNl IDo7IGZpCistYW1fX3Bvc3RfcmVtb3ZlX2Rpc3RkaXIgPSAkKGFtX19yZW1vdmVfZGlzdGRpcikK Ky1hbV9fcmVsYXRpdml6ZSA9IFwKKy0gIGRpcjA9YHB3ZGA7IFwKKy0gIHNlZF9maXJzdD0ncyxe XChbXi9dKlwpLy4qJCQsXDEsJzsgXAorLSAgc2VkX3Jlc3Q9J3MsXlteL10qLyosLCc7IFwKKy0g IHNlZF9sYXN0PSdzLF4uKi9cKFteL10qXCkkJCxcMSwnOyBcCistICBzZWRfYnV0bGFzdD0ncywv KlteL10qJCQsLCc7IFwKKy0gIHdoaWxlIHRlc3QgLW4gIiQkZGlyMSI7IGRvIFwKKy0gICAgZmly c3Q9YGVjaG8gIiQkZGlyMSIgfCBzZWQgLWUgIiQkc2VkX2ZpcnN0ImA7IFwKKy0gICAgaWYgdGVz dCAiJCRmaXJzdCIgIT0gIi4iOyB0aGVuIFwKKy0gICAgICBpZiB0ZXN0ICIkJGZpcnN0IiA9ICIu LiI7IHRoZW4gXAorLSAgICAgICAgZGlyMj1gZWNobyAiJCRkaXIwIiB8IHNlZCAtZSAiJCRzZWRf bGFzdCJgLyIkJGRpcjIiOyBcCistICAgICAgICBkaXIwPWBlY2hvICIkJGRpcjAiIHwgc2VkIC1l ICIkJHNlZF9idXRsYXN0ImA7IFwKKy0gICAgICBlbHNlIFwKKy0gICAgICAgIGZpcnN0Mj1gZWNo byAiJCRkaXIyIiB8IHNlZCAtZSAiJCRzZWRfZmlyc3QiYDsgXAorLSAgICAgICAgaWYgdGVzdCAi JCRmaXJzdDIiID0gIiQkZmlyc3QiOyB0aGVuIFwKKy0gICAgICAgICAgZGlyMj1gZWNobyAiJCRk aXIyIiB8IHNlZCAtZSAiJCRzZWRfcmVzdCJgOyBcCistICAgICAgICBlbHNlIFwKKy0gICAgICAg ICAgZGlyMj0iLi4vJCRkaXIyIjsgXAorLSAgICAgICAgZmk7IFwKKy0gICAgICAgIGRpcjA9IiQk ZGlyMCIvIiQkZmlyc3QiOyBcCistICAgICAgZmk7IFwKKy0gICAgZmk7IFwKKy0gICAgZGlyMT1g ZWNobyAiJCRkaXIxIiB8IHNlZCAtZSAiJCRzZWRfcmVzdCJgOyBcCistICBkb25lOyBcCistICBy ZWxkaXI9IiQkZGlyMiIKKy1ESVNUX0FSQ0hJVkVTID0gJChkaXN0ZGlyKS50YXIuZ3oKKy1HWklQ X0VOViA9IC0tYmVzdAorLURJU1RfVEFSR0VUUyA9IGRpc3QtZ3ppcAorLWRpc3R1bmluc3RhbGxj aGVja19saXN0ZmlsZXMgPSBmaW5kIC4gLXR5cGUgZiAtcHJpbnQKKy1hbV9fZGlzdHVuaW5zdGFs bGNoZWNrX2xpc3RmaWxlcyA9ICQoZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgXAorLSAg fCBzZWQgJ3N8XlwuL3wkKHByZWZpeCkvfCcgfCBncmVwIC12ICckKGluZm9kaXIpL2RpciQkJwor LWRpc3RjbGVhbmNoZWNrX2xpc3RmaWxlcyA9IGZpbmQgLiAtdHlwZSBmIC1wcmludAorLUFDTE9D QUwgPSBAQUNMT0NBTEAKKy1BTVRBUiA9IEBBTVRBUkAKKy1BTV9ERUZBVUxUX1ZFUkJPU0lUWSA9 IEBBTV9ERUZBVUxUX1ZFUkJPU0lUWUAKKy1BVVRPQ09ORiA9IEBBVVRPQ09ORkAKKy1BVVRPSEVB REVSID0gQEFVVE9IRUFERVJACistQVVUT01BS0UgPSBAQVVUT01BS0VACistQVdLID0gQEFXS0AK Ky1DQyA9IEBDQ0AKKy1DQ0RFUE1PREUgPSBAQ0NERVBNT0RFQAorLUNGTEFHUyA9IEBDRkxBR1NA CistQ1BQID0gQENQUEAKKy1DUFBGTEFHUyA9IEBDUFBGTEFHU0AKKy1DWUdQQVRIX1cgPSBAQ1lH UEFUSF9XQAorLURFRlMgPSBAREVGU0AKKy1ERVBESVIgPSBAREVQRElSQAorLUVDSE9fQyA9IEBF Q0hPX0NACistRUNIT19OID0gQEVDSE9fTkAKKy1FQ0hPX1QgPSBARUNIT19UQAorLUVHUkVQID0g QEVHUkVQQAorLUVYRUVYVCA9IEBFWEVFWFRACistR1JFUCA9IEBHUkVQQAorLUlOU1RBTEwgPSBA SU5TVEFMTEAKKy1JTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAorLUlOU1RBTExfUFJPR1JB TSA9IEBJTlNUQUxMX1BST0dSQU1ACistSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRA CistSU5TVEFMTF9TVFJJUF9QUk9HUkFNID0gQElOU1RBTExfU1RSSVBfUFJPR1JBTUAKKy1MREZM QUdTID0gQExERkxBR1NACistTElCT0JKUyA9IEBMSUJPQkpTQAorLUxJQlMgPSBATElCU0AKKy1M VExJQk9CSlMgPSBATFRMSUJPQkpTQAorLU1BS0VJTkZPID0gQE1BS0VJTkZPQAorLU1LRElSX1Ag PSBATUtESVJfUEAKKy1PQkpFWFQgPSBAT0JKRVhUQAorLVBBQ0tBR0UgPSBAUEFDS0FHRUAKKy1Q QUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAKKy1QQUNLQUdFX05BTUUgPSBA UEFDS0FHRV9OQU1FQAorLVBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAorLVBBQ0tB R0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACistUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9V UkxACistUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKKy1QQVRIX1NFUEFSQVRP UiA9IEBQQVRIX1NFUEFSQVRPUkAKKy1TRVRfTUFLRSA9IEBTRVRfTUFLRUAKKy1TSEVMTCA9IEBT SEVMTEAKKy1TVFJJUCA9IEBTVFJJUEAKKy1WRVJTSU9OID0gQFZFUlNJT05ACistYWJzX2J1aWxk ZGlyID0gQGFic19idWlsZGRpckAKKy1hYnNfc3JjZGlyID0gQGFic19zcmNkaXJACistYWJzX3Rv cF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAorLWFic190b3Bfc3JjZGlyID0gQGFic190 b3Bfc3JjZGlyQAorLWFjX2N0X0NDID0gQGFjX2N0X0NDQAorLWFtX19pbmNsdWRlID0gQGFtX19p bmNsdWRlQAorLWFtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RACistYW1fX3F1b3Rl ID0gQGFtX19xdW90ZUAKKy1hbV9fdGFyID0gQGFtX190YXJACistYW1fX3VudGFyID0gQGFtX191 bnRhckAKKy1iaW5kaXIgPSBAYmluZGlyQAorLWJ1aWxkID0gQGJ1aWxkQAorLWJ1aWxkX2FsaWFz ID0gQGJ1aWxkX2FsaWFzQAorLWJ1aWxkX2NwdSA9IEBidWlsZF9jcHVACistYnVpbGRfb3MgPSBA YnVpbGRfb3NACistYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckAKKy1idWlsZGRpciA9IEBi dWlsZGRpckAKKy1kYXRhZGlyID0gQGRhdGFkaXJACistZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3Rk aXJACistZG9jZGlyID0gQGRvY2RpckAKKy1kdmlkaXIgPSBAZHZpZGlyQAorLWV4ZWNfcHJlZml4 ID0gQGV4ZWNfcHJlZml4QAorLWhvc3QgPSBAaG9zdEAKKy1ob3N0X2FsaWFzID0gQGhvc3RfYWxp YXNACistaG9zdF9jcHUgPSBAaG9zdF9jcHVACistaG9zdF9vcyA9IEBob3N0X29zQAorLWhvc3Rf dmVuZG9yID0gQGhvc3RfdmVuZG9yQAorLWh0bWxkaXIgPSBAaHRtbGRpckAKKy1pbmNsdWRlZGly ID0gQGluY2x1ZGVkaXJACistaW5mb2RpciA9IEBpbmZvZGlyQAorLWluc3RhbGxfc2ggPSBAaW5z dGFsbF9zaEAKKy1saWJkaXIgPSBAbGliZGlyQAorLWxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAK Ky1sb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAorLWxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRp ckAKKy1tYW5kaXIgPSBAbWFuZGlyQAorLW1rZGlyX3AgPSBAbWtkaXJfcEAKKy1vbGRpbmNsdWRl ZGlyID0gQG9sZGluY2x1ZGVkaXJACistcGRmZGlyID0gQHBkZmRpckAKKy1wcmVmaXggPSBAcHJl Zml4QAorLXByb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAK Ky1wc2RpciA9IEBwc2RpckAKKy1zYmluZGlyID0gQHNiaW5kaXJACistc2hhcmVkc3RhdGVkaXIg PSBAc2hhcmVkc3RhdGVkaXJACistc3JjZGlyID0gQHNyY2RpckAKKy1zeXNjb25mZGlyID0gQHN5 c2NvbmZkaXJACistdGFyZ2V0X2FsaWFzID0gQHRhcmdldF9hbGlhc0AKKy10b3BfYnVpbGRfcHJl Zml4ID0gQHRvcF9idWlsZF9wcmVmaXhACistdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAK Ky10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACistRVhUUkFfRElTVCA9IGluY2x1ZGUvaGV4Lmgg aW5jbHVkZS9oZ2V0b3B0LmggUkVBRE1FLklyaXgKKy1TVUJESVJTID0gc3JjIG1hbgorLWFsbDog Y29uZmlnLmgKKy0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYWxsLXJlY3Vyc2l2ZQorLQorLS5T VUZGSVhFUzoKKy1hbS0tcmVmcmVzaDogTWFrZWZpbGUKKy0JQDoKKy0kKHNyY2RpcikvTWFrZWZp bGUuaW46ICAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQorLQlA Zm9yIGRlcCBpbiAkPzsgZG8gXAorLQkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBzKScgaW4g XAorLQkgICAgKiQkZGVwKikgXAorLQkgICAgICBlY2hvICcgY2QgJChzcmNkaXIpICYmICQoQVVU T01BS0UpIC0tZ251JzsgXAorLQkgICAgICAkKGFtX19jZCkgJChzcmNkaXIpICYmICQoQVVUT01B S0UpIC0tZ251IFwKKy0JCSYmIGV4aXQgMDsgXAorLQkgICAgICBleGl0IDE7OyBcCistCSAgZXNh YzsgXAorLQlkb25lOyBcCistCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0Up IC0tZ251IE1ha2VmaWxlJzsgXAorLQkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCistCSAg JChBVVRPTUFLRSkgLS1nbnUgTWFrZWZpbGUKKy1NYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxl LmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCistCUBjYXNlICckPycgaW4gXAorLQkg ICpjb25maWcuc3RhdHVzKikgXAorLQkgICAgZWNobyAnICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1 cyc7IFwKKy0JICAgICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1czs7IFwKKy0JICAqKSBcCistCSAg ICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAk QCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCistCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYg JChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRAICQoYW1fX2RlcGZpbGVzX21heWJlKTs7IFwKKy0J ZXNhYzsKKy0KKy0kKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9j b25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKKy0JJChTSEVMTCkgLi9jb25m aWcuc3RhdHVzIC0tcmVjaGVjaworLQorLSQodG9wX3NyY2RpcikvY29uZmlndXJlOiAgJChhbV9f Y29uZmlndXJlX2RlcHMpCistCSQoYW1fX2NkKSAkKHNyY2RpcikgJiYgJChBVVRPQ09ORikKKy0k KEFDTE9DQUxfTTQpOiAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQorLQkkKGFtX19jZCkgJChzcmNk aXIpICYmICQoQUNMT0NBTCkgJChBQ0xPQ0FMX0FNRkxBR1MpCistJChhbV9fYWNsb2NhbF9tNF9k ZXBzKToKKy0KKy1jb25maWcuaDogc3RhbXAtaDEKKy0JQHRlc3QgLWYgJEAgfHwgcm0gLWYgc3Rh bXAtaDEKKy0JQHRlc3QgLWYgJEAgfHwgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgc3RhbXAtaDEK Ky0KKy1zdGFtcC1oMTogJChzcmNkaXIpL2NvbmZpZy5oLmluICQodG9wX2J1aWxkZGlyKS9jb25m aWcuc3RhdHVzCistCUBybSAtZiBzdGFtcC1oMQorLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChT SEVMTCkgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oCistJChzcmNkaXIpL2NvbmZpZy5oLmluOiAg JChhbV9fY29uZmlndXJlX2RlcHMpIAorLQkoJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgJChB VVRPSEVBREVSKSkKKy0Jcm0gLWYgc3RhbXAtaDEKKy0JdG91Y2ggJEAKKy0KKy1kaXN0Y2xlYW4t aGRyOgorLQktcm0gLWYgY29uZmlnLmggc3RhbXAtaDEKKy0KKy0jIFRoaXMgZGlyZWN0b3J5J3Mg c3ViZGlyZWN0b3JpZXMgYXJlIG1vc3RseSBpbmRlcGVuZGVudDsgeW91IGNhbiBjZAorLSMgaW50 byB0aGVtIGFuZCBydW4gJ21ha2UnIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGlzIE1ha2VmaWxl LgorLSMgVG8gY2hhbmdlIHRoZSB2YWx1ZXMgb2YgJ21ha2UnIHZhcmlhYmxlczogaW5zdGVhZCBv ZiBlZGl0aW5nIE1ha2VmaWxlcywKKy0jICgxKSBpZiB0aGUgdmFyaWFibGUgaXMgc2V0IGluICdj b25maWcuc3RhdHVzJywgZWRpdCAnY29uZmlnLnN0YXR1cycKKy0jICAgICAod2hpY2ggd2lsbCBj YXVzZSB0aGUgTWFrZWZpbGVzIHRvIGJlIHJlZ2VuZXJhdGVkIHdoZW4geW91IHJ1biAnbWFrZScp OworLSMgKDIpIG90aGVyd2lzZSwgcGFzcyB0aGUgZGVzaXJlZCB2YWx1ZXMgb24gdGhlICdtYWtl JyBjb21tYW5kIGxpbmUuCistJChhbV9fcmVjdXJzaXZlX3RhcmdldHMpOgorLQlAZmFpbD07IFwK Ky0JaWYgJChhbV9fbWFrZV9rZWVwZ29pbmcpOyB0aGVuIFwKKy0JICBmYWlsY29tPSdmYWlsPXll cyc7IFwKKy0JZWxzZSBcCistCSAgZmFpbGNvbT0nZXhpdCAxJzsgXAorLQlmaTsgXAorLQlkb3Rf c2Vlbj1ubzsgXAorLQl0YXJnZXQ9YGVjaG8gJEAgfCBzZWQgcy8tcmVjdXJzaXZlLy9gOyBcCist CWNhc2UgIiRAIiBpbiBcCistCSAgZGlzdGNsZWFuLSogfCBtYWludGFpbmVyLWNsZWFuLSopIGxp c3Q9JyQoRElTVF9TVUJESVJTKScgOzsgXAorLQkgICopIGxpc3Q9JyQoU1VCRElSUyknIDs7IFwK Ky0JZXNhYzsgXAorLQlmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorLQkgIGVjaG8gIk1ha2lu ZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFwKKy0JICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAiLiI7 IHRoZW4gXAorLQkgICAgZG90X3NlZW49eWVzOyBcCistCSAgICBsb2NhbF90YXJnZXQ9IiQkdGFy Z2V0LWFtIjsgXAorLQkgIGVsc2UgXAorLQkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldCI7IFwK Ky0JICBmaTsgXAorLQkgICgkKGFtX19jZCkgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VG TEFHUykgJCRsb2NhbF90YXJnZXQpIFwKKy0JICB8fCBldmFsICQkZmFpbGNvbTsgXAorLQlkb25l OyBcCistCWlmIHRlc3QgIiQkZG90X3NlZW4iID0gIm5vIjsgdGhlbiBcCistCSAgJChNQUtFKSAk KEFNX01BS0VGTEFHUykgIiQkdGFyZ2V0LWFtIiB8fCBleGl0IDE7IFwKKy0JZmk7IHRlc3QgLXog IiQkZmFpbCIKKy0KKy1JRDogJChhbV9fdGFnZ2VkX2ZpbGVzKQorLQkkKGFtX19kZWZpbmVfdW5p cV90YWdnZWRfZmlsZXMpOyBta2lkIC1mSUQgJCR1bmlxdWUKKy10YWdzOiB0YWdzLXJlY3Vyc2l2 ZQorLVRBR1M6IHRhZ3MKKy0KKy10YWdzLWFtOiAkKFRBR1NfREVQRU5ERU5DSUVTKSAkKGFtX190 YWdnZWRfZmlsZXMpCistCXNldCB4OyBcCistCWhlcmU9YHB3ZGA7IFwKKy0JaWYgKCQoRVRBR1Mp IC0tZXRhZ3MtaW5jbHVkZSAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCistCSAg aW5jbHVkZV9vcHRpb249LS1ldGFncy1pbmNsdWRlOyBcCistCSAgZW1wdHlfZml4PS47IFwKKy0J ZWxzZSBcCistCSAgaW5jbHVkZV9vcHRpb249LS1pbmNsdWRlOyBcCistCSAgZW1wdHlfZml4PTsg XAorLQlmaTsgXAorLQlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRv IFwKKy0JICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAuOyB0aGVuIDo7IGVsc2UgXAorLQkgICAgdGVz dCAhIC1mICQkc3ViZGlyL1RBR1MgfHwgXAorLQkgICAgICBzZXQgIiQkQCIgIiQkaW5jbHVkZV9v cHRpb249JCRoZXJlLyQkc3ViZGlyL1RBR1MiOyBcCistCSAgZmk7IFwKKy0JZG9uZTsgXAorLQkk KGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBcCistCXNoaWZ0OyBcCistCWlmIHRlc3Qg LXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCistCSAgdGVzdCAt biAiJCR1bmlxdWUiIHx8IHVuaXF1ZT0kJGVtcHR5X2ZpeDsgXAorLQkgIGlmIHRlc3QgJCQjIC1n dCAwOyB0aGVuIFwKKy0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdT KSAkKEVUQUdTX0FSR1MpIFwKKy0JICAgICAgIiQkQCIgJCR1bmlxdWU7IFwKKy0JICBlbHNlIFwK Ky0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FS R1MpIFwKKy0JICAgICAgJCR1bmlxdWU7IFwKKy0JICBmaTsgXAorLQlmaQorLWN0YWdzOiBjdGFn cy1yZWN1cnNpdmUKKy0KKy1DVEFHUzogY3RhZ3MKKy1jdGFncy1hbTogJChUQUdTX0RFUEVOREVO Q0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQorLQkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmls ZXMpOyBcCistCXRlc3QgLXogIiQoQ1RBR1NfQVJHUykkJHVuaXF1ZSIgXAorLQkgIHx8ICQoQ1RB R1MpICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKKy0JICAg ICAkJHVuaXF1ZQorLQorLUdUQUdTOgorLQloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIp ICYmIHB3ZGAgXAorLQkgICYmICQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpIFwKKy0JICAmJiBndGFn cyAtaSAkKEdUQUdTX0FSR1MpICIkJGhlcmUiCistY3Njb3BlOiBjc2NvcGUuZmlsZXMKKy0JdGVz dCAhIC1zIGNzY29wZS5maWxlcyBcCistCSAgfHwgJChDU0NPUEUpIC1iIC1xICQoQU1fQ1NDT1BF RkxBR1MpICQoQ1NDT1BFRkxBR1MpIC1pIGNzY29wZS5maWxlcyAkKENTQ09QRV9BUkdTKQorLWNs ZWFuLWNzY29wZToKKy0JLXJtIC1mIGNzY29wZS5maWxlcworLWNzY29wZS5maWxlczogY2xlYW4t Y3Njb3BlIGNzY29wZWxpc3QKKy1jc2NvcGVsaXN0OiBjc2NvcGVsaXN0LXJlY3Vyc2l2ZQorLQor LWNzY29wZWxpc3QtYW06ICQoYW1fX3RhZ2dlZF9maWxlcykKKy0JbGlzdD0nJChhbV9fdGFnZ2Vk X2ZpbGVzKSc7IFwKKy0JY2FzZSAiJChzcmNkaXIpIiBpbiBcCistCSAgW1xcL10qIHwgPzpbXFwv XSopIHNkaXI9IiQoc3JjZGlyKSIgOzsgXAorLQkgICopIHNkaXI9JChzdWJkaXIpLyQoc3JjZGly KSA7OyBcCistCWVzYWM7IFwKKy0JZm9yIGkgaW4gJCRsaXN0OyBkbyBcCistCSAgaWYgdGVzdCAt ZiAiJCRpIjsgdGhlbiBcCistCSAgICBlY2hvICIkKHN1YmRpcikvJCRpIjsgXAorLQkgIGVsc2Ug XAorLQkgICAgZWNobyAiJCRzZGlyLyQkaSI7IFwKKy0JICBmaTsgXAorLQlkb25lID4+ICQodG9w X2J1aWxkZGlyKS9jc2NvcGUuZmlsZXMKKy0KKy1kaXN0Y2xlYW4tdGFnczoKKy0JLXJtIC1mIFRB R1MgSUQgR1RBR1MgR1JUQUdTIEdTWU1TIEdQQVRIIHRhZ3MKKy0JLXJtIC1mIGNzY29wZS5vdXQg Y3Njb3BlLmluLm91dCBjc2NvcGUucG8ub3V0IGNzY29wZS5maWxlcworLQorLWRpc3RkaXI6ICQo RElTVEZJTEVTKQorLQkkKGFtX19yZW1vdmVfZGlzdGRpcikKKy0JdGVzdCAtZCAiJChkaXN0ZGly KSIgfHwgbWtkaXIgIiQoZGlzdGRpcikiCistCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIp IiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKy0JdG9wc3JjZGlyc3RyaXA9YGVj aG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorLQls aXN0PSckKERJU1RGSUxFUyknOyBcCistCSAgZGlzdF9maWxlcz1gZm9yIGZpbGUgaW4gJCRsaXN0 OyBkbyBlY2hvICQkZmlsZTsgZG9uZSB8IFwKKy0JICBzZWQgLWUgInN8XiQkc3JjZGlyc3RyaXAv fHw7dCIgXAorLQkgICAgICAtZSAic3xeJCR0b3BzcmNkaXJzdHJpcC98JCh0b3BfYnVpbGRkaXIp L3w7dCJgOyBcCistCWNhc2UgJCRkaXN0X2ZpbGVzIGluIFwKKy0JICAqLyopICQoTUtESVJfUCkg YGVjaG8gIiQkZGlzdF9maWxlcyIgfCBcCistCQkJICAgc2VkICcvXC8vIWQ7c3xefCQoZGlzdGRp cikvfDtzLC9bXi9dKiQkLCwnIHwgXAorLQkJCSAgIHNvcnQgLXVgIDs7IFwKKy0JZXNhYzsgXAor LQlmb3IgZmlsZSBpbiAkJGRpc3RfZmlsZXM7IGRvIFwKKy0JICBpZiB0ZXN0IC1mICQkZmlsZSB8 fCB0ZXN0IC1kICQkZmlsZTsgdGhlbiBkPS47IGVsc2UgZD0kKHNyY2Rpcik7IGZpOyBcCistCSAg aWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwKKy0JICAgIGRpcj1gZWNobyAiLyQkZmlsZSIg fCBzZWQgLWUgJ3MsL1teL10qJCQsLCdgOyBcCistCSAgICBpZiB0ZXN0IC1kICIkKGRpc3RkaXIp LyQkZmlsZSI7IHRoZW4gXAorLQkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUg ZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKy0JICAgIGZpOyBcCist CSAgICBpZiB0ZXN0IC1kICQoc3JjZGlyKS8kJGZpbGUgJiYgdGVzdCAkJGQgIT0gJChzcmNkaXIp OyB0aGVuIFwKKy0JICAgICAgY3AgLWZwUiAkKHNyY2RpcikvJCRmaWxlICIkKGRpc3RkaXIpJCRk aXIiIHx8IGV4aXQgMTsgXAorLQkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUg ZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKy0JICAgIGZpOyBcCist CSAgICBjcCAtZnBSICQkZC8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCist CSAgZWxzZSBcCistCSAgICB0ZXN0IC1mICIkKGRpc3RkaXIpLyQkZmlsZSIgXAorLQkgICAgfHwg Y3AgLXAgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKy0JICAgIHx8IGV4aXQgMTsg XAorLQkgIGZpOyBcCistCWRvbmUKKy0JQGxpc3Q9JyQoRElTVF9TVUJESVJTKSc7IGZvciBzdWJk aXIgaW4gJCRsaXN0OyBkbyBcCistCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gLjsgdGhlbiA6OyBl bHNlIFwKKy0JICAgICQoYW1fX21ha2VfZHJ5cnVuKSBcCistCSAgICAgIHx8IHRlc3QgLWQgIiQo ZGlzdGRpcikvJCRzdWJkaXIiIFwKKy0JICAgICAgfHwgJChNS0RJUl9QKSAiJChkaXN0ZGlyKS8k JHN1YmRpciIgXAorLQkgICAgICB8fCBleGl0IDE7IFwKKy0JICAgIGRpcjE9JCRzdWJkaXI7IGRp cjI9IiQoZGlzdGRpcikvJCRzdWJkaXIiOyBcCistCSAgICAkKGFtX19yZWxhdGl2aXplKTsgXAor LQkgICAgbmV3X2Rpc3RkaXI9JCRyZWxkaXI7IFwKKy0JICAgIGRpcjE9JCRzdWJkaXI7IGRpcjI9 IiQodG9wX2Rpc3RkaXIpIjsgXAorLQkgICAgJChhbV9fcmVsYXRpdml6ZSk7IFwKKy0JICAgIG5l d190b3BfZGlzdGRpcj0kJHJlbGRpcjsgXAorLQkgICAgZWNobyAiIChjZCAkJHN1YmRpciAmJiAk KE1BS0UpICQoQU1fTUFLRUZMQUdTKSB0b3BfZGlzdGRpcj0iJCRuZXdfdG9wX2Rpc3RkaXIiIGRp c3RkaXI9IiQkbmV3X2Rpc3RkaXIiIFxcIjsgXAorLQkgICAgZWNobyAiICAgICBhbV9fcmVtb3Zl X2Rpc3RkaXI9OiBhbV9fc2tpcF9sZW5ndGhfY2hlY2s9OiBhbV9fc2tpcF9tb2RlX2ZpeD06IGRp c3RkaXIpIjsgXAorLQkgICAgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiBcCistCSAgICAgICQoTUFL RSkgJChBTV9NQUtFRkxBR1MpIFwKKy0JICAgICAgICB0b3BfZGlzdGRpcj0iJCRuZXdfdG9wX2Rp c3RkaXIiIFwKKy0JICAgICAgICBkaXN0ZGlyPSIkJG5ld19kaXN0ZGlyIiBcCistCQlhbV9fcmVt b3ZlX2Rpc3RkaXI9OiBcCistCQlhbV9fc2tpcF9sZW5ndGhfY2hlY2s9OiBcCistCQlhbV9fc2tp cF9tb2RlX2ZpeD06IFwKKy0JICAgICAgICBkaXN0ZGlyKSBcCistCSAgICAgIHx8IGV4aXQgMTsg XAorLQkgIGZpOyBcCistCWRvbmUKKy0JLXRlc3QgLW4gIiQoYW1fX3NraXBfbW9kZV9maXgpIiBc CistCXx8IGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtNzU1IFwKKy0JCS1leGVj IGNobW9kIHUrcnd4LGdvK3J4IHt9IFw7IC1vIFwKKy0JICAhIC10eXBlIGQgISAtcGVybSAtNDQ0 IC1saW5rcyAxIC1leGVjIGNobW9kIGErciB7fSBcOyAtbyBcCistCSAgISAtdHlwZSBkICEgLXBl cm0gLTQwMCAtZXhlYyBjaG1vZCBhK3Ige30gXDsgLW8gXAorLQkgICEgLXR5cGUgZCAhIC1wZXJt IC00NDQgLWV4ZWMgJChpbnN0YWxsX3NoKSAtYyAtbSBhK3Ige30ge30gXDsgXAorLQl8fCBjaG1v ZCAtUiBhK3IgIiQoZGlzdGRpcikiCistZGlzdC1nemlwOiBkaXN0ZGlyCistCXRhcmRpcj0kKGRp c3RkaXIpICYmICQoYW1fX3RhcikgfCBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWMgPiQoZGlzdGRp cikudGFyLmd6CistCSQoYW1fX3Bvc3RfcmVtb3ZlX2Rpc3RkaXIpCistCistZGlzdC1iemlwMjog ZGlzdGRpcgorLQl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgQlpJUDI9JCR7QlpJ UDItLTl9IGJ6aXAyIC1jID4kKGRpc3RkaXIpLnRhci5iejIKKy0JJChhbV9fcG9zdF9yZW1vdmVf ZGlzdGRpcikKKy0KKy1kaXN0LWx6aXA6IGRpc3RkaXIKKy0JdGFyZGlyPSQoZGlzdGRpcikgJiYg JChhbV9fdGFyKSB8IGx6aXAgLWMgJCR7TFpJUF9PUFQtLTl9ID4kKGRpc3RkaXIpLnRhci5segor LQkkKGFtX19wb3N0X3JlbW92ZV9kaXN0ZGlyKQorLQorLWRpc3QteHo6IGRpc3RkaXIKKy0JdGFy ZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IFhaX09QVD0kJHtYWl9PUFQtLWV9IHh6IC1j ID4kKGRpc3RkaXIpLnRhci54egorLQkkKGFtX19wb3N0X3JlbW92ZV9kaXN0ZGlyKQorLQorLWRp c3QtdGFyWjogZGlzdGRpcgorLQlAZWNobyBXQVJOSU5HOiAiU3VwcG9ydCBmb3IgZGlzdHJpYnV0 aW9uIGFyY2hpdmVzIGNvbXByZXNzZWQgd2l0aCIgXAorLQkJICAgICAgICJsZWdhY3kgcHJvZ3Jh bSAnY29tcHJlc3MnIGlzIGRlcHJlY2F0ZWQuIiA+JjIKKy0JQGVjaG8gV0FSTklORzogIkl0IHdp bGwgYmUgcmVtb3ZlZCBhbHRvZ2V0aGVyIGluIEF1dG9tYWtlIDIuMCIgPiYyCistCXRhcmRpcj0k KGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBjb21wcmVzcyAtYyA+JChkaXN0ZGlyKS50YXIuWgor LQkkKGFtX19wb3N0X3JlbW92ZV9kaXN0ZGlyKQorLQorLWRpc3Qtc2hhcjogZGlzdGRpcgorLQlA ZWNobyBXQVJOSU5HOiAiU3VwcG9ydCBmb3Igc2hhciBkaXN0cmlidXRpb24gYXJjaGl2ZXMgaXMi IFwKKy0JICAgICAgICAgICAgICAgImRlcHJlY2F0ZWQuIiA+JjIKKy0JQGVjaG8gV0FSTklORzog Ikl0IHdpbGwgYmUgcmVtb3ZlZCBhbHRvZ2V0aGVyIGluIEF1dG9tYWtlIDIuMCIgPiYyCistCXNo YXIgJChkaXN0ZGlyKSB8IEdaSVA9JChHWklQX0VOVikgZ3ppcCAtYyA+JChkaXN0ZGlyKS5zaGFy Lmd6CistCSQoYW1fX3Bvc3RfcmVtb3ZlX2Rpc3RkaXIpCistCistZGlzdC16aXA6IGRpc3RkaXIK Ky0JLXJtIC1mICQoZGlzdGRpcikuemlwCistCXppcCAtcnEgJChkaXN0ZGlyKS56aXAgJChkaXN0 ZGlyKQorLQkkKGFtX19wb3N0X3JlbW92ZV9kaXN0ZGlyKQorLQorLWRpc3QgZGlzdC1hbGw6Cist CSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQoRElTVF9UQVJHRVRTKSBhbV9fcG9zdF9yZW1vdmVf ZGlzdGRpcj0nQDonCistCSQoYW1fX3Bvc3RfcmVtb3ZlX2Rpc3RkaXIpCistCistIyBUaGlzIHRh cmdldCB1bnRhcnMgdGhlIGRpc3QgZmlsZSBhbmQgdHJpZXMgYSBWUEFUSCBjb25maWd1cmF0aW9u LiAgVGhlbgorLSMgaXQgZ3VhcmFudGVlcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgc2VsZi1j b250YWluZWQgYnkgbWFraW5nIGFub3RoZXIKKy0jIHRhcmZpbGUuCistZGlzdGNoZWNrOiBkaXN0 CistCWNhc2UgJyQoRElTVF9BUkNISVZFUyknIGluIFwKKy0JKi50YXIuZ3oqKSBcCistCSAgR1pJ UD0kKEdaSVBfRU5WKSBnemlwIC1kYyAkKGRpc3RkaXIpLnRhci5neiB8ICQoYW1fX3VudGFyKSA7 O1wKKy0JKi50YXIuYnoyKikgXAorLQkgIGJ6aXAyIC1kYyAkKGRpc3RkaXIpLnRhci5iejIgfCAk KGFtX191bnRhcikgOztcCistCSoudGFyLmx6KikgXAorLQkgIGx6aXAgLWRjICQoZGlzdGRpciku dGFyLmx6IHwgJChhbV9fdW50YXIpIDs7XAorLQkqLnRhci54eiopIFwKKy0JICB4eiAtZGMgJChk aXN0ZGlyKS50YXIueHogfCAkKGFtX191bnRhcikgOztcCistCSoudGFyLloqKSBcCistCSAgdW5j b21wcmVzcyAtYyAkKGRpc3RkaXIpLnRhci5aIHwgJChhbV9fdW50YXIpIDs7XAorLQkqLnNoYXIu Z3oqKSBcCistCSAgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1kYyAkKGRpc3RkaXIpLnNoYXIuZ3og fCB1bnNoYXIgOztcCistCSouemlwKikgXAorLQkgIHVuemlwICQoZGlzdGRpcikuemlwIDs7XAor LQllc2FjCistCWNobW9kIC1SIGEtdyAkKGRpc3RkaXIpCistCWNobW9kIHUrdyAkKGRpc3RkaXIp CistCW1rZGlyICQoZGlzdGRpcikvX2J1aWxkICQoZGlzdGRpcikvX2J1aWxkL3N1YiAkKGRpc3Rk aXIpL19pbnN0CistCWNobW9kIGEtdyAkKGRpc3RkaXIpCistCXRlc3QgLWQgJChkaXN0ZGlyKS9f YnVpbGQgfHwgZXhpdCAwOyBcCistCWRjX2luc3RhbGxfYmFzZT1gJChhbV9fY2QpICQoZGlzdGRp cikvX2luc3QgJiYgcHdkIHwgc2VkIC1lICdzLF5bXjpcXC9dOltcXC9dLC8sJ2AgXAorLQkgICYm IGRjX2Rlc3RkaXI9IiQke1RNUERJUi0vdG1wfS9hbS1kYy0kJCQkLyIgXAorLQkgICYmIGFtX19j d2Q9YHB3ZGAgXAorLQkgICYmICQoYW1fX2NkKSAkKGRpc3RkaXIpL19idWlsZC9zdWIgXAorLQkg ICYmIC4uLy4uL2NvbmZpZ3VyZSBcCistCSAgICAkKEFNX0RJU1RDSEVDS19DT05GSUdVUkVfRkxB R1MpIFwKKy0JICAgICQoRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUykgXAorLQkgICAgLS1zcmNk aXI9Li4vLi4gLS1wcmVmaXg9IiQkZGNfaW5zdGFsbF9iYXNlIiBcCistCSAgJiYgJChNQUtFKSAk KEFNX01BS0VGTEFHUykgXAorLQkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGR2aSBcCist CSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgY2hlY2sgXAorLQkgICYmICQoTUFLRSkgJChB TV9NQUtFRkxBR1MpIGluc3RhbGwgXAorLQkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGlu c3RhbGxjaGVjayBcCistCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgdW5pbnN0YWxsIFwK Ky0JICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkaXN0dW5pbnN0YWxsY2hlY2tfZGlyPSIk JGRjX2luc3RhbGxfYmFzZSIgXAorLQkgICAgICAgIGRpc3R1bmluc3RhbGxjaGVjayBcCistCSAg JiYgY2htb2QgLVIgYS13ICIkJGRjX2luc3RhbGxfYmFzZSIgXAorLQkgICYmICh7IFwKKy0JICAg ICAgIChjZCAuLi8uLiAmJiB1bWFzayAwNzcgJiYgbWtkaXIgIiQkZGNfZGVzdGRpciIpIFwKKy0J ICAgICAgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIERFU1RESVI9IiQkZGNfZGVzdGRpciIg aW5zdGFsbCBcCistCSAgICAgICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBERVNURElSPSIk JGRjX2Rlc3RkaXIiIHVuaW5zdGFsbCBcCistCSAgICAgICAmJiAkKE1BS0UpICQoQU1fTUFLRUZM QUdTKSBERVNURElSPSIkJGRjX2Rlc3RkaXIiIFwKKy0JICAgICAgICAgICAgZGlzdHVuaW5zdGFs bGNoZWNrX2Rpcj0iJCRkY19kZXN0ZGlyIiBkaXN0dW5pbnN0YWxsY2hlY2s7IFwKKy0JICAgICAg fSB8fCB7IHJtIC1yZiAiJCRkY19kZXN0ZGlyIjsgZXhpdCAxOyB9KSBcCistCSAgJiYgcm0gLXJm ICIkJGRjX2Rlc3RkaXIiIFwKKy0JICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkaXN0IFwK Ky0JICAmJiBybSAtcmYgJChESVNUX0FSQ0hJVkVTKSBcCistCSAgJiYgJChNQUtFKSAkKEFNX01B S0VGTEFHUykgZGlzdGNsZWFuY2hlY2sgXAorLQkgICYmIGNkICIkJGFtX19jd2QiIFwKKy0JICB8 fCBleGl0IDEKKy0JJChhbV9fcG9zdF9yZW1vdmVfZGlzdGRpcikKKy0JQChlY2hvICIkKGRpc3Rk aXIpIGFyY2hpdmVzIHJlYWR5IGZvciBkaXN0cmlidXRpb246ICI7IFwKKy0JICBsaXN0PSckKERJ U1RfQVJDSElWRVMpJzsgZm9yIGkgaW4gJCRsaXN0OyBkbyBlY2hvICQkaTsgZG9uZSkgfCBcCist CSAgc2VkIC1lIDFoIC1lIDFzLy4vPS9nIC1lIDFwIC1lIDF4IC1lICckJHAnIC1lICckJHgnCist ZGlzdHVuaW5zdGFsbGNoZWNrOgorLQlAdGVzdCAtbiAnJChkaXN0dW5pbnN0YWxsY2hlY2tfZGly KScgfHwgeyBcCistCSAgZWNobyAnRVJST1I6IHRyeWluZyB0byBydW4gJEAgd2l0aCBhbiBlbXB0 eScgXAorLQkgICAgICAgJyQkKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyA+JjI7IFwKKy0JICBl eGl0IDE7IFwKKy0JfTsgXAorLQkkKGFtX19jZCkgJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2Rpcikn IHx8IHsgXAorLQkgIGVjaG8gJ0VSUk9SOiBjYW5ub3QgY2hkaXIgaW50byAkKGRpc3R1bmluc3Rh bGxjaGVja19kaXIpJyA+JjI7IFwKKy0JICBleGl0IDE7IFwKKy0JfTsgXAorLQl0ZXN0IGAkKGFt X19kaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzKSB8IHdjIC1sYCAtZXEgMCBcCistCSAgIHx8 IHsgZWNobyAiRVJST1I6IGZpbGVzIGxlZnQgYWZ0ZXIgdW5pbnN0YWxsOiIgOyBcCistCSAgICAg ICAgaWYgdGVzdCAtbiAiJChERVNURElSKSI7IHRoZW4gXAorLQkgICAgICAgICAgZWNobyAiICAo Y2hlY2sgREVTVERJUiBzdXBwb3J0KSI7IFwKKy0JICAgICAgICBmaSA7IFwKKy0JICAgICAgICAk KGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIDsgXAorLQkgICAgICAgIGV4aXQgMTsgfSA+ JjIKKy1kaXN0Y2xlYW5jaGVjazogZGlzdGNsZWFuCistCUBpZiB0ZXN0ICckKHNyY2RpciknID0g LiA7IHRoZW4gXAorLQkgIGVjaG8gIkVSUk9SOiBkaXN0Y2xlYW5jaGVjayBjYW4gb25seSBydW4g ZnJvbSBhIFZQQVRIIGJ1aWxkIiA7IFwKKy0JICBleGl0IDEgOyBcCistCWZpCistCUB0ZXN0IGAk KGRpc3RjbGVhbmNoZWNrX2xpc3RmaWxlcykgfCB3YyAtbGAgLWVxIDAgXAorLQkgIHx8IHsgZWNo byAiRVJST1I6IGZpbGVzIGxlZnQgaW4gYnVpbGQgZGlyZWN0b3J5IGFmdGVyIGRpc3RjbGVhbjoi IDsgXAorLQkgICAgICAgJChkaXN0Y2xlYW5jaGVja19saXN0ZmlsZXMpIDsgXAorLQkgICAgICAg ZXhpdCAxOyB9ID4mMgorLWNoZWNrLWFtOiBhbGwtYW0KKy1jaGVjazogY2hlY2stcmVjdXJzaXZl CistYWxsLWFtOiBNYWtlZmlsZSBjb25maWcuaAorLWluc3RhbGxkaXJzOiBpbnN0YWxsZGlycy1y ZWN1cnNpdmUKKy1pbnN0YWxsZGlycy1hbToKKy1pbnN0YWxsOiBpbnN0YWxsLXJlY3Vyc2l2ZQor LWluc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLXJlY3Vyc2l2ZQorLWluc3RhbGwtZGF0YTogaW5z dGFsbC1kYXRhLXJlY3Vyc2l2ZQorLXVuaW5zdGFsbDogdW5pbnN0YWxsLXJlY3Vyc2l2ZQorLQor LWluc3RhbGwtYW06IGFsbC1hbQorLQlAJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbC1l eGVjLWFtIGluc3RhbGwtZGF0YS1hbQorLQorLWluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLXJl Y3Vyc2l2ZQorLWluc3RhbGwtc3RyaXA6CistCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBc CistCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExf U1RSSVBfUFJPR1JBTSkiIFwKKy0JICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NU UklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorLQkgICAgICBpbnN0YWxsOyBc CistCWVsc2UgXAorLQkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0i JChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCistCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQo SU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKy0JICAgICJJ TlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCistCWZp CistbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKKy0KKy1jbGVhbi1nZW5lcmljOgorLQorLWRpc3RjbGVh bi1nZW5lcmljOgorLQktdGVzdCAteiAiJChDT05GSUdfQ0xFQU5fRklMRVMpIiB8fCBybSAtZiAk KENPTkZJR19DTEVBTl9GSUxFUykKKy0JLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXog IiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBB VEhfRklMRVMpCistCistbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljOgorLQlAZWNobyAiVGhpcyBj b21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCistCUBlY2hvICJpdCBk ZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIK Ky1jbGVhbjogY2xlYW4tcmVjdXJzaXZlCistCistY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgbW9z dGx5Y2xlYW4tYW0KKy0KKy1kaXN0Y2xlYW46IGRpc3RjbGVhbi1yZWN1cnNpdmUKKy0JLXJtIC1m ICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpCistCS1ybSAtZiBNYWtlZmlsZQorLWRpc3Rj bGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWhkciBkaXN0Y2xl YW4tdGFncworLQorLWR2aTogZHZpLXJlY3Vyc2l2ZQorLQorLWR2aS1hbToKKy0KKy1odG1sOiBo dG1sLXJlY3Vyc2l2ZQorLQorLWh0bWwtYW06CistCistaW5mbzogaW5mby1yZWN1cnNpdmUKKy0K Ky1pbmZvLWFtOgorLQorLWluc3RhbGwtZGF0YS1hbToKKy0KKy1pbnN0YWxsLWR2aTogaW5zdGFs bC1kdmktcmVjdXJzaXZlCistCistaW5zdGFsbC1kdmktYW06CistCistaW5zdGFsbC1leGVjLWFt OgorLQorLWluc3RhbGwtaHRtbDogaW5zdGFsbC1odG1sLXJlY3Vyc2l2ZQorLQorLWluc3RhbGwt aHRtbC1hbToKKy0KKy1pbnN0YWxsLWluZm86IGluc3RhbGwtaW5mby1yZWN1cnNpdmUKKy0KKy1p bnN0YWxsLWluZm8tYW06CistCistaW5zdGFsbC1tYW46CistCistaW5zdGFsbC1wZGY6IGluc3Rh bGwtcGRmLXJlY3Vyc2l2ZQorLQorLWluc3RhbGwtcGRmLWFtOgorLQorLWluc3RhbGwtcHM6IGlu c3RhbGwtcHMtcmVjdXJzaXZlCistCistaW5zdGFsbC1wcy1hbToKKy0KKy1pbnN0YWxsY2hlY2st YW06CistCistbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKKy0J LXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpCistCS1ybSAtcmYgJCh0b3Bfc3Jj ZGlyKS9hdXRvbTR0ZS5jYWNoZQorLQktcm0gLWYgTWFrZWZpbGUKKy1tYWludGFpbmVyLWNsZWFu LWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljCistCistbW9zdGx5Y2xl YW46IG1vc3RseWNsZWFuLXJlY3Vyc2l2ZQorLQorLW1vc3RseWNsZWFuLWFtOiBtb3N0bHljbGVh bi1nZW5lcmljCistCistcGRmOiBwZGYtcmVjdXJzaXZlCistCistcGRmLWFtOgorLQorLXBzOiBw cy1yZWN1cnNpdmUKKy0KKy1wcy1hbToKKy0KKy11bmluc3RhbGwtYW06CistCistLk1BS0U6ICQo YW1fX3JlY3Vyc2l2ZV90YXJnZXRzKSBhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCistCist LlBIT05ZOiAkKGFtX19yZWN1cnNpdmVfdGFyZ2V0cykgQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxs LWFtIFwKKy0JYW0tLXJlZnJlc2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tY3Njb3BlIGNs ZWFuLWdlbmVyaWMgXAorLQljc2NvcGUgY3Njb3BlbGlzdC1hbSBjdGFncyBjdGFncy1hbSBkaXN0 IGRpc3QtYWxsIGRpc3QtYnppcDIgXAorLQlkaXN0LWd6aXAgZGlzdC1semlwIGRpc3Qtc2hhciBk aXN0LXRhclogZGlzdC14eiBkaXN0LXppcCBcCistCWRpc3RjaGVjayBkaXN0Y2xlYW4gZGlzdGNs ZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWhkciBcCistCWRpc3RjbGVhbi10YWdzIGRpc3RjbGVhbmNo ZWNrIGRpc3RkaXIgZGlzdHVuaW5zdGFsbGNoZWNrIGR2aSBcCistCWR2aS1hbSBodG1sIGh0bWwt YW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBcCistCWluc3RhbGwtZGF0YSBpbnN0 YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gXAorLQlpbnN0YWxsLWV4ZWMg aW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gXAorLQlpbnN0YWxs LWluZm8gaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIFwKKy0JaW5zdGFs bC1wZGYtYW0gaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgXAorLQlpbnN0 YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIGluc3RhbGxkaXJzLWFtIFwKKy0J bWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAor LQltb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB0YWdzLWFtIHVu aW5zdGFsbCBcCistCXVuaW5zdGFsbC1hbQorLQorLS5QUkVDSU9VUzogTWFrZWZpbGUKKy0KKy0K Ky0jIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBh bGwgdmFyaWFibGVzLgorLSMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBs ZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgorLS5OT0VYUE9SVDoKK2RpZmYgLS1naXQgYS9SRUFETUUu bWQgYi9SRUFETUUubWQKK2luZGV4IDNlYWQ3YTcuLmJkYTgzMWMgMTAwNjQ0CistLS0gYS9SRUFE TUUubWQKKysrKyBiL1JFQURNRS5tZAorQEAgLTEsMTUgKzEsMTUgQEAKKy1oZXhjdXJzZSB2MS42 MC4wCisraGV4Y3Vyc2UKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist WyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvTG9ubnlHb21lcy9oZXhjdXJz ZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9Mb25ueUdvbWVzL2hl eGN1cnNlKQorIAorLSFbaGV4Y3Vyc2Ugc2NyZWVuc2hvdF0oaHR0cDovL2xvbm55Z29tZXMuZ2l0 aHViLmlvL3NjcmVlbnNob3RzL2hleGN1cnNlMi1zcy5qcGcpCisrUHJvamVjdDogaHR0cHM6Ly9n aXRodWIuY29tL3Byc28vaGV4Y3Vyc2UKKyAKKy1CdWcgcmVwb3J0czogaHR0cHM6Ly9naXRodWIu Y29tL0xvbm55R29tZXMvaGV4Y3Vyc2UvaXNzdWVzCisrIVtoZXhjdXJzZSBzY3JlZW5zaG90XShz Y3JlZW5zaG90cy9oZXhjdXJzZS1zY3JlZW5zaG90LnBuZykKKyAKKytUaGlzIGlzIGEgZm9yayBm cm9tIFtMb25ueUdvbWVzL2hleGN1cnNlXShodHRwczovL2dpdGh1Yi5jb20vTG9ubnlHb21lcy9o ZXhjdXJzZSkgd2l0aCBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgorIAorIERlc2NyaXB0aW9uCisg LS0tLS0tLS0tLS0KKy1IZXhjdXJzZSBpcyBhIGN1cnNlcy1iYXNlIGhleCBlZGl0aW5nIHV0aWxp dHkgdGhhdCBjYW4gb3BlbiwgZWRpdCwgYW5kIHNhdmUgZmlsZXMsIGVkaXRpbmcgYm90aCB0aGUg aGV4YWRlY2ltYWwgYW5kIGRlY2ltYWwgdmFsdWVzLgorK0hleGN1cnNlIGlzIGEgY3Vyc2VzLWJh c2VkIGhleCBlZGl0aW5nIHV0aWxpdHkgdGhhdCBjYW4gb3BlbiwgZWRpdCwgYW5kIHNhdmUgZmls ZXMsIGVkaXRpbmcgYm90aCB0aGUgaGV4YWRlY2ltYWwgYW5kIGRlY2ltYWwgdmFsdWVzLgorIAor IEl0IHdhcyB3cml0dGVuIGJ5IFtMb25ueSBHb21lc10oaHR0cHM6Ly90d2l0dGVyLmNvbS9sb25u eWdvbWVzKSBhbmQgW0phbWVzIFN0ZXBoZW5zb25dKGh0dHBzOi8vcGx1cy5nb29nbGUuY29tL3Uv MC8xMDMxNzQ0NTkyNTgxNzUwNzA3ODQvYWJvdXQpIGJ1dCB3ZSBoYXZlbid0IG1haW50YWluZWQg aXQgZm9yIHNvbWUgdGltZS4gV2UgcmVjZW50bHkgc2F3IGFuIG9sZCB0YXJiYWxsIG9mIHRoZSBj b2RlIGZsb2F0aW5nIGFyb3VuZCB0aGUgbmV0IGFuZCB0aG91Z2h0IGl0IHdvdWxkIGJlIGdvb2Qg dG8gc3RhcnQgbWFpbnRhaW5pbmcgdGhlIGNvZGViYXNlIGFnYWluLgorIAorQEAgLTMxLDE0ICsz MSwyMSBAQCBJbnN0YWxsYXRpb24KKyBVc2FnZQorIC0tLS0tCisgCistICAgIHVzYWdlOiBoZXhj dXJzZSBbLT98aGVscF0gWy1hXSBbLXIgcm51bV0gWy1vIG91dHB1dGZpbGVdIFtbLWldIGluZmls ZV0KKy0KKy0gICAgICAgIC1hICAgICAgT3V0cHV0IGFkZHJlc3NlcyBpbiBkZWNpbWFsIGZvcm1h dCBpbml0aWFsbHkKKy0gICAgICAgIC1lICAgICAgT3V0cHV0IGNoYXJhY3RlcnMgaW4gRUJDRElD IGZvcm1hdCByYXRoZXIgdGhhbiBBU0NJSQorLSAgICAgICAgLXIgcm51bSBSZXNpemUgdGhlIGRp c3BsYXkgdG8gInJudW0iIGJ5dGVzIHdpZGUKKy0gICAgICAgIC1vIG91dGZpbGUgIFdyaXRlIG91 dHB1dCB0byBvdXRmaWxlIGJ5IGRlZmF1bHQKKy0gICAgICAgIC0/IHwgLWhlbHAgIERpc3BsYXkg dXNhZ2UgYW5kIHZlcnNpb24gb2YgaGV4Y3Vyc2UgcHJvZ3JhbQorLSAgICAgICAgWy1pXSBpbmZp bGUgUmVhZCBmcm9tIGRhdGEgZnJvbSBpbmZpbGUgKC1pIHJlcXVpcmVkIGlmIG5vdCBsYXN0IGFy Z3VtZW50KQorKyAgICB1c2FnZTogaGV4Y3Vyc2UgWy0/fGhlbHBdIFstYV0gWy1jIGNvbG9ybGV2 ZWxdIFstZV0gWy1mXSBbLW8gb3V0cHV0ZmlsZV0gWy1yIHJudW1dIFstdF0gW1staV0gaW5maWxl XQorKworKyAgICAgICAgLT8gfCAtaGVscCAgICBEaXNwbGF5IHVzYWdlIGFuZCB2ZXJzaW9uIG9m IGhleGN1cnNlIHByb2dyYW0KKysgICAgICAgIC1hICAgICAgICAgICAgT3V0cHV0IGFkZHJlc3Nl cyBpbiBkZWNpbWFsIGZvcm1hdCBpbml0aWFsbHkKKysgICAgICAgIC1jIGNvbG9ybGV2ZWwgU2V0 IHRoZSBjb2xvciBsZXZlbDoKKysgICAgICAgICAgICAgICAgICAgICAgICAwOiBubyBjb2xvcnMK KysgICAgICAgICAgICAgICAgICAgICAgICAxOiBvbmx5IGNvbG9yIGZvciBhZGRyZXNzZXMKKysg ICAgICAgICAgICAgICAgICAgICAgICAyOiAxICsgY29sb3IgZm9yIDAwIChkZWZhdWx0IGlmIHRl cm1pbmFsIHN1cHBvcnRzIGNvbG9yKQorKyAgICAgICAgICAgICAgICAgICAgICAgIDM6IG11bHRp Y29sb3IgYnkgRnJhbmtTYW5zQworKyAgICAgICAgLWUgICAgICAgICAgICBPdXRwdXQgY2hhcmFj dGVycyBpbiBFQkNESUMgZm9ybWF0IHJhdGhlciB0aGFuIEFTQ0lJCisrICAgICAgICAtZiAgICAg ICAgICAgIFNob3cgZnVuY3Rpb24ga2V5IG51bWJlcnMgaW4gbGFiZWxzCisrICAgICAgICAtbyBv dXRmaWxlICAgIFdyaXRlIG91dHB1dCB0byBvdXRmaWxlIGJ5IGRlZmF1bHQKKysgICAgICAgIC1y IHJudW0gICAgICAgUmVzaXplIHRoZSBkaXNwbGF5IHRvICJybnVtIiBieXRlcyB3aWRlCisrICAg ICAgICAtdCAgICAgICAgICAgIEtlZXAgY29sb3JzIGRlZmluZWQgYnkgdGVybWluYWwKKysgICAg ICAgIFstaV0gaW5maWxlICAgUmVhZCBmcm9tIGRhdGEgZnJvbSBpbmZpbGUgKC1pIHJlcXVpcmVk IGlmIG5vdCBsYXN0IGFyZ3VtZW50KQorIAorICMjIyMgS2V5Ym9hcmQgc2hvcnRjdXRzCisgCitk aWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKK2RlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggZjMwMThmNi4uMDAwMDAwMAorLS0tIGEvYWNsb2NhbC5tNAorKysrIC9kZXYv bnVsbAorQEAgLTEsMTE1MiArMCwwIEBACistIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBh Y2xvY2FsIDEuMTUgLSotIEF1dG9jb25mIC0qLQorLQorLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIw MTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistIyBUaGlzIGZpbGUgaXMgZnJl ZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1p dGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Ig d2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZl ZC4KKy0KKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0 ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKy0jIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKKy0jIFBBUlRJQ1VMQVIgUFVS UE9TRS4KKy0KKy1tNF9pZm5kZWYoW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW200X2RlZnVuKFtf QU1fQ09ORklHX01BQ1JPX0RJUlNdLCBbXSltNF9kZWZ1bihbQUNfQ09ORklHX01BQ1JPX0RJUlNd LCBbX0FNX0NPTkZJR19NQUNST19ESVJTKCRAKV0pXSkKKy1tNF9pZm5kZWYoW0FDX0FVVE9DT05G X1ZFUlNJT05dLAorLSAgW200X2NvcHkoW200X1BBQ0tBR0VfVkVSU0lPTl0sIFtBQ19BVVRPQ09O Rl9WRVJTSU9OXSldKWRubAorLW00X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwg WzIuNjldLCwKKy1bbTRfd2FybmluZyhbdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIGF1dG9j b25mIDIuNjkuCistWW91IGhhdmUgYW5vdGhlciB2ZXJzaW9uIG9mIGF1dG9jb25mLiAgSXQgbWF5 IHdvcmssIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0by4KKy1JZiB5b3UgaGF2ZSBwcm9ibGVtcywg eW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KKy1U byBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlw aWNhbGx5ICdhdXRvcmVjb25mJy5dKV0pCistCistIyBDb3B5cmlnaHQgKEMpIDIwMDItMjAxNCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jCistIyBUaGlzIGZpbGUgaXMgZnJlZSBz b2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVk IHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0 aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4K Ky0KKy0jIEFNX0FVVE9NQUtFX1ZFUlNJT04oVkVSU0lPTikKKy0jIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0jIEF1dG9tYWtlIFguWSB0cmFjZXMgdGhpcyBtYWNybyB0byBlbnN1cmUg YWNsb2NhbC5tNCBoYXMgYmVlbgorLSMgZ2VuZXJhdGVkIGZyb20gdGhlIG00IGZpbGVzIGFjY29t cGFueWluZyBBdXRvbWFrZSBYLlkuCistIyAoVGhpcyBwcml2YXRlIG1hY3JvIHNob3VsZCBub3Qg YmUgY2FsbGVkIG91dHNpZGUgdGhpcyBmaWxlLikKKy1BQ19ERUZVTihbQU1fQVVUT01BS0VfVkVS U0lPTl0sCistW2FtX19hcGlfdmVyc2lvbj0nMS4xNScKKy1kbmwgU29tZSB1c2VycyBmaW5kIEFN X0FVVE9NQUtFX1ZFUlNJT04gYW5kIG1pc3Rha2UgaXQgZm9yIGEgd2F5IHRvCistZG5sIHJlcXVp cmUgc29tZSBtaW5pbXVtIHZlcnNpb24uICBQb2ludCB0aGVtIHRvIHRoZSByaWdodCBtYWNyby4K Ky1tNF9pZihbJDFdLCBbMS4xNV0sIFtdLAorLSAgICAgIFtBQ19GQVRBTChbRG8gbm90IGNhbGwg JDAsIHVzZSBBTV9JTklUX0FVVE9NQUtFKFskMV0pLl0pXSlkbmwKKy1dKQorLQorLSMgX0FNX0FV VE9DT05GX1ZFUlNJT04oVkVSU0lPTikKKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistIyBhY2xvY2FsIHRyYWNlcyB0aGlzIG1hY3JvIHRvIGZpbmQgdGhlIEF1dG9jb25mIHZlcnNp b24uCistIyBUaGlzIGlzIGEgcHJpdmF0ZSBtYWNybyB0b28uICBVc2luZyBtNF9kZWZpbmUgc2lt cGxpZmllcworLSMgdGhlIGxvZ2ljIGluIGFjbG9jYWwsIHdoaWNoIGNhbiBzaW1wbHkgaWdub3Jl IHRoaXMgZGVmaW5pdGlvbi4KKy1tNF9kZWZpbmUoW19BTV9BVVRPQ09ORl9WRVJTSU9OXSwgW10p CistCistIyBBTV9TRVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9OCistIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gYW5kIEFNX0FV VE9NQUtFX1ZFUlNJT04gc28gdGhleSBjYW4gYmUgdHJhY2VkLgorLSMgVGhpcyBmdW5jdGlvbiBp cyBBQ19SRVFVSVJFZCBieSBBTV9JTklUX0FVVE9NQUtFLgorLUFDX0RFRlVOKFtBTV9TRVRfQ1VS UkVOVF9BVVRPTUFLRV9WRVJTSU9OXSwKKy1bQU1fQVVUT01BS0VfVkVSU0lPTihbMS4xNV0pZG5s CistbTRfaWZuZGVmKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSwKKy0gIFttNF9jb3B5KFttNF9QQUNL QUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKKy1fQU1fQVVUT0NPTkZf VkVSU0lPTihtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSkpXSkKKy0KKy0jIEFNX0FVWF9E SVJfRVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0 b2NvbmYgLSotCistCistIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKy0jCistIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8g Y29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRp b25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKy0KKy0jIEZvciBwcm9q ZWN0cyB1c2luZyBBQ19DT05GSUdfQVVYX0RJUihbZm9vXSksIEF1dG9jb25mIHNldHMKKy0jICRh Y19hdXhfZGlyIHRvICckc3JjZGlyL2ZvbycuICBJbiBvdGhlciBwcm9qZWN0cywgaXQgaXMgc2V0 IHRvCistIyAnJHNyY2RpcicsICckc3JjZGlyLy4uJywgb3IgJyRzcmNkaXIvLi4vLi4nLgorLSMK Ky0jIE9mIGNvdXJzZSwgQXV0b21ha2UgbXVzdCBob25vciB0aGlzIHZhcmlhYmxlIHdoZW5ldmVy IGl0IGNhbGxzIGEKKy0jIHRvb2wgZnJvbSB0aGUgYXV4aWxpYXJ5IGRpcmVjdG9yeS4gIFRoZSBw cm9ibGVtIGlzIHRoYXQgJHNyY2RpciAoYW5kCistIyB0aGVyZWZvcmUgJGFjX2F1eF9kaXIgYXMg d2VsbCkgY2FuIGJlIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSwKKy0jIGRlcGVuZGluZyBv biBob3cgY29uZmlndXJlIGlzIHJ1bi4gIFRoaXMgaXMgcHJldHR5IGFubm95aW5nLCBzaW5jZQor LSMgaXQgbWFrZXMgJGFjX2F1eF9kaXIgcXVpdGUgdW51c2FibGUgaW4gc3ViZGlyZWN0b3JpZXM6 IGluIHRoZSB0b3AKKy0jIHNvdXJjZSBkaXJlY3RvcnksIGFueSBmb3JtIHdpbGwgd29yayBmaW5l LCBidXQgaW4gc3ViZGlyZWN0b3JpZXMgYQorLSMgcmVsYXRpdmUgcGF0aCBuZWVkcyB0byBiZSBh ZGp1c3RlZCBmaXJzdC4KKy0jCistIyAkYWNfYXV4X2Rpci9taXNzaW5nCistIyAgICBmYWlscyB3 aGVuIGNhbGxlZCBmcm9tIGEgc3ViZGlyZWN0b3J5IGlmICRhY19hdXhfZGlyIGlzIHJlbGF0aXZl CistIyAkdG9wX3NyY2Rpci8kYWNfYXV4X2Rpci9taXNzaW5nCistIyAgICBmYWlscyBpZiAkYWNf YXV4X2RpciBpcyBhYnNvbHV0ZSwKKy0jICAgIGZhaWxzIHdoZW4gY2FsbGVkIGZyb20gYSBzdWJk aXJlY3RvcnkgaW4gYSBWUEFUSCBidWlsZCB3aXRoCistIyAgICAgICAgICBhIHJlbGF0aXZlICRh Y19hdXhfZGlyCistIworLSMgVGhlIHJlYXNvbiBvZiB0aGUgbGF0dGVyIGZhaWx1cmUgaXMgdGhh dCAkdG9wX3NyY2RpciBhbmQgJGFjX2F1eF9kaXIKKy0jIGFyZSBib3RoIHByZWZpeGVkIGJ5ICRz cmNkaXIuICBJbiBhbiBpbi1zb3VyY2UgYnVpbGQgdGhpcyBpcyB1c3VhbGx5CistIyBoYXJtbGVz cyBiZWNhdXNlICRzcmNkaXIgaXMgJy4nLCBidXQgdGhpbmdzIHdpbGwgYnJva2Ugd2hlbiB5b3UK Ky0jIHN0YXJ0IGEgVlBBVEggYnVpbGQgb3IgdXNlIGFuIGFic29sdXRlICRzcmNkaXIuCistIwor LSMgU28gd2UgY291bGQgdXNlIHNvbWV0aGluZyBzaW1pbGFyIHRvICR0b3Bfc3JjZGlyLyRhY19h dXhfZGlyL21pc3NpbmcsCistIyBpZmYgd2Ugc3RyaXAgdGhlIGxlYWRpbmcgJHNyY2RpciBmcm9t ICRhY19hdXhfZGlyLiAgVGhhdCB3b3VsZCBiZToKKy0jICAgYW1fYXV4X2Rpcj0nXCQodG9wX3Ny Y2RpcikvJ2BleHByICIkYWNfYXV4X2RpciIgOiAiJHNyY2Rpci8vKlwoLipcKSJgCistIyBhbmQg dGhlbiB3ZSB3b3VsZCBkZWZpbmUgJE1JU1NJTkcgYXMKKy0jICAgTUlTU0lORz0iXCR7U0hFTEx9 ICRhbV9hdXhfZGlyL21pc3NpbmciCistIyBUaGlzIHdpbGwgd29yayBhcyBsb25nIGFzIE1JU1NJ TkcgaXMgbm90IGNhbGxlZCBmcm9tIGNvbmZpZ3VyZSwgYmVjYXVzZQorLSMgdW5mb3J0dW5hdGVs eSAkKHRvcF9zcmNkaXIpIGhhcyBubyBtZWFuaW5nIGluIGNvbmZpZ3VyZS4KKy0jIEhvd2V2ZXIg dGhlcmUgYXJlIG90aGVyIHZhcmlhYmxlcywgbGlrZSBDQywgd2hpY2ggYXJlIG9mdGVuIHVzZWQg aW4KKy0jIGNvbmZpZ3VyZSwgYW5kIGNvdWxkIHRoZXJlZm9yZSBub3QgdXNlIHRoaXMgImZpeGVk IiAkYWNfYXV4X2Rpci4KKy0jCistIyBBbm90aGVyIHNvbHV0aW9uLCB1c2VkIGhlcmUsIGlzIHRv IGFsd2F5cyBleHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4KKy0jIGFic29sdXRlIFBBVEguICBUaGUg ZHJhd2JhY2sgaXMgdGhhdCB1c2luZyBhYnNvbHV0ZSBwYXRocyBwcmV2ZW50IGEKKy0jIGNvbmZp Z3VyZWQgdHJlZSB0byBiZSBtb3ZlZCB3aXRob3V0IHJlY29uZmlndXJhdGlvbi4KKy0KKy1BQ19E RUZVTihbQU1fQVVYX0RJUl9FWFBBTkRdLAorLVtBQ19SRVFVSVJFKFtBQ19DT05GSUdfQVVYX0RJ Ul9ERUZBVUxUXSlkbmwKKy0jIEV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRo LgorLWFtX2F1eF9kaXI9YGNkICIkYWNfYXV4X2RpciIgJiYgcHdkYAorLV0pCistCistIyBBTV9D T05ESVRJT05BTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSot IEF1dG9jb25mIC0qLQorLQorLSMgQ29weXJpZ2h0IChDKSAxOTk3LTIwMTQgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCistIworLSMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKy0jIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u IHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCistIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp Y2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCistCistIyBBTV9D T05ESVRJT05BTChOQU1FLCBTSEVMTC1DT05ESVRJT04pCistIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistIyBEZWZpbmUgYSBjb25kaXRpb25hbC4KKy1BQ19ERUZVTihb QU1fQ09ORElUSU9OQUxdLAorLVtBQ19QUkVSRVEoWzIuNTJdKWRubAorLSBtNF9pZihbJDFdLCBb VFJVRV0sICBbQUNfRkFUQUwoWyQwOiBpbnZhbGlkIGNvbmRpdGlvbjogJDFdKV0sCistICAgICAg IFskMV0sIFtGQUxTRV0sIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0aW9uOiAkMV0pXSlk bmwKKy1BQ19TVUJTVChbJDFfVFJVRV0pZG5sCistQUNfU1VCU1QoWyQxX0ZBTFNFXSlkbmwKKy1f QU1fU1VCU1RfTk9UTUFLRShbJDFfVFJVRV0pZG5sCistX0FNX1NVQlNUX05PVE1BS0UoWyQxX0ZB TFNFXSlkbmwKKy1tNF9kZWZpbmUoW19BTV9DT05EX1ZBTFVFXyQxXSwgWyQyXSlkbmwKKy1pZiAk MjsgdGhlbgorLSAgJDFfVFJVRT0KKy0gICQxX0ZBTFNFPScjJworLWVsc2UKKy0gICQxX1RSVUU9 JyMnCistICAkMV9GQUxTRT0KKy1maQorLUFDX0NPTkZJR19DT01NQU5EU19QUkUoCistW2lmIHRl c3QgLXogIiR7JDFfVFJVRX0iICYmIHRlc3QgLXogIiR7JDFfRkFMU0V9IjsgdGhlbgorLSAgQUNf TVNHX0VSUk9SKFtbY29uZGl0aW9uYWwgIiQxIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKy1Vc3VhbGx5 IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS5dXSkK Ky1maV0pXSkKKy0KKy0jIENvcHlyaWdodCAoQykgMTk5OS0yMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCistIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBj b3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorLSMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlv bnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorLQorLQorLSMgVGhlcmUg YXJlIGEgZmV3IGRpcnR5IGhhY2tzIGJlbG93IHRvIGF2b2lkIGxldHRpbmcgJ0FDX1BST0dfQ0Mn IGJlCistIyB3cml0dGVuIGluIGNsZWFyLCBpbiB3aGljaCBjYXNlIGF1dG9tYWtlLCB3aGVuIHJl YWRpbmcgYWNsb2NhbC5tNCwKKy0jIHdpbGwgdGhpbmsgaXQgc2VlcyBhICp1c2UqLCBhbmQgdGhl cmVmb3JlIHdpbGwgdHJpZ2dlciBhbGwgaXQncworLSMgQyBzdXBwb3J0IG1hY2hpbmVyeS4gIEFs c28gbm90ZSB0aGF0IGl0IG1lYW5zIHRoYXQgYXV0b3NjYW4sIHNlZWluZworLSMgQ0MgZXRjLiBp biB0aGUgTWFrZWZpbGUsIHdpbGwgYXNrIGZvciBhbiBBQ19QUk9HX0NDIHVzZS4uLgorLQorLQor LSMgX0FNX0RFUEVOREVOQ0lFUyhOQU1FKQorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMg U2VlIGhvdyB0aGUgY29tcGlsZXIgaW1wbGVtZW50cyBkZXBlbmRlbmN5IGNoZWNraW5nLgorLSMg TkFNRSBpcyAiQ0MiLCAiQ1hYIiwgIk9CSkMiLCAiT0JKQ1hYIiwgIlVQQyIsIG9yICJHSkMiLgor LSMgV2UgdHJ5IGEgZmV3IHRlY2huaXF1ZXMgYW5kIHVzZSB0aGF0IHRvIHNldCBhIHNpbmdsZSBj YWNoZSB2YXJpYWJsZS4KKy0jCistIyBXZSBkb24ndCBBQ19SRVFVSVJFIHRoZSBjb3JyZXNwb25k aW5nIEFDX1BST0dfQ0Mgc2luY2UgdGhlIGxhdHRlciB3YXMKKy0jIG1vZGlmaWVkIHRvIGludm9r ZSBfQU1fREVQRU5ERU5DSUVTKENDKTsgd2Ugd291bGQgaGF2ZSBhIGNpcmN1bGFyCistIyBkZXBl bmRlbmN5LCBhbmQgZ2l2ZW4gdGhhdCB0aGUgdXNlciBpcyBub3QgZXhwZWN0ZWQgdG8gcnVuIHRo aXMgbWFjcm8sCistIyBqdXN0IHJlbHkgb24gQUNfUFJPR19DQy4KKy1BQ19ERUZVTihbX0FNX0RF UEVOREVOQ0lFU10sCistW0FDX1JFUVVJUkUoW0FNX1NFVF9ERVBESVJdKWRubAorLUFDX1JFUVVJ UkUoW0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSlkbmwKKy1BQ19SRVFVSVJFKFtBTV9N QUtFX0lOQ0xVREVdKWRubAorLUFDX1JFUVVJUkUoW0FNX0RFUF9UUkFDS10pZG5sCistCistbTRf aWYoWyQxXSwgW0NDXSwgICBbZGVwY2M9IiRDQyIgICBhbV9jb21waWxlcl9saXN0PV0sCistICAg ICAgWyQxXSwgW0NYWF0sICBbZGVwY2M9IiRDWFgiICBhbV9jb21waWxlcl9saXN0PV0sCistICAg ICAgWyQxXSwgW09CSkNdLCBbZGVwY2M9IiRPQkpDIiBhbV9jb21waWxlcl9saXN0PSdnY2MzIGdj YyddLAorLSAgICAgIFskMV0sIFtPQkpDWFhdLCBbZGVwY2M9IiRPQkpDWFgiIGFtX2NvbXBpbGVy X2xpc3Q9J2djYzMgZ2NjJ10sCistICAgICAgWyQxXSwgW1VQQ10sICBbZGVwY2M9IiRVUEMiICBh bV9jb21waWxlcl9saXN0PV0sCistICAgICAgWyQxXSwgW0dDSl0sICBbZGVwY2M9IiRHQ0oiICBh bV9jb21waWxlcl9saXN0PSdnY2MzIGdjYyddLAorLSAgICAgICAgICAgICAgICAgICAgW2RlcGNj PSIkJDEiICAgYW1fY29tcGlsZXJfbGlzdD1dKQorLQorLUFDX0NBQ0hFX0NIRUNLKFtkZXBlbmRl bmN5IHN0eWxlIG9mICRkZXBjY10sCistICAgICAgICAgICAgICAgW2FtX2N2XyQxX2RlcGVuZGVu Y2llc19jb21waWxlcl90eXBlXSwKKy1baWYgdGVzdCAteiAiJEFNREVQX1RSVUUiICYmIHRlc3Qg LWYgIiRhbV9kZXBjb21wIjsgdGhlbgorLSAgIyBXZSBtYWtlIGEgc3ViZGlyIGFuZCBkbyB0aGUg dGVzdHMgdGhlcmUuICBPdGhlcndpc2Ugd2UgY2FuIGVuZCB1cAorLSAgIyBtYWtpbmcgYm9ndXMg ZmlsZXMgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0IGFuZCBuZXZlciByZW1vdmUuICBGb3IKKy0g ICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdp bGwgZW5kIHVwCistICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgJ0QnIC0tIGJlY2F1c2Ug Jy1NRCcgbWVhbnMgInB1dCB0aGUgb3V0cHV0CistICAjIGluIEQiLgorLSAgcm0gLXJmIGNvbmZ0 ZXN0LmRpcgorLSAgbWtkaXIgY29uZnRlc3QuZGlyCistICAjIENvcHkgZGVwY29tcCB0byBzdWJk aXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQorLSAgIyB1c2lu ZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KKy0gIGNwICIkYW1fZGVwY29tcCIgY29uZnRlc3QuZGly CistICBjZCBjb25mdGVzdC5kaXIKKy0gICMgV2Ugd2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBl bmRlbmNpZXMgaW4gYSBzdWJkaXJlY3RvcnkgYmVjYXVzZQorLSAgIyBpdCBoZWxwcyB0byBkZXRl Y3QgaW5hcHBsaWNhYmxlIGRlcGVuZGVuY3kgbW9kZXMuICBGb3IgaW5zdGFuY2UKKy0gICMgYm90 aCBUcnU2NCdzIGNjIGFuZCBJQ0Mgc3VwcG9ydCAtTUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBh cyBhCistICAjIHNpZGUgZWZmZWN0IG9mIGNvbXBpbGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRo ZSBkZXBlbmRlbmNpZXMgaW4KKy0gICMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdoaWxlIFRydTY0 IHdpbGwgcHV0IHRoZW0gaW4gdGhlIG9iamVjdAorLSAgIyBkaXJlY3RvcnkuCistICBta2RpciBz dWIKKy0KKy0gIGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUKKy0gIGlm IHRlc3QgIiRhbV9jb21waWxlcl9saXN0IiA9ICIiOyB0aGVuCistICAgICBhbV9jb21waWxlcl9s aXN0PWBzZWQgLW4gWydzL14jKlwoW2EtekEtWjAtOV0qXCkpJC9cMS9wJ10gPCAuL2RlcGNvbXBg CistICBmaQorLSAgYW1fX3VuaXZlcnNhbD1mYWxzZQorLSAgbTRfY2FzZShbJDFdLCBbQ0NdLAor LSAgICBbY2FzZSAiICRkZXBjYyAiIGluICMoCistICAgICAqXCAtYXJjaFwgKlwgLWFyY2hcICop IGFtX191bml2ZXJzYWw9dHJ1ZSA7OworLSAgICAgZXNhY10sCistICAgIFtDWFhdLAorLSAgICBb Y2FzZSAiICRkZXBjYyAiIGluICMoCistICAgICAqXCAtYXJjaFwgKlwgLWFyY2hcICopIGFtX191 bml2ZXJzYWw9dHJ1ZSA7OworLSAgICAgZXNhY10pCistCistICBmb3IgZGVwbW9kZSBpbiAkYW1f Y29tcGlsZXJfbGlzdDsgZG8KKy0gICAgIyBTZXR1cCBhIHNvdXJjZSB3aXRoIG1hbnkgZGVwZW5k ZW5jaWVzLCBiZWNhdXNlIHNvbWUgY29tcGlsZXJzCistICAgICMgbGlrZSB0byB3cmFwIGxhcmdl IGRlcGVuZGVuY3kgbGlzdHMgb24gY29sdW1uIDgwICh3aXRoIFwpLCBhbmQKKy0gICAgIyB3ZSBz aG91bGQgbm90IGNob29zZSBhIGRlcGNvbXAgbW9kZSB3aGljaCBpcyBjb25mdXNlZCBieSB0aGlz LgorLSAgICAjCistICAgICMgV2UgbmVlZCB0byByZWNyZWF0ZSB0aGVzZSBmaWxlcyBmb3IgZWFj aCB0ZXN0LCBhcyB0aGUgY29tcGlsZXIgbWF5CistICAgICMgb3ZlcndyaXRlIHNvbWUgb2YgdGhl bSB3aGVuIHRlc3Rpbmcgd2l0aCBvYnNjdXJlIGNvbW1hbmQgbGluZXMuCistICAgICMgVGhpcyBo YXBwZW5zIGF0IGxlYXN0IHdpdGggdGhlIEFJWCBDIGNvbXBpbGVyLgorLSAgICA6ID4gc3ViL2Nv bmZ0ZXN0LmMKKy0gICAgZm9yIGkgaW4gMSAyIDMgNCA1IDY7IGRvCistICAgICAgZWNobyAnI2lu Y2x1ZGUgImNvbmZ0c3QnJGknLmgiJyA+PiBzdWIvY29uZnRlc3QuYworLSAgICAgICMgVXNpbmcg IjogPiBzdWIvY29uZnRzdCRpLmgiIGNyZWF0ZXMgb25seSBzdWIvY29uZnRzdDEuaCB3aXRoCist ICAgICAgIyBTb2xhcmlzIDEwIC9iaW4vc2guCistICAgICAgZWNobyAnLyogZHVtbXkgKi8nID4g c3ViL2NvbmZ0c3QkaS5oCistICAgIGRvbmUKKy0gICAgZWNobyAiJHthbV9faW5jbHVkZX0gJHth bV9fcXVvdGV9c3ViL2NvbmZ0ZXN0LlBvJHthbV9fcXVvdGV9IiA+IGNvbmZtZgorLQorLSAgICAj IFdlIGNoZWNrIHdpdGggJy1jJyBhbmQgJy1vJyBmb3IgdGhlIHNha2Ugb2YgdGhlICJkYXNobXN0 ZG91dCIKKy0gICAgIyBtb2RlLiAgSXQgdHVybnMgb3V0IHRoYXQgdGhlIFN1blBybyBDKysgY29t cGlsZXIgZG9lcyBub3QgcHJvcGVybHkKKy0gICAgIyBoYW5kbGUgJy1NIC1vJywgYW5kIHdlIG5l ZWQgdG8gZGV0ZWN0IHRoaXMuICBBbHNvLCBzb21lIEludGVsCistICAgICMgdmVyc2lvbnMgaGFk IHRyb3VibGUgd2l0aCBvdXRwdXQgaW4gc3ViZGlycy4KKy0gICAgYW1fX29iaj1zdWIvY29uZnRl c3QuJHtPQkpFWFQtb30KKy0gICAgYW1fX21pbnVzX29iaj0iLW8gJGFtX19vYmoiCistICAgIGNh c2UgJGRlcG1vZGUgaW4KKy0gICAgZ2NjKQorLSAgICAgICMgVGhpcyBkZXBtb2RlIGNhdXNlcyBh IGNvbXBpbGVyIHJhY2UgaW4gdW5pdmVyc2FsIG1vZGUuCistICAgICAgdGVzdCAiJGFtX191bml2 ZXJzYWwiID0gZmFsc2UgfHwgY29udGludWUKKy0gICAgICA7OworLSAgICBub3NpZGVlZmZlY3Qp CistICAgICAgIyBBZnRlciB0aGlzIHRhZywgbWVjaGFuaXNtcyBhcmUgbm90IGJ5IHNpZGUtZWZm ZWN0LCBzbyB0aGV5J2xsCistICAgICAgIyBvbmx5IGJlIHVzZWQgd2hlbiBleHBsaWNpdGx5IHJl cXVlc3RlZC4KKy0gICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiA9 IHh5ZXM7IHRoZW4KKy0JY29udGludWUKKy0gICAgICBlbHNlCistCWJyZWFrCistICAgICAgZmkK Ky0gICAgICA7OworLSAgICBtc3ZjNyB8IG1zdmM3bXN5cyB8IG1zdmlzdWFsY3BwIHwgbXN2Y21z eXMpCistICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgJy1jIC1vJywgYnV0IGFsc28s IHRoZSBtaW51c28gdGVzdCBoYXMKKy0gICAgICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9k ZXMgYXJlIGxhdGUgZW5vdWdoIGluIHRoZSBnYW1lLCBhbmQKKy0gICAgICAjIHNvIHdlYWsgdGhh dCB0aGVpciBmdW5jdGlvbmluZyBzaG91bGQgbm90IGJlIGltcGFjdGVkLgorLSAgICAgIGFtX19v Ymo9Y29uZnRlc3QuJHtPQkpFWFQtb30KKy0gICAgICBhbV9fbWludXNfb2JqPQorLSAgICAgIDs7 CistICAgIG5vbmUpIGJyZWFrIDs7CistICAgIGVzYWMKKy0gICAgaWYgZGVwbW9kZT0kZGVwbW9k ZSBcCistICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9JGFtX19vYmogXAorLSAg ICAgICBkZXBmaWxlPXN1Yi9jb25mdGVzdC5QbyB0bXBkZXBmaWxlPXN1Yi9jb25mdGVzdC5UUG8g XAorLSAgICAgICAkU0hFTEwgLi9kZXBjb21wICRkZXBjYyAtYyAkYW1fX21pbnVzX29iaiBzdWIv Y29uZnRlc3QuYyBcCistICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJgorLSAg ICAgICBncmVwIHN1Yi9jb25mdHN0MS5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYx ICYmCistICAgICAgIGdyZXAgc3ViL2NvbmZ0c3Q2Lmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9u dWxsIDI+JjEgJiYKKy0gICAgICAgZ3JlcCAkYW1fX29iaiBzdWIvY29uZnRlc3QuUG8gPiAvZGV2 L251bGwgMj4mMSAmJgorLSAgICAgICAke01BS0UtbWFrZX0gLXMgLWYgY29uZm1mID4gL2Rldi9u dWxsIDI+JjE7IHRoZW4KKy0gICAgICAjIGljYyBkb2Vzbid0IGNob2tlIG9uIHVua25vd24gb3B0 aW9ucywgaXQgd2lsbCBqdXN0IGlzc3VlIHdhcm5pbmdzCistICAgICAgIyBvciByZW1hcmtzIChl dmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKKy0g ICAgICAjIHRoYXQgc2F5cyBhbiBvcHRpb24gd2FzIGlnbm9yZWQgb3Igbm90IHN1cHBvcnRlZC4K Ky0gICAgICAjIFdoZW4gZ2l2ZW4gLU1QLCBpY2MgNy4wIGFuZCA3LjEgY29tcGxhaW4gdGh1c2x5 OgorLSAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24g Jy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQKKy0gICAgICAjIFRoZSBkaWFnbm9zaXMgY2hhbmdl ZCBpbiBpY2MgOC4wOgorLSAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSByZW1hcms6IG9wdGlv biAnLU1QJyBub3Qgc3VwcG9ydGVkCistICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicg Y29uZnRlc3QuZXJyIHx8CistICAgICAgICAgIGdyZXAgJ25vdCBzdXBwb3J0ZWQnIGNvbmZ0ZXN0 LmVycikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKKy0gICAgICAgIGFtX2N2XyQxX2Rl cGVuZGVuY2llc19jb21waWxlcl90eXBlPSRkZXBtb2RlCistICAgICAgICBicmVhaworLSAgICAg IGZpCistICAgIGZpCistICBkb25lCistCistICBjZCAuLgorLSAgcm0gLXJmIGNvbmZ0ZXN0LmRp cgorLWVsc2UKKy0gIGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUKKy1m aQorLV0pCistQUNfU1VCU1QoWyQxREVQTU9ERV0sIFtkZXBtb2RlPSRhbV9jdl8kMV9kZXBlbmRl bmNpZXNfY29tcGlsZXJfdHlwZV0pCistQU1fQ09ORElUSU9OQUwoW2FtX19mYXN0ZGVwJDFdLCBb CistICB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm8gXAorLSAgJiYg dGVzdCAiJGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA9IGdjYzNdKQorLV0p CistCistCistIyBBTV9TRVRfREVQRElSCistIyAtLS0tLS0tLS0tLS0tCistIyBDaG9vc2UgYSBk aXJlY3RvcnkgbmFtZSBmb3IgZGVwZW5kZW5jeSBmaWxlcy4KKy0jIFRoaXMgbWFjcm8gaXMgQUNf UkVRVUlSRWQgaW4gX0FNX0RFUEVOREVOQ0lFUy4KKy1BQ19ERUZVTihbQU1fU0VUX0RFUERJUl0s CistW0FDX1JFUVVJUkUoW0FNX1NFVF9MRUFESU5HX0RPVF0pZG5sCistQUNfU1VCU1QoW0RFUERJ Ul0sIFsiJHthbV9fbGVhZGluZ19kb3R9ZGVwcyJdKWRubAorLV0pCistCistCistIyBBTV9ERVBf VFJBQ0sKKy0jIC0tLS0tLS0tLS0tLQorLUFDX0RFRlVOKFtBTV9ERVBfVFJBQ0tdLAorLVtBQ19B UkdfRU5BQkxFKFtkZXBlbmRlbmN5LXRyYWNraW5nXSwgW2RubAorLUFTX0hFTFBfU1RSSU5HKAor LSAgWy0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmddLAorLSAgW2RvIG5vdCByZWplY3Qgc2xv dyBkZXBlbmRlbmN5IGV4dHJhY3RvcnNdKQorLUFTX0hFTFBfU1RSSU5HKAorLSAgWy0tZGlzYWJs ZS1kZXBlbmRlbmN5LXRyYWNraW5nXSwKKy0gIFtzcGVlZHMgdXAgb25lLXRpbWUgYnVpbGRdKV0p CistaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuCist ICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIgorLSAgQU1ERVBCQUNLU0xBU0g9J1wn CistICBhbV9fbm9kZXA9J19ubycKKy1maQorLUFNX0NPTkRJVElPTkFMKFtBTURFUF0sIFt0ZXN0 ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm9dKQorLUFDX1NVQlNUKFtBTURF UEJBQ0tTTEFTSF0pZG5sCistX0FNX1NVQlNUX05PVE1BS0UoW0FNREVQQkFDS1NMQVNIXSlkbmwK Ky1BQ19TVUJTVChbYW1fX25vZGVwXSlkbmwKKy1fQU1fU1VCU1RfTk9UTUFLRShbYW1fX25vZGVw XSlkbmwKKy1dKQorLQorLSMgR2VuZXJhdGUgY29kZSB0byBzZXQgdXAgZGVwZW5kZW5jeSB0cmFj a2luZy4gICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKy0KKy0jIENvcHlyaWdodCAoQykg MTk5OS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMgZmls ZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCistIyBnaXZl cyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorLSMg d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMg cHJlc2VydmVkLgorLQorLQorLSMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTCistIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy1BQ19ERUZVTihbX0FNX09VVFBVVF9ERVBF TkRFTkNZX0NPTU1BTkRTXSwKKy1beworLSAgIyBPbGRlciBBdXRvY29uZiBxdW90ZXMgLS1maWxl IGFyZ3VtZW50cyBmb3IgZXZhbCwgYnV0IG5vdCB3aGVuIGZpbGVzCistICAjIGFyZSBsaXN0ZWQg d2l0aG91dCAtLWZpbGUuICBMZXQncyBwbGF5IHNhZmUgYW5kIG9ubHkgZW5hYmxlIHRoZSBldmFs CistICAjIGlmIHdlIGRldGVjdCB0aGUgcXVvdGluZy4KKy0gIGNhc2UgJENPTkZJR19GSUxFUyBp bgorLSAgKlwnKikgZXZhbCBzZXQgeCAiJENPTkZJR19GSUxFUyIgOzsKKy0gICopICAgc2V0IHgg JENPTkZJR19GSUxFUyA7OworLSAgZXNhYworLSAgc2hpZnQKKy0gIGZvciBtZgorLSAgZG8KKy0g ICAgIyBTdHJpcCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4KKy0g ICAgbWY9YGVjaG8gIiRtZiIgfCBzZWQgLWUgJ3MvOi4qJC8vJ2AKKy0gICAgIyBDaGVjayB3aGV0 aGVyIHRoaXMgaXMgYW4gQXV0b21ha2UgZ2VuZXJhdGVkIE1ha2VmaWxlIG9yIG5vdC4KKy0gICAg IyBXZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkICdNYWtlZmlsZS5pbicsIGJ1 dAorLSAgICAjIHNvbWUgcGVvcGxlIHJlbmFtZSB0aGVtOyBzbyBpbnN0ZWFkIHdlIGxvb2sgYXQg dGhlIGZpbGUgY29udGVudC4KKy0gICAgIyBHcmVwJ2luZyB0aGUgZmlyc3QgbGluZSBpcyBub3Qg ZW5vdWdoOiBzb21lIHBlb3BsZSBwb3N0LXByb2Nlc3MKKy0gICAgIyBlYWNoIE1ha2VmaWxlLmlu IGFuZCBhZGQgYSBuZXcgbGluZSBvbiB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4KKy0gICAg IyBHcmVwJ2luZyB0aGUgd2hvbGUgZmlsZSBpcyBub3QgZ29vZCBlaXRoZXI6IEFJWCBncmVwIGhh cyBhIGxpbmUKKy0gICAgIyBsaW1pdCBvZiAyMDQ4LCBidXQgYWxsIHNlZCdzIHdlIGtub3cgaGF2 ZSB1bmRlcnN0YW5kIGF0IGxlYXN0IDQwMDAuCistICAgIGlmIHNlZCAtbiAncyxeIy4qZ2VuZXJh dGVkIGJ5IGF1dG9tYWtlLiosWCxwJyAiJG1mIiB8IGdyZXAgWCA+L2Rldi9udWxsIDI+JjE7IHRo ZW4KKy0gICAgICBkaXJwYXJ0PWBBU19ESVJOQU1FKCIkbWYiKWAKKy0gICAgZWxzZQorLSAgICAg IGNvbnRpbnVlCistICAgIGZpCistICAgICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBE SVIsIGFtX19pbmNsdWRlLCBhbmQgYW1fX3F1b3RlCistICAgICMgZnJvbSB0aGUgTWFrZWZpbGUg d2l0aG91dCBydW5uaW5nICdtYWtlJy4KKy0gICAgREVQRElSPWBzZWQgLW4gJ3MvXkRFUERJUiA9 IC8vcCcgPCAiJG1mImAKKy0gICAgdGVzdCAteiAiJERFUERJUiIgJiYgY29udGludWUKKy0gICAg YW1fX2luY2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1ZGUgPSAvL3AnIDwgIiRtZiJgCistICAg IHRlc3QgLXogIiRhbV9faW5jbHVkZSIgJiYgY29udGludWUKKy0gICAgYW1fX3F1b3RlPWBzZWQg LW4gJ3MvXmFtX19xdW90ZSA9IC8vcCcgPCAiJG1mImAKKy0gICAgIyBGaW5kIGFsbCBkZXBlbmRl bmN5IG91dHB1dCBmaWxlcywgdGhleSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aAorLSAgICAjICQo REVQRElSKSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBp cyB0aGUKKy0gICAgIyBzaW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJUikgdG8g aXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUKKy0gICAgIyBleHBhbnNpb24uCistICAgIGZvciBmaWxl IGluIGBzZWQgLW4gIgorLSAgICAgIHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCguKihERVBE SVIpLipcKSRhbV9fcXVvdGUiJyQvXDEvcCcgPCIkbWYiIHwgXAorLQkgc2VkIC1lICdzL1wkKERF UERJUikvJyIkREVQRElSIicvZydgOyBkbworLSAgICAgICMgTWFrZSBzdXJlIHRoZSBkaXJlY3Rv cnkgZXhpc3RzLgorLSAgICAgIHRlc3QgLWYgIiRkaXJwYXJ0LyRmaWxlIiAmJiBjb250aW51ZQor LSAgICAgIGZkaXI9YEFTX0RJUk5BTUUoWyIkZmlsZSJdKWAKKy0gICAgICBBU19NS0RJUl9QKFsk ZGlycGFydC8kZmRpcl0pCistICAgICAgIyBlY2hvICJjcmVhdGluZyAkZGlycGFydC8kZmlsZSIK Ky0gICAgICBlY2hvICcjIGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSIKKy0gICAgZG9uZQorLSAg ZG9uZQorLX0KKy1dKSMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTCistCistCistIyBB TV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EUworLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0jIFRoaXMgbWFjcm8gc2hvdWxkIG9ubHkgYmUgaW52b2tlZCBvbmNlIC0tIHVzZSB2 aWEgQUNfUkVRVUlSRS4KKy0jCistIyBUaGlzIGNvZGUgaXMgb25seSByZXF1aXJlZCB3aGVuIGF1 dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNraW5nCistIyBpcyBlbmFibGVkLiAgRklYTUUuICBUaGlz IGNyZWF0ZXMgZWFjaCAnLlAnIGZpbGUgdGhhdCB3ZSB3aWxsCistIyBuZWVkIGluIG9yZGVyIHRv IGJvb3RzdHJhcCB0aGUgZGVwZW5kZW5jeSBoYW5kbGluZyBjb2RlLgorLUFDX0RFRlVOKFtBTV9P VVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sCistW0FDX0NPTkZJR19DT01NQU5EUyhbZGVwZmls ZXNdLAorLSAgICAgW3Rlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IF9BTV9PVVRQVVRfREVQ RU5ERU5DWV9DT01NQU5EU10sCistICAgICBbQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUiIGFjX2F1 eF9kaXI9IiRhY19hdXhfZGlyIl0pCistXSkKKy0KKy0jIERvIGFsbCB0aGUgd29yayBmb3IgQXV0 b21ha2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCistCist IyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K Ky0jCistIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlz dHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFz IHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKy0KKy0jIFRoaXMgbWFjcm8gYWN0dWFsbHkgZG9l cyB0b28gbXVjaC4gIFNvbWUgY2hlY2tzIGFyZSBvbmx5IG5lZWRlZCBpZgorLSMgeW91ciBwYWNr YWdlIGRvZXMgY2VydGFpbiB0aGluZ3MuICBCdXQgdGhpcyBpc24ndCByZWFsbHkgYSBiaWcgZGVh bC4KKy0KKy1kbmwgUmVkZWZpbmUgQUNfUFJPR19DQyB0byBhdXRvbWF0aWNhbGx5IGludm9rZSBf QU1fUFJPR19DQ19DX08uCistbTRfZGVmaW5lKFtBQ19QUk9HX0NDXSwKKy1tNF9kZWZuKFtBQ19Q Uk9HX0NDXSkKKy1bX0FNX1BST0dfQ0NfQ19PCistXSkKKy0KKy0jIEFNX0lOSVRfQVVUT01BS0Uo UEFDS0FHRSwgVkVSU0lPTiwgW05PLURFRklORV0pCistIyBBTV9JTklUX0FVVE9NQUtFKFtPUFRJ T05TXSkKKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistIyBUaGUgY2FsbCB3aXRoIFBBQ0tBR0UgYW5kIFZFUlNJT04gYXJndW1lbnRzIGlzIHRoZSBv bGQgc3R5bGUKKy0jIGNhbGwgKHByZSBhdXRvY29uZi0yLjUwKSwgd2hpY2ggaXMgYmVpbmcgcGhh c2VkIG91dC4gIFBBQ0tBR0UKKy0jIGFuZCBWRVJTSU9OIHNob3VsZCBub3cgYmUgcGFzc2VkIHRv IEFDX0lOSVQgYW5kIHJlbW92ZWQgZnJvbQorLSMgdGhlIGNhbGwgdG8gQU1fSU5JVF9BVVRPTUFL RS4KKy0jIFdlIHN1cHBvcnQgYm90aCBjYWxsIHN0eWxlcyBmb3IgdGhlIHRyYW5zaXRpb24uICBB ZnRlcgorLSMgdGhlIG5leHQgQXV0b21ha2UgcmVsZWFzZSwgQXV0b2NvbmYgY2FuIG1ha2UgdGhl IEFDX0lOSVQKKy0jIGFyZ3VtZW50cyBtYW5kYXRvcnksIGFuZCB0aGVuIHdlIGNhbiBkZXBlbmQg b24gYSBuZXcgQXV0b2NvbmYKKy0jIHJlbGVhc2UgYW5kIGRyb3AgdGhlIG9sZCBjYWxsIHN1cHBv cnQuCistQUNfREVGVU4oW0FNX0lOSVRfQVVUT01BS0VdLAorLVtBQ19QUkVSRVEoWzIuNjVdKWRu bAorLWRubCBBdXRvY29uZiB3YW50cyB0byBkaXNhbGxvdyBBTV8gbmFtZXMuICBXZSBleHBsaWNp dGx5IGFsbG93CistZG5sIHRoZSBvbmVzIHdlIGNhcmUgYWJvdXQuCistbTRfcGF0dGVybl9hbGxv dyhbXkFNX1tBLVpdK0ZMQUdTJF0pZG5sCistQUNfUkVRVUlSRShbQU1fU0VUX0NVUlJFTlRfQVVU T01BS0VfVkVSU0lPTl0pZG5sCistQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKKy1p ZiB0ZXN0ICJgY2QgJHNyY2RpciAmJiBwd2RgIiAhPSAiYHB3ZGAiOyB0aGVuCistICAjIFVzZSAt SSQoc3JjZGlyKSBvbmx5IHdoZW4gJChzcmNkaXIpICE9IC4sIHNvIHRoYXQgbWFrZSdzIG91dHB1 dAorLSAgIyBpcyBub3QgcG9sbHV0ZWQgd2l0aCByZXBlYXRlZCAiLUkuIgorLSAgQUNfU1VCU1Qo W2FtX19pc3JjXSwgWycgLUkkKHNyY2RpciknXSlfQU1fU1VCU1RfTk9UTUFLRShbYW1fX2lzcmNd KWRubAorLSAgIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkCistICBp ZiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbgorLSAgICBBQ19NU0dfRVJST1Io W3NvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gIm1ha2UgZGlzdGNsZWFu IiB0aGVyZSBmaXJzdF0pCistICBmaQorLWZpCistCistIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBj eWdwYXRoCistaWYgdGVzdCAteiAiJENZR1BBVEhfVyI7IHRoZW4KKy0gIGlmIChjeWdwYXRoIC0t dmVyc2lvbikgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorLSAgICBDWUdQQVRIX1c9J2N5 Z3BhdGggLXcnCistICBlbHNlCistICAgIENZR1BBVEhfVz1lY2hvCistICBmaQorLWZpCistQUNf U1VCU1QoW0NZR1BBVEhfV10pCistCistIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNr YWdlLgorLWRubCBEaXN0aW5ndWlzaCBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNh bGxzLgorLW00X2lmdmFsKFskMl0sCistW0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCistICAgICAg ICAgICAgIFskMDogdHdvLSBhbmQgdGhyZWUtYXJndW1lbnRzIGZvcm1zIGFyZSBkZXByZWNhdGVk Ll0pCistbTRfaWZ2YWwoWyQzXSwgW19BTV9TRVRfT1BUSU9OKFtuby1kZWZpbmVdKV0pZG5sCist IEFDX1NVQlNUKFtQQUNLQUdFXSwgWyQxXSlkbmwKKy0gQUNfU1VCU1QoW1ZFUlNJT05dLCBbJDJd KV0sCistW19BTV9TRVRfT1BUSU9OUyhbJDFdKWRubAorLWRubCBEaWFnbm9zZSBvbGQtc3R5bGUg QUNfSU5JVCB3aXRoIG5ldy1zdHlsZSBBTV9BVVRPTUFLRV9JTklULgorLW00X2lmKAorLSAgbTRf aWZkZWYoW0FDX1BBQ0tBR0VfTkFNRV0sIFtva10pOm00X2lmZGVmKFtBQ19QQUNLQUdFX1ZFUlNJ T05dLCBbb2tdKSwKKy0gIFtvazpva10sLAorLSAgW200X2ZhdGFsKFtBQ19JTklUIHNob3VsZCBi ZSBjYWxsZWQgd2l0aCBwYWNrYWdlIGFuZCB2ZXJzaW9uIGFyZ3VtZW50c10pXSlkbmwKKy0gQUNf U1VCU1QoW1BBQ0tBR0VdLCBbJ0FDX1BBQ0tBR0VfVEFSTkFNRSddKWRubAorLSBBQ19TVUJTVChb VkVSU0lPTl0sIFsnQUNfUEFDS0FHRV9WRVJTSU9OJ10pXSlkbmwKKy0KKy1fQU1fSUZfT1BUSU9O KFtuby1kZWZpbmVdLCwKKy1bQUNfREVGSU5FX1VOUVVPVEVEKFtQQUNLQUdFXSwgWyIkUEFDS0FH RSJdLCBbTmFtZSBvZiBwYWNrYWdlXSkKKy0gQUNfREVGSU5FX1VOUVVPVEVEKFtWRVJTSU9OXSwg WyIkVkVSU0lPTiJdLCBbVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZV0pXSlkbmwKKy0KKy0jIFNv bWUgdG9vbHMgQXV0b21ha2UgbmVlZHMuCistQUNfUkVRVUlSRShbQU1fU0FOSVRZX0NIRUNLXSlk bmwKKy1BQ19SRVFVSVJFKFtBQ19BUkdfUFJPR1JBTV0pZG5sCistQU1fTUlTU0lOR19QUk9HKFtB Q0xPQ0FMXSwgW2FjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259XSkKKy1BTV9NSVNTSU5HX1BST0co W0FVVE9DT05GXSwgW2F1dG9jb25mXSkKKy1BTV9NSVNTSU5HX1BST0coW0FVVE9NQUtFXSwgW2F1 dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufV0pCistQU1fTUlTU0lOR19QUk9HKFtBVVRPSEVBREVS XSwgW2F1dG9oZWFkZXJdKQorLUFNX01JU1NJTkdfUFJPRyhbTUFLRUlORk9dLCBbbWFrZWluZm9d KQorLUFDX1JFUVVJUkUoW0FNX1BST0dfSU5TVEFMTF9TSF0pZG5sCistQUNfUkVRVUlSRShbQU1f UFJPR19JTlNUQUxMX1NUUklQXSlkbmwKKy1BQ19SRVFVSVJFKFtBQ19QUk9HX01LRElSX1BdKWRu bAorLSMgRm9yIGJldHRlciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgVG8gYmUgcmVtb3ZlZCBv bmNlIEF1dG9tYWtlIDEuOS54CistIyBkaWVzIG91dCBmb3IgZ29vZC4gIEZvciBtb3JlIGJhY2tn cm91bmQsIHNlZToKKy0jIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYXV0b21h a2UvMjAxMi0wNy9tc2cwMDAwMS5odG1sPgorLSMgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hp dmUvaHRtbC9hdXRvbWFrZS8yMDEyLTA3L21zZzAwMDE0Lmh0bWw+CistQUNfU1VCU1QoW21rZGly X3BdLCBbJyQoTUtESVJfUCknXSkKKy0jIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJn ZXQgKGFuZCBwb3NzaWJseSB0aGUgVEFQIGRyaXZlcikuICBUaGUKKy0jIHN5c3RlbSAiYXdrIiBp cyBiYWQgb24gc29tZSBwbGF0Zm9ybXMuCistQUNfUkVRVUlSRShbQUNfUFJPR19BV0tdKWRubAor LUFDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAorLUFDX1JFUVVJUkUoW0FNX1NFVF9M RUFESU5HX0RPVF0pZG5sCistX0FNX0lGX09QVElPTihbdGFyLXVzdGFyXSwgW19BTV9QUk9HX1RB UihbdXN0YXJdKV0sCistCSAgICAgIFtfQU1fSUZfT1BUSU9OKFt0YXItcGF4XSwgW19BTV9QUk9H X1RBUihbcGF4XSldLAorLQkJCSAgICAgW19BTV9QUk9HX1RBUihbdjddKV0pXSkKKy1fQU1fSUZf T1BUSU9OKFtuby1kZXBlbmRlbmNpZXNdLCwKKy1bQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0df Q0NdLAorLQkJICBbX0FNX0RFUEVOREVOQ0lFUyhbQ0NdKV0sCistCQkgIFttNF9kZWZpbmUoW0FD X1BST0dfQ0NdLAorLQkJCSAgICAgbTRfZGVmbihbQUNfUFJPR19DQ10pW19BTV9ERVBFTkRFTkNJ RVMoW0NDXSldKV0pZG5sCistQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ1hYXSwKKy0JCSAg W19BTV9ERVBFTkRFTkNJRVMoW0NYWF0pXSwKKy0JCSAgW200X2RlZmluZShbQUNfUFJPR19DWFhd LAorLQkJCSAgICAgbTRfZGVmbihbQUNfUFJPR19DWFhdKVtfQU1fREVQRU5ERU5DSUVTKFtDWFhd KV0pXSlkbmwKKy1BQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19PQkpDXSwKKy0JCSAgW19BTV9E RVBFTkRFTkNJRVMoW09CSkNdKV0sCistCQkgIFttNF9kZWZpbmUoW0FDX1BST0dfT0JKQ10sCist CQkJICAgICBtNF9kZWZuKFtBQ19QUk9HX09CSkNdKVtfQU1fREVQRU5ERU5DSUVTKFtPQkpDXSld KV0pZG5sCistQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfT0JKQ1hYXSwKKy0JCSAgW19BTV9E RVBFTkRFTkNJRVMoW09CSkNYWF0pXSwKKy0JCSAgW200X2RlZmluZShbQUNfUFJPR19PQkpDWFhd LAorLQkJCSAgICAgbTRfZGVmbihbQUNfUFJPR19PQkpDWFhdKVtfQU1fREVQRU5ERU5DSUVTKFtP QkpDWFhdKV0pXSlkbmwKKy1dKQorLUFDX1JFUVVJUkUoW0FNX1NJTEVOVF9SVUxFU10pZG5sCist ZG5sIFRoZSB0ZXN0c3VpdGUgZHJpdmVyIG1heSBuZWVkIHRvIGtub3cgYWJvdXQgRVhFRVhULCBz byBhZGQgdGhlCistZG5sICdhbV9fRVhFRVhUJyBjb25kaXRpb25hbCBpZiBfQU1fQ09NUElMRVJf RVhFRVhUIHdhcyBzZWVuLiAgVGhpcworLWRubCBtYWNybyBpcyBob29rZWQgb250byBfQUNfQ09N UElMRVJfRVhFRVhUIGVhcmx5LCBzZWUgYmVsb3cuCistQUNfQ09ORklHX0NPTU1BTkRTX1BSRShk bmwKKy1bbTRfcHJvdmlkZV9pZihbX0FNX0NPTVBJTEVSX0VYRUVYVF0sCistICBbQU1fQ09ORElU SU9OQUwoW2FtX19FWEVFWFRdLCBbdGVzdCAtbiAiJEVYRUVYVCJdKV0pXSlkbmwKKy0KKy0jIFBP U0lYIHdpbGwgc2F5IGluIGEgZnV0dXJlIHZlcnNpb24gdGhhdCBydW5uaW5nICJybSAtZiIgd2l0 aCBubyBhcmd1bWVudAorLSMgaXMgT0s7IGFuZCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gbWFrZSB0 aGF0IGFzc3VtcHRpb24gaW4gb3VyIE1ha2VmaWxlCistIyByZWNpcGVzLiAgU28gdXNlIGFuIGFn Z3Jlc3NpdmUgcHJvYmUgdG8gY2hlY2sgdGhhdCB0aGUgdXNhZ2Ugd2Ugd2FudCBpcworLSMgYWN0 dWFsbHkgc3VwcG9ydGVkICJpbiB0aGUgd2lsZCIgdG8gYW4gYWNjZXB0YWJsZSBkZWdyZWUuCist IyBTZWUgYXV0b21ha2UgYnVnIzEwODI4LgorLSMgVG8gbWFrZSBhbnkgaXNzdWUgbW9yZSB2aXNp YmxlLCBjYXVzZSB0aGUgcnVubmluZyBjb25maWd1cmUgdG8gYmUgYWJvcnRlZAorLSMgYnkgZGVm YXVsdCBpZiB0aGUgJ3JtJyBwcm9ncmFtIGluIHVzZSBkb2Vzbid0IG1hdGNoIG91ciBleHBlY3Rh dGlvbnM7IHRoZQorLSMgdXNlciBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhpcyB0aG91Z2guCistaWYg cm0gLWYgJiYgcm0gLWZyICYmIHJtIC1yZjsgdGhlbiA6IE9LOyBlbHNlCistICBjYXQgPiYyIDw8 J0VORCcKKy1Pb3BzIQorLQorLVlvdXIgJ3JtJyBwcm9ncmFtIHNlZW1zIHVuYWJsZSB0byBydW4g d2l0aG91dCBmaWxlIG9wZXJhbmRzIHNwZWNpZmllZAorLW9uIHRoZSBjb21tYW5kIGxpbmUsIGV2 ZW4gd2hlbiB0aGUgJy1mJyBvcHRpb24gaXMgcHJlc2VudC4gIFRoaXMgaXMgY29udHJhcnkKKy10 byB0aGUgYmVoYXZpb3VyIG9mIG1vc3Qgcm0gcHJvZ3JhbXMgb3V0IHRoZXJlLCBhbmQgbm90IGNv bmZvcm1pbmcgd2l0aAorLXRoZSB1cGNvbWluZyBQT1NJWCBzdGFuZGFyZDogPGh0dHA6Ly9hdXN0 aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTU0Mj4KKy0KKy1QbGVhc2UgdGVsbCBidWctYXV0 b21ha2VAZ251Lm9yZyBhYm91dCB5b3VyIHN5c3RlbSwgaW5jbHVkaW5nIHRoZSB2YWx1ZQorLW9m IHlvdXIgJFBBVEggYW5kIGFueSBlcnJvciBwb3NzaWJseSBvdXRwdXQgYmVmb3JlIHRoaXMgbWVz c2FnZS4gIFRoaXMKKy1jYW4gaGVscCB1cyBpbXByb3ZlIGZ1dHVyZSBhdXRvbWFrZSB2ZXJzaW9u cy4KKy0KKy1FTkQKKy0gIGlmIHRlc3QgeCIkQUNDRVBUX0lORkVSSU9SX1JNX1BST0dSQU0iID0g eCJ5ZXMiOyB0aGVuCistICAgIGVjaG8gJ0NvbmZpZ3VyYXRpb24gd2lsbCBwcm9jZWVkIGFueXdh eSwgc2luY2UgeW91IGhhdmUgc2V0IHRoZScgPiYyCistICAgIGVjaG8gJ0FDQ0VQVF9JTkZFUklP Ul9STV9QUk9HUkFNIHZhcmlhYmxlIHRvICJ5ZXMiJyA+JjIKKy0gICAgZWNobyA+JjIKKy0gIGVs c2UKKy0gICAgY2F0ID4mMiA8PCdFTkQnCistQWJvcnRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gcHJv Y2VzcywgdG8gZW5zdXJlIHlvdSB0YWtlIG5vdGljZSBvZiB0aGUgaXNzdWUuCistCistWW91IGNh biBkb3dubG9hZCBhbmQgaW5zdGFsbCBHTlUgY29yZXV0aWxzIHRvIGdldCBhbiAncm0nIGltcGxl bWVudGF0aW9uCistdGhhdCBiZWhhdmVzIHByb3Blcmx5OiA8aHR0cDovL3d3dy5nbnUub3JnL3Nv ZnR3YXJlL2NvcmV1dGlscy8+LgorLQorLUlmIHlvdSB3YW50IHRvIGNvbXBsZXRlIHRoZSBjb25m aWd1cmF0aW9uIHByb2Nlc3MgdXNpbmcgeW91ciBwcm9ibGVtYXRpYworLSdybScgYW55d2F5LCBl eHBvcnQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEFDQ0VQVF9JTkZFUklPUl9STV9QUk9HUkFN CistdG8gInllcyIsIGFuZCByZS1ydW4gY29uZmlndXJlLgorLQorLUVORAorLSAgICBBQ19NU0df RVJST1IoW1lvdXIgJ3JtJyBwcm9ncmFtIGlzIGJhZCwgc29ycnkuXSkKKy0gIGZpCistZmkKKy1k bmwgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaW4gdGhpcyBtYWNybydzIGRlZmluaXRpb24gaXMgZGVs aWJlcmF0ZSwgZm9yCistZG5sIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYW5kIHRvIGFsbG93IHRy YWlsaW5nICdkbmwnLXN0eWxlIGNvbW1lbnRzCistZG5sIGFmdGVyIHRoZSBBTV9JTklUX0FVVE9N QUtFIGludm9jYXRpb24uIFNlZSBhdXRvbWFrZSBidWcjMTY4NDEuCistXSkKKy0KKy1kbmwgSG9v ayBpbnRvICdfQUNfQ09NUElMRVJfRVhFRVhUJyBlYXJseSB0byBsZWFybiBpdHMgZXhwYW5zaW9u LiAgRG8gbm90CistZG5sIGFkZCB0aGUgY29uZGl0aW9uYWwgcmlnaHQgaGVyZSwgYXMgX0FDX0NP TVBJTEVSX0VYRUVYVCBtYXkgYmUgZnVydGhlcgorLWRubCBtYW5nbGVkIGJ5IEF1dG9jb25mIGFu ZCBydW4gaW4gYSBzaGVsbCBjb25kaXRpb25hbCBzdGF0ZW1lbnQuCistbTRfZGVmaW5lKFtfQUNf Q09NUElMRVJfRVhFRVhUXSwKKy1tNF9kZWZuKFtfQUNfQ09NUElMRVJfRVhFRVhUXSlbbTRfcHJv dmlkZShbX0FNX0NPTVBJTEVSX0VYRUVYVF0pXSkKKy0KKy0jIFdoZW4gY29uZmlnLnN0YXR1cyBn ZW5lcmF0ZXMgYSBoZWFkZXIsIHdlIG11c3QgdXBkYXRlIHRoZSBzdGFtcC1oIGZpbGUuCistIyBU aGlzIGZpbGUgcmVzaWRlcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGNvbmZpZyBoZWFk ZXIKKy0jIHRoYXQgaXMgZ2VuZXJhdGVkLiAgVGhlIHN0YW1wIGZpbGVzIGFyZSBudW1iZXJlZCB0 byBoYXZlIGRpZmZlcmVudCBuYW1lcy4KKy0KKy0jIEF1dG9jb25mIGNhbGxzIF9BQ19BTV9DT05G SUdfSEVBREVSX0hPT0sgKHdoZW4gZGVmaW5lZCkgaW4gdGhlCistIyBsb29wIHdoZXJlIGNvbmZp Zy5zdGF0dXMgY3JlYXRlcyB0aGUgaGVhZGVycywgc28gd2UgY2FuIGdlbmVyYXRlCistIyBvdXIg c3RhbXAgZmlsZXMgdGhlcmUuCistQUNfREVGVU4oW19BQ19BTV9DT05GSUdfSEVBREVSX0hPT0td LAorLVsjIENvbXB1dGUgJDEncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuCistX2FtX2FyZz0k MQorLV9hbV9zdGFtcF9jb3VudD0xCistZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJz IDo7IGRvCistICBjYXNlICRfYW1faGVhZGVyIGluCistICAgICRfYW1fYXJnIHwgJF9hbV9hcmc6 KiApCistICAgICAgYnJlYWsgOzsKKy0gICAgKiApCistICAgICAgX2FtX3N0YW1wX2NvdW50PWBl eHByICRfYW1fc3RhbXBfY291bnQgKyAxYCA7OworLSAgZXNhYworLWRvbmUKKy1lY2hvICJ0aW1l c3RhbXAgZm9yICRfYW1fYXJnIiA+YEFTX0RJUk5BTUUoWyIkX2FtX2FyZyJdKWAvc3RhbXAtaFtd JF9hbV9zdGFtcF9jb3VudF0pCistCistIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jCistIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2Fy ZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0aG91dCBt b2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKy0KKy0j IEFNX1BST0dfSU5TVEFMTF9TSAorLSMgLS0tLS0tLS0tLS0tLS0tLS0tCistIyBEZWZpbmUgJGlu c3RhbGxfc2guCistQUNfREVGVU4oW0FNX1BST0dfSU5TVEFMTF9TSF0sCistW0FDX1JFUVVJUkUo W0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwKKy1pZiB0ZXN0IHgiJHtpbnN0YWxsX3NoK3NldH0iICE9 IHhzZXQ7IHRoZW4KKy0gIGNhc2UgJGFtX2F1eF9kaXIgaW4KKy0gICpcICogfCAqXAkqKQorLSAg ICBpbnN0YWxsX3NoPSJcJHtTSEVMTH0gJyRhbV9hdXhfZGlyL2luc3RhbGwtc2gnIiA7OworLSAg KikKKy0gICAgaW5zdGFsbF9zaD0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL2luc3RhbGwtc2giCist ICBlc2FjCistZmkKKy1BQ19TVUJTVChbaW5zdGFsbF9zaF0pXSkKKy0KKy0jIENvcHlyaWdodCAo QykgMjAwMy0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMg ZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCistIyBn aXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAor LSMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2Ug aXMgcHJlc2VydmVkLgorLQorLSMgQ2hlY2sgd2hldGhlciB0aGUgdW5kZXJseWluZyBmaWxlLXN5 c3RlbSBzdXBwb3J0cyBmaWxlbmFtZXMKKy0jIHdpdGggYSBsZWFkaW5nIGRvdC4gIEZvciBpbnN0 YW5jZSBNUy1ET1MgZG9lc24ndC4KKy1BQ19ERUZVTihbQU1fU0VUX0xFQURJTkdfRE9UXSwKKy1b cm0gLXJmIC50c3QgMj4vZGV2L251bGwKKy1ta2RpciAudHN0IDI+L2Rldi9udWxsCistaWYgdGVz dCAtZCAudHN0OyB0aGVuCistICBhbV9fbGVhZGluZ19kb3Q9LgorLWVsc2UKKy0gIGFtX19sZWFk aW5nX2RvdD1fCistZmkKKy1ybWRpciAudHN0IDI+L2Rldi9udWxsCistQUNfU1VCU1QoW2FtX19s ZWFkaW5nX2RvdF0pXSkKKy0KKy0jIENoZWNrIHRvIHNlZSBob3cgJ21ha2UnIHRyZWF0cyBpbmNs dWRlcy4JICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorLQorLSMgQ29weXJpZ2h0IChDKSAy MDAxLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIworLSMgVGhpcyBmaWxl IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKy0jIGdpdmVz IHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCistIyB3 aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuCistCistIyBBTV9NQUtFX0lOQ0xVREUoKQorLSMgLS0tLS0tLS0tLS0tLS0tLS0K Ky0jIENoZWNrIHRvIHNlZSBob3cgbWFrZSB0cmVhdHMgaW5jbHVkZXMuCistQUNfREVGVU4oW0FN X01BS0VfSU5DTFVERV0sCistW2FtX21ha2U9JHtNQUtFLW1ha2V9CistY2F0ID4gY29uZmluYyA8 PCAnRU5EJworLWFtX19kb2l0OgorLQlAZWNobyB0aGlzIGlzIHRoZSBhbV9fZG9pdCB0YXJnZXQK Ky0uUEhPTlk6IGFtX19kb2l0CistRU5ECistIyBJZiB3ZSBkb24ndCBmaW5kIGFuIGluY2x1ZGUg ZGlyZWN0aXZlLCBqdXN0IGNvbW1lbnQgb3V0IHRoZSBjb2RlLgorLUFDX01TR19DSEVDS0lORyhb Zm9yIHN0eWxlIG9mIGluY2x1ZGUgdXNlZCBieSAkYW1fbWFrZV0pCistYW1fX2luY2x1ZGU9IiMi CistYW1fX3F1b3RlPQorLV9hbV9yZXN1bHQ9bm9uZQorLSMgRmlyc3QgdHJ5IEdOVSBtYWtlIHN0 eWxlIGluY2x1ZGUuCistZWNobyAiaW5jbHVkZSBjb25maW5jIiA+IGNvbmZtZgorLSMgSWdub3Jl IGFsbCBraW5kcyBvZiBhZGRpdGlvbmFsIG91dHB1dCBmcm9tICdtYWtlJy4KKy1jYXNlIGAkYW1f bWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCBpbiAjKAorLSp0aGVcIGFtX19kb2l0XCB0 YXJnZXQqKQorLSAgYW1fX2luY2x1ZGU9aW5jbHVkZQorLSAgYW1fX3F1b3RlPQorLSAgX2FtX3Jl c3VsdD1HTlUKKy0gIDs7CistZXNhYworLSMgTm93IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRl LgorLWlmIHRlc3QgIiRhbV9faW5jbHVkZSIgPSAiIyI7IHRoZW4KKy0gICBlY2hvICcuaW5jbHVk ZSAiY29uZmluYyInID4gY29uZm1mCistICAgY2FzZSBgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+ IC9kZXYvbnVsbGAgaW4gIygKKy0gICAqdGhlXCBhbV9fZG9pdFwgdGFyZ2V0KikKKy0gICAgIGFt X19pbmNsdWRlPS5pbmNsdWRlCistICAgICBhbV9fcXVvdGU9IlwiIgorLSAgICAgX2FtX3Jlc3Vs dD1CU0QKKy0gICAgIDs7CistICAgZXNhYworLWZpCistQUNfU1VCU1QoW2FtX19pbmNsdWRlXSkK Ky1BQ19TVUJTVChbYW1fX3F1b3RlXSkKKy1BQ19NU0dfUkVTVUxUKFskX2FtX3Jlc3VsdF0pCist cm0gLWYgY29uZmluYyBjb25mbWYKKy1dKQorLQorLSMgRmFrZSB0aGUgZXhpc3RlbmNlIG9mIHBy b2dyYW1zIHRoYXQgR05VIG1haW50YWluZXJzIHVzZS4gIC0qLSBBdXRvY29uZiAtKi0KKy0KKy0j IENvcHlyaWdodCAoQykgMTk5Ny0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor LSMKKy0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uCistIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0 cmlidXRlIGl0LAorLSMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMg dGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorLQorLSMgQU1fTUlTU0lOR19QUk9HKE5BTUUsIFBS T0dSQU0pCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy1BQ19ERUZVTihbQU1f TUlTU0lOR19QUk9HXSwKKy1bQUNfUkVRVUlSRShbQU1fTUlTU0lOR19IQVNfUlVOXSkKKy0kMT0k eyQxLSIke2FtX21pc3NpbmdfcnVufSQyIn0KKy1BQ19TVUJTVCgkMSldKQorLQorLSMgQU1fTUlT U0lOR19IQVNfUlVOCistIyAtLS0tLS0tLS0tLS0tLS0tLS0KKy0jIERlZmluZSBNSVNTSU5HIGlm IG5vdCBkZWZpbmVkIHNvIGZhciBhbmQgdGVzdCBpZiBpdCBpcyBtb2Rlcm4gZW5vdWdoLgorLSMg SWYgaXQgaXMsIHNldCBhbV9taXNzaW5nX3J1biB0byB1c2UgaXQsIG90aGVyd2lzZSwgdG8gbm90 aGluZy4KKy1BQ19ERUZVTihbQU1fTUlTU0lOR19IQVNfUlVOXSwKKy1bQUNfUkVRVUlSRShbQU1f QVVYX0RJUl9FWFBBTkRdKWRubAorLUFDX1JFUVVJUkVfQVVYX0ZJTEUoW21pc3NpbmddKWRubAor LWlmIHRlc3QgeCIke01JU1NJTkcrc2V0fSIgIT0geHNldDsgdGhlbgorLSAgY2FzZSAkYW1fYXV4 X2RpciBpbgorLSAgKlwgKiB8ICpcCSopCistICAgIE1JU1NJTkc9Ilwke1NIRUxMfSBcIiRhbV9h dXhfZGlyL21pc3NpbmdcIiIgOzsKKy0gICopCistICAgIE1JU1NJTkc9Ilwke1NIRUxMfSAkYW1f YXV4X2Rpci9taXNzaW5nIiA7OworLSAgZXNhYworLWZpCistIyBVc2UgZXZhbCB0byBleHBhbmQg JFNIRUxMCistaWYgZXZhbCAiJE1JU1NJTkcgLS1pcy1saWdodHdlaWdodCI7IHRoZW4KKy0gIGFt X21pc3NpbmdfcnVuPSIkTUlTU0lORyAiCistZWxzZQorLSAgYW1fbWlzc2luZ19ydW49CistICBB Q19NU0dfV0FSTihbJ21pc3NpbmcnIHNjcmlwdCBpcyB0b28gb2xkIG9yIG1pc3NpbmddKQorLWZp CistXSkKKy0KKy0jIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAg ICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCistCistIyBDb3B5cmlnaHQgKEMpIDIwMDEt MjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jCistIyBUaGlzIGZpbGUgaXMg ZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5s aW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGgg b3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNl cnZlZC4KKy0KKy0jIF9BTV9NQU5HTEVfT1BUSU9OKE5BTUUpCistIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLUFDX0RFRlVOKFtfQU1fTUFOR0xFX09QVElPTl0sCistW1tfQU1fT1BUSU9OX11t NF9icGF0c3Vic3QoJDEsIFtbXmEtekEtWjAtOV9dXSwgW19dKV0pCistCistIyBfQU1fU0VUX09Q VElPTihOQU1FKQorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIFNldCBvcHRpb24gTkFNRS4g IFByZXNlbnRseSB0aGF0IG9ubHkgbWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZvciB0aGlzIG9wdGlv bi4KKy1BQ19ERUZVTihbX0FNX1NFVF9PUFRJT05dLAorLVttNF9kZWZpbmUoX0FNX01BTkdMRV9P UFRJT04oWyQxXSksIFsxXSldKQorLQorLSMgX0FNX1NFVF9PUFRJT05TKE9QVElPTlMpCistIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIE9QVElPTlMgaXMgYSBzcGFjZS1zZXBhcmF0ZWQg bGlzdCBvZiBBdXRvbWFrZSBvcHRpb25zLgorLUFDX0RFRlVOKFtfQU1fU0VUX09QVElPTlNdLAor LVttNF9mb3JlYWNoX3coW19BTV9PcHRpb25dLCBbJDFdLCBbX0FNX1NFVF9PUFRJT04oX0FNX09w dGlvbildKV0pCistCistIyBfQU1fSUZfT1BUSU9OKE9QVElPTiwgSUYtU0VULCBbSUYtTk9ULVNF VF0pCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIyBF eGVjdXRlIElGLVNFVCBpZiBPUFRJT04gaXMgc2V0LCBJRi1OT1QtU0VUIG90aGVyd2lzZS4KKy1B Q19ERUZVTihbX0FNX0lGX09QVElPTl0sCistW200X2lmc2V0KF9BTV9NQU5HTEVfT1BUSU9OKFsk MV0pLCBbJDJdLCBbJDNdKV0pCistCistIyBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jCistIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2Fy ZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0aG91dCBt b2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKy0KKy0j IF9BTV9QUk9HX0NDX0NfTworLSMgLS0tLS0tLS0tLS0tLS0tCistIyBMaWtlIEFDX1BST0dfQ0Nf Q19PLCBidXQgY2hhbmdlZCBmb3IgYXV0b21ha2UuICBXZSByZXdyaXRlIEFDX1BST0dfQ0MKKy0j IHRvIGF1dG9tYXRpY2FsbHkgY2FsbCB0aGlzLgorLUFDX0RFRlVOKFtfQU1fUFJPR19DQ19DX09d LAorLVtBQ19SRVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pZG5sCistQUNfUkVRVUlSRV9BVVhf RklMRShbY29tcGlsZV0pZG5sCistQUNfTEFOR19QVVNIKFtDXSlkbmwKKy1BQ19DQUNIRV9DSEVD SygKKy0gIFt3aGV0aGVyICRDQyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXJdLAorLSAg W2FtX2N2X3Byb2dfY2NfY19vXSwKKy0gIFtBQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dS QU0oW10pXSkKKy0gICMgTWFrZSBzdXJlIGl0IHdvcmtzIGJvdGggd2l0aCAkQ0MgYW5kIHdpdGgg c2ltcGxlIGNjLgorLSAgIyBGb2xsb3dpbmcgQUNfUFJPR19DQ19DX08sIHdlIGRvIHRoZSB0ZXN0 IHR3aWNlIGJlY2F1c2Ugc29tZQorLSAgIyBjb21waWxlcnMgcmVmdXNlIHRvIG92ZXJ3cml0ZSBh biBleGlzdGluZyAubyBmaWxlIHdpdGggLW8sCistICAjIHRob3VnaCB0aGV5IHdpbGwgY3JlYXRl IG9uZS4KKy0gIGFtX2N2X3Byb2dfY2NfY19vPXllcworLSAgZm9yIGFtX2kgaW4gMSAyOyBkbwor LSAgICBpZiBBTV9SVU5fTE9HKFskQ0MgLWMgY29uZnRlc3QuJGFjX2V4dCAtbyBjb25mdGVzdDIu JGFjX29iamV4dF0pIFwKKy0gICAgICAgICAmJiB0ZXN0IC1mIGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0 OyB0aGVuCistICAgICAgOiBPSworLSAgICBlbHNlCistICAgICAgYW1fY3ZfcHJvZ19jY19jX289 bm8KKy0gICAgICBicmVhaworLSAgICBmaQorLSAgZG9uZQorLSAgcm0gLWYgY29yZSBjb25mdGVz dCoKKy0gIHVuc2V0IGFtX2ldKQorLWlmIHRlc3QgIiRhbV9jdl9wcm9nX2NjX2NfbyIgIT0geWVz OyB0aGVuCistICAgIyBMb3NpbmcgY29tcGlsZXIsIHNvIG92ZXJyaWRlIHdpdGggdGhlIHNjcmlw dC4KKy0gICAjIEZJWE1FOiBJdCBpcyB3cm9uZyB0byByZXdyaXRlIENDLgorLSAgICMgQnV0IGlm IHdlIGRvbid0IHRoZW4gd2UgZ2V0IGludG8gdHJvdWJsZSBvZiBvbmUgc29ydCBvciBhbm90aGVy LgorLSAgICMgQSBsb25nZXItdGVybSBmaXggd291bGQgYmUgdG8gaGF2ZSBhdXRvbWFrZSB1c2Ug YW1fX0NDIGluIHRoaXMgY2FzZSwKKy0gICAjIGFuZCB0aGVuIHdlIGNvdWxkIHNldCBhbV9fQ0M9 IlwkKHRvcF9zcmNkaXIpL2NvbXBpbGUgXCQoQ0MpIgorLSAgIENDPSIkYW1fYXV4X2Rpci9jb21w aWxlICRDQyIKKy1maQorLUFDX0xBTkdfUE9QKFtDXSldKQorLQorLSMgRm9yIGJhY2t3YXJkIGNv bXBhdGliaWxpdHkuCistQUNfREVGVU5fT05DRShbQU1fUFJPR19DQ19DX09dLCBbQUNfUkVRVUlS RShbQUNfUFJPR19DQ10pXSkKKy0KKy0jIENvcHlyaWdodCAoQykgMjAwMS0yMDE0IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJl OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCistIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlz c2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorLSMgd2l0aCBvciB3aXRob3V0IG1v ZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorLQorLSMg QU1fUlVOX0xPRyhDT01NQU5EKQorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgUnVuIENPTU1B TkQsIHNhdmUgdGhlIGV4aXQgc3RhdHVzIGluIGFjX3N0YXR1cywgYW5kIGxvZyBpdC4KKy0jIChU aGlzIGhhcyBiZWVuIGFkYXB0ZWQgZnJvbSBBdXRvY29uZidzIF9BQ19SVU5fTE9HIG1hY3JvLikK Ky1BQ19ERUZVTihbQU1fUlVOX0xPR10sCistW3sgZWNobyAiJGFzX21lOiRMSU5FTk86ICQxIiA+ JkFTX01FU1NBR0VfTE9HX0ZECistICAgKCQxKSA+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JkFTX01F U1NBR0VfTE9HX0ZECistICAgYWNfc3RhdHVzPSQ/CistICAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKy0gICAoZXhpdCAkYWNfc3Rh dHVzKTsgfV0pCistCistIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYnVpbGQgZW52aXJv bm1lbnQgaXMgc2FuZS4gICAgLSotIEF1dG9jb25mIC0qLQorLQorLSMgQ29weXJpZ2h0IChDKSAx OTk2LTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIworLSMgVGhpcyBmaWxl IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKy0jIGdpdmVz IHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCistIyB3 aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuCistCistIyBBTV9TQU5JVFlfQ0hFQ0sKKy0jIC0tLS0tLS0tLS0tLS0tLQorLUFD X0RFRlVOKFtBTV9TQU5JVFlfQ0hFQ0tdLAorLVtBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgYnVp bGQgZW52aXJvbm1lbnQgaXMgc2FuZV0pCistIyBSZWplY3QgdW5zYWZlIGNoYXJhY3RlcnMgaW4g JHNyY2RpciBvciB0aGUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkKKy0jIG5hbWUuICBBY2Nl cHQgc3BhY2UgYW5kIHRhYiBvbmx5IGluIHRoZSBsYXR0ZXIuCistYW1fbGY9JworLScKKy1jYXNl IGBwd2RgIGluCistICAqW1tcXFwiXCNcJFwmXCdcYCRhbV9sZl1dKikKKy0gICAgQUNfTVNHX0VS Uk9SKFt1bnNhZmUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkgbmFtZV0pOzsKKy1lc2FjCist Y2FzZSAkc3JjZGlyIGluCistICAqW1tcXFwiXCNcJFwmXCdcYCRhbV9sZlwgXAldXSopCistICAg IEFDX01TR19FUlJPUihbdW5zYWZlIHNyY2RpciB2YWx1ZTogJyRzcmNkaXInXSk7OworLWVzYWMK Ky0KKy0jIERvICdzZXQnIGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3Vy cmVudCBzaGVsbCdzCistIyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNv bmZpZ3VyZSBpcyBhY3R1YWxseSBhCistIyBzeW1saW5rOyBzb21lIHN5c3RlbXMgcGxheSB3ZWly ZCBnYW1lcyB3aXRoIHRoZSBtb2QgdGltZSBvZiBzeW1saW5rcworLSMgKGVnIEZyZWVCU0QgcmV0 dXJucyB0aGUgbW9kIHRpbWUgb2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nCistIyBkaXJlY3Rv cnkpLgorLWlmICgKKy0gICBhbV9oYXNfc2xlcHQ9bm8KKy0gICBmb3IgYW1fdHJ5IGluIDEgMjsg ZG8KKy0gICAgIGVjaG8gInRpbWVzdGFtcCwgc2xlcHQ6ICRhbV9oYXNfc2xlcHQiID4gY29uZnRl c3QuZmlsZQorLSAgICAgc2V0IFggYGxzIC1MdCAiJHNyY2Rpci9jb25maWd1cmUiIGNvbmZ0ZXN0 LmZpbGUgMj4gL2Rldi9udWxsYAorLSAgICAgaWYgdGVzdCAiJFsqXSIgPSAiWCI7IHRoZW4KKy0J IyAtTCBkaWRuJ3Qgd29yay4KKy0Jc2V0IFggYGxzIC10ICIkc3JjZGlyL2NvbmZpZ3VyZSIgY29u ZnRlc3QuZmlsZWAKKy0gICAgIGZpCistICAgICBpZiB0ZXN0ICIkWypdIiAhPSAiWCAkc3JjZGly L2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcCistCSYmIHRlc3QgIiRbKl0iICE9ICJYIGNvbmZ0 ZXN0LmZpbGUgJHNyY2Rpci9jb25maWd1cmUiOyB0aGVuCistCistCSMgSWYgbmVpdGhlciBtYXRj aGVkLCB0aGVuIHdlIGhhdmUgYSBicm9rZW4gbHMuICBUaGlzIGNhbiBoYXBwZW4KKy0JIyBpZiwg Zm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQorLQkj IGJyb2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRoaXMgaGFzIGFjdHVhbGx5 CistCSMgaGFwcGVuZWQuICBTdWNoIGEgc3lzdGVtIGNvdWxkIG5vdCBiZSBjb25zaWRlcmVkICJz YW5lIi4KKy0JQUNfTVNHX0VSUk9SKFtscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUg dGhlcmUgaXMgbm90IGEgYnJva2VuCistICBhbGlhcyBpbiB5b3VyIGVudmlyb25tZW50XSkKKy0g ICAgIGZpCistICAgICBpZiB0ZXN0ICIkWzJdIiA9IGNvbmZ0ZXN0LmZpbGUgfHwgdGVzdCAkYW1f dHJ5IC1lcSAyOyB0aGVuCistICAgICAgIGJyZWFrCistICAgICBmaQorLSAgICAgIyBKdXN0IGlu IGNhc2UuCistICAgICBzbGVlcCAxCistICAgICBhbV9oYXNfc2xlcHQ9eWVzCistICAgZG9uZQor LSAgIHRlc3QgIiRbMl0iID0gY29uZnRlc3QuZmlsZQorLSAgICkKKy10aGVuCistICAgIyBPay4K Ky0gICA6CistZWxzZQorLSAgIEFDX01TR19FUlJPUihbbmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9s ZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCistQ2hlY2sgeW91ciBzeXN0ZW0gY2xvY2tdKQor LWZpCistQUNfTVNHX1JFU1VMVChbeWVzXSkKKy0jIElmIHdlIGRpZG4ndCBzbGVlcCwgd2Ugc3Rp bGwgbmVlZCB0byBlbnN1cmUgdGltZSBzdGFtcHMgb2YgY29uZmlnLnN0YXR1cyBhbmQKKy0jIGdl bmVyYXRlZCBmaWxlcyBhcmUgc3RyaWN0bHkgbmV3ZXIuCistYW1fc2xlZXBfcGlkPQorLWlmIGdy ZXAgJ3NsZXB0OiBubycgY29uZnRlc3QuZmlsZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0gICgg c2xlZXAgMSApICYKKy0gIGFtX3NsZWVwX3BpZD0kIQorLWZpCistQUNfQ09ORklHX0NPTU1BTkRT X1BSRSgKKy0gIFtBQ19NU0dfQ0hFQ0tJTkcoW3RoYXQgZ2VuZXJhdGVkIGZpbGVzIGFyZSBuZXdl ciB0aGFuIGNvbmZpZ3VyZV0pCistICAgaWYgdGVzdCAtbiAiJGFtX3NsZWVwX3BpZCI7IHRoZW4K Ky0gICAgICMgSGlkZSB3YXJuaW5ncyBhYm91dCByZXVzZWQgUElEcy4KKy0gICAgIHdhaXQgJGFt X3NsZWVwX3BpZCAyPi9kZXYvbnVsbAorLSAgIGZpCistICAgQUNfTVNHX1JFU1VMVChbZG9uZV0p XSkKKy1ybSAtZiBjb25mdGVzdC5maWxlCistXSkKKy0KKy0jIENvcHlyaWdodCAoQykgMjAwOS0y MDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMgZmlsZSBpcyBm cmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCistIyBnaXZlcyB1bmxp bWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorLSMgd2l0aCBv ciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2Vy dmVkLgorLQorLSMgQU1fU0lMRU5UX1JVTEVTKFtERUZBVUxUXSkKKy0jIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistIyBFbmFibGUgbGVzcyB2ZXJib3NlIGJ1aWxkIHJ1bGVzOyB3aXRoIHRo ZSBkZWZhdWx0IHNldCB0byBERUZBVUxUCistIyAoInllcyIgYmVpbmcgbGVzcyB2ZXJib3NlLCAi bm8iIG9yIGVtcHR5IGJlaW5nIHZlcmJvc2UpLgorLUFDX0RFRlVOKFtBTV9TSUxFTlRfUlVMRVNd LAorLVtBQ19BUkdfRU5BQkxFKFtzaWxlbnQtcnVsZXNdLCBbZG5sCistQVNfSEVMUF9TVFJJTkco CistICBbLS1lbmFibGUtc2lsZW50LXJ1bGVzXSwKKy0gIFtsZXNzIHZlcmJvc2UgYnVpbGQgb3V0 cHV0ICh1bmRvOiAibWFrZSBWPTEiKV0pCistQVNfSEVMUF9TVFJJTkcoCistICBbLS1kaXNhYmxl LXNpbGVudC1ydWxlc10sCistICBbdmVyYm9zZSBidWlsZCBvdXRwdXQgKHVuZG86ICJtYWtlIFY9 MCIpXSlkbmwKKy1dKQorLWNhc2UgJGVuYWJsZV9zaWxlbnRfcnVsZXMgaW4gQCU6QCAoKCgKKy0g IHllcykgQU1fREVGQVVMVF9WRVJCT1NJVFk9MDs7CistICAgbm8pIEFNX0RFRkFVTFRfVkVSQk9T SVRZPTE7OworLSAgICAqKSBBTV9ERUZBVUxUX1ZFUkJPU0lUWT1tNF9pZihbJDFdLCBbeWVzXSwg WzBdLCBbMV0pOzsKKy1lc2FjCistZG5sCistZG5sIEEgZmV3ICdtYWtlJyBpbXBsZW1lbnRhdGlv bnMgKGUuZy4sIE5vblN0b3AgT1MgYW5kIE5leHRTdGVwKQorLWRubCBkbyBub3Qgc3VwcG9ydCBu ZXN0ZWQgdmFyaWFibGUgZXhwYW5zaW9ucy4KKy1kbmwgU2VlIGF1dG9tYWtlIGJ1ZyM5OTI4IGFu ZCBidWcjMTAyMzcuCistYW1fbWFrZT0ke01BS0UtbWFrZX0KKy1BQ19DQUNIRV9DSEVDSyhbd2hl dGhlciAkYW1fbWFrZSBzdXBwb3J0cyBuZXN0ZWQgdmFyaWFibGVzXSwKKy0gICBbYW1fY3ZfbWFr ZV9zdXBwb3J0X25lc3RlZF92YXJpYWJsZXNdLAorLSAgIFtpZiBBU19FQ0hPKFtbJ1RSVUU9JChC QVIkKFYpKQorLUJBUjA9ZmFsc2UKKy1CQVIxPXRydWUKKy1WPTEKKy1hbV9fZG9pdDoKKy0JQCQo VFJVRSkKKy0uUEhPTlk6IGFtX19kb2l0J11dKSB8ICRhbV9tYWtlIC1mIC0gPi9kZXYvbnVsbCAy PiYxOyB0aGVuCistICBhbV9jdl9tYWtlX3N1cHBvcnRfbmVzdGVkX3ZhcmlhYmxlcz15ZXMKKy1l bHNlCistICBhbV9jdl9tYWtlX3N1cHBvcnRfbmVzdGVkX3ZhcmlhYmxlcz1ubworLWZpXSkKKy1p ZiB0ZXN0ICRhbV9jdl9tYWtlX3N1cHBvcnRfbmVzdGVkX3ZhcmlhYmxlcyA9IHllczsgdGhlbgor LSAgZG5sIFVzaW5nICckVicgaW5zdGVhZCBvZiAnJChWKScgYnJlYWtzIElSSVggbWFrZS4KKy0g IEFNX1Y9JyQoViknCistICBBTV9ERUZBVUxUX1Y9JyQoQU1fREVGQVVMVF9WRVJCT1NJVFkpJwor LWVsc2UKKy0gIEFNX1Y9JEFNX0RFRkFVTFRfVkVSQk9TSVRZCistICBBTV9ERUZBVUxUX1Y9JEFN X0RFRkFVTFRfVkVSQk9TSVRZCistZmkKKy1BQ19TVUJTVChbQU1fVl0pZG5sCistQU1fU1VCU1Rf Tk9UTUFLRShbQU1fVl0pZG5sCistQUNfU1VCU1QoW0FNX0RFRkFVTFRfVl0pZG5sCistQU1fU1VC U1RfTk9UTUFLRShbQU1fREVGQVVMVF9WXSlkbmwKKy1BQ19TVUJTVChbQU1fREVGQVVMVF9WRVJC T1NJVFldKWRubAorLUFNX0JBQ0tTTEFTSD0nXCcKKy1BQ19TVUJTVChbQU1fQkFDS1NMQVNIXSlk bmwKKy1fQU1fU1VCU1RfTk9UTUFLRShbQU1fQkFDS1NMQVNIXSlkbmwKKy1dKQorLQorLSMgQ29w eXJpZ2h0IChDKSAyMDAxLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIwor LSMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24KKy0jIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1 dGUgaXQsCistIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlz IG5vdGljZSBpcyBwcmVzZXJ2ZWQuCistCistIyBBTV9QUk9HX0lOU1RBTExfU1RSSVAKKy0jIC0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgT25lIGlzc3VlIHdpdGggdmVuZG9yICdpbnN0YWxsJyAo ZXZlbiBHTlUpIGlzIHRoYXQgeW91IGNhbid0CistIyBzcGVjaWZ5IHRoZSBwcm9ncmFtIHVzZWQg dG8gc3RyaXAgYmluYXJpZXMuICBUaGlzIGlzIGVzcGVjaWFsbHkKKy0jIGFubm95aW5nIGluIGNy b3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudHMsIHdoZXJlIHRoZSBidWlsZCdzIHN0cmlwCistIyBp cyB1bmxpa2VseSB0byBoYW5kbGUgdGhlIGhvc3QncyBiaW5hcmllcy4KKy0jIEZvcnR1bmF0ZWx5 IGluc3RhbGwtc2ggd2lsbCBob25vciBhIFNUUklQUFJPRyB2YXJpYWJsZSwgc28gd2UKKy0jIGFs d2F5cyB1c2UgaW5zdGFsbC1zaCBpbiAibWFrZSBpbnN0YWxsLXN0cmlwIiwgYW5kIGluaXRpYWxp emUKKy0jIFNUUklQUFJPRyB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgU1RSSVAgdmFyaWFibGUgKHNl dCBieSB0aGUgdXNlcikuCistQUNfREVGVU4oW0FNX1BST0dfSU5TVEFMTF9TVFJJUF0sCistW0FD X1JFUVVJUkUoW0FNX1BST0dfSU5TVEFMTF9TSF0pZG5sCistIyBJbnN0YWxsZWQgYmluYXJpZXMg YXJlIHVzdWFsbHkgc3RyaXBwZWQgdXNpbmcgJ3N0cmlwJyB3aGVuIHRoZSB1c2VyCistIyBydW4g Im1ha2UgaW5zdGFsbC1zdHJpcCIuICBIb3dldmVyICdzdHJpcCcgbWlnaHQgbm90IGJlIHRoZSBy aWdodAorLSMgdG9vbCB0byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0 aGVyZWZvcmUgQXV0b21ha2UKKy0jIHdpbGwgaG9ub3IgdGhlICdTVFJJUCcgZW52aXJvbm1lbnQg dmFyaWFibGUgdG8gb3ZlcnJ1bGUgdGhpcyBwcm9ncmFtLgorLWRubCBEb24ndCB0ZXN0IGZvciAk Y3Jvc3NfY29tcGlsaW5nID0geWVzLCBiZWNhdXNlIGl0IG1pZ2h0IGJlICdtYXliZScuCistaWYg dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0gbm87IHRoZW4KKy0gIEFDX0NIRUNLX1RPT0woW1NU UklQXSwgW3N0cmlwXSwgOikKKy1maQorLUlOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCQoaW5zdGFs bF9zaCkgLWMgLXMiCistQUNfU1VCU1QoW0lOU1RBTExfU1RSSVBfUFJPR1JBTV0pXSkKKy0KKy0j IENvcHlyaWdodCAoQykgMjAwNi0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor LSMKKy0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uCistIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0 cmlidXRlIGl0LAorLSMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMg dGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorLQorLSMgX0FNX1NVQlNUX05PVE1BS0UoVkFSSUFC TEUpCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIFByZXZlbnQgQXV0b21ha2Ug ZnJvbSBvdXRwdXR0aW5nIFZBUklBQkxFID0gQFZBUklBQkxFQCBpbiBNYWtlZmlsZS5pbi4KKy0j IFRoaXMgbWFjcm8gaXMgdHJhY2VkIGJ5IEF1dG9tYWtlLgorLUFDX0RFRlVOKFtfQU1fU1VCU1Rf Tk9UTUFLRV0pCistCistIyBBTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQorLSMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0jIFB1YmxpYyBzaXN0ZXIgb2YgX0FNX1NVQlNUX05PVE1BS0Uu CistQUNfREVGVU4oW0FNX1NVQlNUX05PVE1BS0VdLCBbX0FNX1NVQlNUX05PVE1BS0UoJEApXSkK Ky0KKy0jIENoZWNrIGhvdyB0byBjcmVhdGUgYSB0YXJiYWxsLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtKi0gQXV0b2NvbmYgLSotCistCistIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jCistIyBUaGlzIGZpbGUgaXMgZnJlZSBz b2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVk IHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0 aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4K Ky0KKy0jIF9BTV9QUk9HX1RBUihGT1JNQVQpCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMg Q2hlY2sgaG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwgaW4gZm9ybWF0IEZPUk1BVC4KKy0jIEZPUk1B VCBzaG91bGQgYmUgb25lIG9mICd2NycsICd1c3RhcicsIG9yICdwYXgnLgorLSMKKy0jIFN1YnN0 aXR1dGUgYSB2YXJpYWJsZSAkKGFtX190YXIpIHRoYXQgaXMgYSBjb21tYW5kCistIyB3cml0aW5n IHRvIHN0ZG91dCBhIEZPUk1BVC10YXJiYWxsIGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQorLSMg JHRhcmRpci4KKy0jICAgICB0YXJkaXI9ZGlyZWN0b3J5ICYmICQoYW1fX3RhcikgPiByZXN1bHQu dGFyCistIworLSMgU3Vic3RpdHV0ZSBhIHZhcmlhYmxlICQoYW1fX3VudGFyKSB0aGF0IGV4dHJh Y3Qgc3VjaAorLSMgYSB0YXJiYWxsIHJlYWQgZnJvbSBzdGRpbi4KKy0jICAgICAkKGFtX191bnRh cikgPCByZXN1bHQudGFyCistIworLUFDX0RFRlVOKFtfQU1fUFJPR19UQVJdLAorLVsjIEFsd2F5 cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICBZZXMsIGl0J3Mgc3Rp bGwgdXNlZAorLSMgaW4gdGhlIHdpbGQgOi0oICBXZSBzaG91bGQgZmluZCBhIHByb3BlciB3YXkg dG8gZGVwcmVjYXRlIGl0IC4uLgorLUFDX1NVQlNUKFtBTVRBUl0sIFsnJCR7VEFSLXRhcn0nXSkK Ky0KKy0jIFdlJ2xsIGxvb3Agb3ZlciBhbGwga25vd24gbWV0aG9kcyB0byBjcmVhdGUgYSB0YXIg YXJjaGl2ZSB1bnRpbCBvbmUgd29ya3MuCistX2FtX3Rvb2xzPSdnbnV0YXIgbTRfaWYoWyQxXSwg W3VzdGFyXSwgW3BsYWludGFyXSkgcGF4IGNwaW8gbm9uZScKKy0KKy1tNF9pZihbJDFdLCBbdjdd LAorLSAgW2FtX190YXI9JyQke1RBUi10YXJ9IGNob2YgLSAiJCR0YXJkaXIiJyBhbV9fdW50YXI9 JyQke1RBUi10YXJ9IHhmIC0nXSwKKy0KKy0gIFttNF9jYXNlKFskMV0sCistICAgIFt1c3Rhcl0s CistICAgICBbIyBUaGUgUE9TSVggMTk4OCAndXN0YXInIGZvcm1hdCBpcyBkZWZpbmVkIHdpdGgg Zml4ZWQtc2l6ZSBmaWVsZHMuCistICAgICAgIyBUaGVyZSBpcyBub3RhYmx5IGEgMjEgYml0cyBs aW1pdCBmb3IgdGhlIFVJRCBhbmQgdGhlIEdJRC4gIEluIGZhY3QsCistICAgICAgIyB0aGUgJ3Bh eCcgdXRpbGl0eSBjYW4gaGFuZyBvbiBiaWdnZXIgVUlEL0dJRCAoc2VlIGF1dG9tYWtlIGJ1ZyM4 MzQzCistICAgICAgIyBhbmQgYnVnIzEzNTg4KS4KKy0gICAgICBhbV9tYXhfdWlkPTIwOTcxNTEg IyAyXjIxIC0gMQorLSAgICAgIGFtX21heF9naWQ9JGFtX21heF91aWQKKy0gICAgICAjIFRoZSAk VUlEIGFuZCAkR0lEIHZhcmlhYmxlcyBhcmUgbm90IHBvcnRhYmxlLCBzbyB3ZSBuZWVkIHRvIHJl c29ydAorLSAgICAgICMgdG8gdGhlIFBPU0lYLW1hbmRhdGVkIGlkKDEpIHV0aWxpdHkuICBFcnJv cnMgaW4gdGhlICdpZCcgY2FsbHMKKy0gICAgICAjIGJlbG93IGFyZSBkZWZpbml0ZWx5IHVuZXhw ZWN0ZWQsIHNvIGFsbG93IHRoZSB1c2VycyB0byBzZWUgdGhlbQorLSAgICAgICMgKHRoYXQgaXMs IGF2b2lkIHN0ZGVyciByZWRpcmVjdGlvbikuCistICAgICAgYW1fdWlkPWBpZCAtdSB8fCBlY2hv IHVua25vd25gCistICAgICAgYW1fZ2lkPWBpZCAtZyB8fCBlY2hvIHVua25vd25gCistICAgICAg QUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFVJRCAnJGFtX3VpZCcgaXMgc3VwcG9ydGVkIGJ5IHVz dGFyIGZvcm1hdF0pCistICAgICAgaWYgdGVzdCAkYW1fdWlkIC1sZSAkYW1fbWF4X3VpZDsgdGhl bgorLSAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCistICAgICAgZWxzZQorLSAgICAgICAg IEFDX01TR19SRVNVTFQoW25vXSkKKy0gICAgICAgICBfYW1fdG9vbHM9bm9uZQorLSAgICAgIGZp CistICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIEdJRCAnJGFtX2dpZCcgaXMgc3VwcG9y dGVkIGJ5IHVzdGFyIGZvcm1hdF0pCistICAgICAgaWYgdGVzdCAkYW1fZ2lkIC1sZSAkYW1fbWF4 X2dpZDsgdGhlbgorLSAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCistICAgICAgZWxzZQor LSAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorLSAgICAgICAgX2FtX3Rvb2xzPW5vbmUKKy0g ICAgICBmaV0sCistCistICBbcGF4XSwKKy0gICAgW10sCistCistICBbbTRfZmF0YWwoW1Vua25v d24gdGFyIGZvcm1hdF0pXSkKKy0KKy0gIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGNyZWF0ZSBh ICQxIHRhciBhcmNoaXZlXSkKKy0KKy0gICMgR28gYWhlYWQgZXZlbiBpZiB3ZSBoYXZlIHRoZSB2 YWx1ZSBhbHJlYWR5IGNhY2hlZC4gIFdlIGRvIHNvIGJlY2F1c2Ugd2UKKy0gICMgbmVlZCB0byBz ZXQgdGhlIHZhbHVlcyBmb3IgdGhlICdhbV9fdGFyJyBhbmQgJ2FtX191bnRhcicgdmFyaWFibGVz LgorLSAgX2FtX3Rvb2xzPSR7YW1fY3ZfcHJvZ190YXJfJDEtJF9hbV90b29sc30KKy0KKy0gIGZv ciBfYW1fdG9vbCBpbiAkX2FtX3Rvb2xzOyBkbworLSAgICBjYXNlICRfYW1fdG9vbCBpbgorLSAg ICBnbnV0YXIpCistICAgICAgZm9yIF9hbV90YXIgaW4gdGFyIGdudXRhciBndGFyOyBkbworLSAg ICAgICAgQU1fUlVOX0xPRyhbJF9hbV90YXIgLS12ZXJzaW9uXSkgJiYgYnJlYWsKKy0gICAgICBk b25lCistICAgICAgYW1fX3Rhcj0iJF9hbV90YXIgLS1mb3JtYXQ9bTRfaWYoWyQxXSwgW3BheF0s IFtwb3NpeF0sIFskMV0pIC1jaGYgLSAiJyIkJHRhcmRpciInCistICAgICAgYW1fX3Rhcl89IiRf YW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBbJDFdKSAtY2hmIC0g IiciJHRhcmRpciInCistICAgICAgYW1fX3VudGFyPSIkX2FtX3RhciAteGYgLSIKKy0gICAgICA7 OworLSAgICBwbGFpbnRhcikKKy0gICAgICAjIE11c3Qgc2tpcCBHTlUgdGFyOiBpZiBpdCBkb2Vz IG5vdCBzdXBwb3J0IC0tZm9ybWF0PSBpdCBkb2Vzbid0IGNyZWF0ZQorLSAgICAgICMgdXN0YXIg dGFyYmFsbCBlaXRoZXIuCistICAgICAgKHRhciAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMSAm JiBjb250aW51ZQorLSAgICAgIGFtX190YXI9J3RhciBjaGYgLSAiJCR0YXJkaXIiJworLSAgICAg IGFtX190YXJfPSd0YXIgY2hmIC0gIiR0YXJkaXIiJworLSAgICAgIGFtX191bnRhcj0ndGFyIHhm IC0nCistICAgICAgOzsKKy0gICAgcGF4KQorLSAgICAgIGFtX190YXI9J3BheCAtTCAteCAkMSAt dyAiJCR0YXJkaXIiJworLSAgICAgIGFtX190YXJfPSdwYXggLUwgLXggJDEgLXcgIiR0YXJkaXIi JworLSAgICAgIGFtX191bnRhcj0ncGF4IC1yJworLSAgICAgIDs7CistICAgIGNwaW8pCistICAg ICAgYW1fX3Rhcj0nZmluZCAiJCR0YXJkaXIiIC1wcmludCB8IGNwaW8gLW8gLUggJDEgLUwnCist ICAgICAgYW1fX3Rhcl89J2ZpbmQgIiR0YXJkaXIiIC1wcmludCB8IGNwaW8gLW8gLUggJDEgLUwn CistICAgICAgYW1fX3VudGFyPSdjcGlvIC1pIC1IICQxIC1kJworLSAgICAgIDs7CistICAgIG5v bmUpCistICAgICAgYW1fX3Rhcj1mYWxzZQorLSAgICAgIGFtX190YXJfPWZhbHNlCistICAgICAg YW1fX3VudGFyPWZhbHNlCistICAgICAgOzsKKy0gICAgZXNhYworLQorLSAgICAjIElmIHRoZSB2 YWx1ZSB3YXMgY2FjaGVkLCBzdG9wIG5vdy4gIFdlIGp1c3Qgd2FudGVkIHRvIGhhdmUgYW1fX3Rh cgorLSAgICAjIGFuZCBhbV9fdW50YXIgc2V0LgorLSAgICB0ZXN0IC1uICIke2FtX2N2X3Byb2df dGFyXyQxfSIgJiYgYnJlYWsKKy0KKy0gICAgIyB0YXIvdW50YXIgYSBkdW1teSBkaXJlY3Rvcnks IGFuZCBzdG9wIGlmIHRoZSBjb21tYW5kIHdvcmtzLgorLSAgICBybSAtcmYgY29uZnRlc3QuZGly CistICAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgorLSAgICBlY2hvIEdyZXBNZSA+IGNvbmZ0ZXN0LmRp ci9maWxlCistICAgIEFNX1JVTl9MT0coW3RhcmRpcj1jb25mdGVzdC5kaXIgJiYgZXZhbCAkYW1f X3Rhcl8gPmNvbmZ0ZXN0LnRhcl0pCistICAgIHJtIC1yZiBjb25mdGVzdC5kaXIKKy0gICAgaWYg dGVzdCAtcyBjb25mdGVzdC50YXI7IHRoZW4KKy0gICAgICBBTV9SVU5fTE9HKFskYW1fX3VudGFy IDxjb25mdGVzdC50YXJdKQorLSAgICAgIEFNX1JVTl9MT0coW2NhdCBjb25mdGVzdC5kaXIvZmls ZV0pCistICAgICAgZ3JlcCBHcmVwTWUgY29uZnRlc3QuZGlyL2ZpbGUgPi9kZXYvbnVsbCAyPiYx ICYmIGJyZWFrCistICAgIGZpCistICBkb25lCistICBybSAtcmYgY29uZnRlc3QuZGlyCistCist ICBBQ19DQUNIRV9WQUwoW2FtX2N2X3Byb2dfdGFyXyQxXSwgW2FtX2N2X3Byb2dfdGFyXyQxPSRf YW1fdG9vbF0pCistICBBQ19NU0dfUkVTVUxUKFskYW1fY3ZfcHJvZ190YXJfJDFdKV0pCistCist QUNfU1VCU1QoW2FtX190YXJdKQorLUFDX1NVQlNUKFthbV9fdW50YXJdKQorLV0pICMgX0FNX1BS T0dfVEFSCistCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBjMmJh YWI0Li4wYmQyYWZjIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BA IC0xMiw2ICsxMiw5IEBACisgIyMgTTRzaCBJbml0aWFsaXphdGlvbi4gIyMKKyAjIyAtLS0tLS0t LS0tLS0tLS0tLS0tLSAjIworIAorK2FjbG9jYWwKKythdXRvbWFrZQorKworICMgQmUgbW9yZSBC b3VybmUgY29tcGF0aWJsZQorIERVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mg c2gKKyBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rl di9udWxsIDI+JjE7IHRoZW4gOgorQEAgLTIxMzUsNyArMjEzOCw2IEBAIGFjX2NvbXBpbGVyX2du dT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKyAKKyAKKyAKKy1hbV9fYXBpX3ZlcnNpb249JzEuMTUn CisgCisgYWNfYXV4X2Rpcj0KKyBmb3IgYWNfZGlyIGluICIkc3JjZGlyIiAiJHNyY2Rpci8uLiIg IiRzcmNkaXIvLi4vLi4iOyBkbworZGlmZiAtLWdpdCBhL2luY2x1ZGUvaGV4LmggYi9pbmNsdWRl L2hleC5oCitpbmRleCA1Nzg0NWMwLi4yYjc3ZDg4IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9oZXgu aAorKysrIGIvaW5jbHVkZS9oZXguaAorQEAgLTEsNSArMSw2IEBACisgLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKlwKKyAgKiAgQ29weXJpZ2h0IChDKSAyMDAxLCBoZXhjdXJzZSBpcyB3cml0dGVuIGJ5 IEpld2Zpc2ggYW5kIEFybW90aCAgICAgICAgICAgICAqCisrICogIENvcHlyaWdodCAoQykgMjAy MC0yMDIyIHByc28gYXQgZ2l0aHViLCBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzICAgICAgICAgICAg KgorICAqCQkJCQkJCQkJICAgICAgKgorICAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgICAgICoKKyAgKiAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgICAgICAqCitAQCAtNzQsNyArNzUsNiBAQCBzdHJ1Y3QgU3RhY2sgewkJCQkJLyog c3RydWN0IHRvIGJlIHVzZWQgZm9yIHN0YWNrKi8KKyAgICAgaW50IHNhdmVkVmFsOworICAgICBv ZmZfdCBjdXJyZW50TG9jOworICAgICBzdHJ1Y3QgU3RhY2sgKnByZXY7CistICAgIHN0cnVjdCBM aW5rZWRMaXN0ICpsbGlzdDsKKyB9OworIAorIC8qIHR5cGVkZWZzICovCitAQCAtOTksNyArOTks MTIgQEAgZXh0ZXJuIG9mZl90IExhc3RMb2M7CisgZXh0ZXJuIGludCAgU0laRV9DSDsKKyBleHRl cm4gYm9vbCBVU0VfRUJDRElDOworIGV4dGVybiBjaGFyIEVCQ0RJQ1syNTZdOworK2V4dGVybiBp bnQgQVNDSUlfdG9fRUJDRElDWzI1Nl07CisgZXh0ZXJuIGJvb2wgY29sb3JfZW5hYmxlZDsKKytl eHRlcm4gYm9vbCBURVJNX0NPTE9SUzsKKytleHRlcm4gYm9vbCBGTlVNQkVSUzsKKytleHRlcm4g aW50ICBjb2xvcl9sZXZlbDsKKytleHRlcm4gYm9vbCBzYXZlZDsKKyAKKyAvKiBtYWNyb3MgKi8K KyAvKiNkZWZpbmUgY3VycmVudExvYyhsaW5lLCBjb2wpICgobGluZSkgKiBCQVNFICsoKGNvbCkv MykpICovCitAQCAtMTA4LDcgKzExMyw2IEBAIGV4dGVybiBib29sIGNvbG9yX2VuYWJsZWQ7Cisg CQkJCQkJLyogY3Vyc29yIGxvY2F0aW9uIGluIHRoZSBmaWxlKi8KKyAjZGVmaW5lIGN1cnNvckxv YyhsaW5lLGNvbCxlZGl0SGV4LGIpICgoKGxpbmUpKihiKSkgKyAoKGNvbCkvKChlZGl0SGV4KT8z OjEpKSkKKyAjZGVmaW5lIGxsYWxsb2MoKSAoc3RydWN0IExpbmtlZExpc3QgKikgY2FsbG9jKDEs IHNpemVvZihzdHJ1Y3QgTGlua2VkTGlzdCkpCistI2RlZmluZSBpc0VtcHR5U3RhY2soc3RhY2sp ICgoKHN0YWNrKSA9PSBOVUxMKSA/IFRSVUUgOiBGQUxTRSkKKyAKKyAjZGVmaW5lIFVOVVNFRCh4 KSAodm9pZCkoeCkKKyAKK0BAIC0xMTksNiArMTIzLDExIEBAIGV4dGVybiBib29sIGNvbG9yX2Vu YWJsZWQ7CisgI2RlZmluZSBNSU5fQ09MUyAgICAgICAgNzAgICAgICAgICAgICAgICAgICAgICAg Lyogc2NyZWVuIGhhcyB0byBiZSA3MDwgY29scyAgKi8KKyAjZGVmaW5lIE1JTl9MSU5FUyAgICAg ICA3ICAgICAvKiA4IC0gMSAqLyAgICAgICAvKiB0aGUgc2xrIGNyYXAgbWludXNlcyAxIGxpbmUq LworICNkZWZpbmUgS0VZX1RBQiAJCTkJCQkvKiB2YWx1ZSBmb3IgdGhlIHRhYiBrZXkgICAgICAq LworKyNkZWZpbmUgTk9ERUYgICAgICAgICAgIDAgIC8qIHZhbHVlIGZvciBub3QgZGVmaW5lZCBj aGFyYWN0ZXJzIGluIEFTQ0lJX3RvX0VCQ0RJQyAqLworKyNkZWZpbmUgU0FWRVBPSU5UICAgICAg LTEKKysjZGVmaW5lIEZJTEVCVUZGICAgIDE2Mzg0CQkJLyogYnVmZmVyIHNpemUgdG8gY29weSBm aWxlICovCisrI2RlZmluZSBBTFBIQUJFVF9MRU4gICAgMjU2ICAgICAgICAgLyogZm9yIGhleFNl YXJjaEJNICovCisrI2RlZmluZSBCVUZfTCAgICAgICAgICAgODE5MiAgICAgICAgLyogZm9yIGhl eFNlYXJjaEJNICovCisgCisgI2RlZmluZSBBbHBoYWJldFNpemUgKFVDSEFSX01BWCArMSkJCS8q IGZvciBwb3J0YWJpbGl0eSAgICAgICAgICAgICovCisgCitAQCAtMTI2LDI2ICsxMzUsMjYgQEAg ZXh0ZXJuIGJvb2wgY29sb3JfZW5hYmxlZDsKKyAjZGVmaW5lIG1heChhLGIpICgoYSkgPihiKSA/ IChhKSA6IChiKSkKKyAjZW5kaWYKKyAKKy1GSUxFICpmcElOOwkJICAgICAgICAJCS8qIGdsb2Jh bCBmaWxlIHB0ciAgICAgICAgICAgKi8KKytleHRlcm4gRklMRSAqZnBJTjsJICAgICAgICAJCS8q IGdsb2JhbCBmaWxlIHB0ciAgICAgICAgICAgKi8KKyAKKyAvKiBmdW5jdGlvbiBwcm90b3R5cGVz ICovCisgCisgLyogYWNjZXB0Y2guYyAqLworIGludCB3YWNjZXB0Y2goV0lOUyAqd2luZG93cywg b2ZmX3QgbGVuKTsKKyB2b2lkIHJlc3RvcmVCb3JkZXIoV0lOUyAqd2luKTsKKy1jaGFyICppbnB1 dExpbmUoV0lORE9XICp3aW4sIGludCBsaW5lLCBpbnQgY29sKTsKKytjaGFyICppbnB1dExpbmUo V0lORE9XICp3aW4sIGludCBsaW5lLCBpbnQgY29sLCBib29sIGFsbG93X3NwYWNlKTsKKyAKKyAv KiBmaWxlLmMgKi8KKyB2b2lkIG91dGxpbmUoRklMRSAqZnAsIG9mZl90IGxpbmVudW0pOworIG9m Zl90IG1heExvYyhGSUxFICpmcCk7Cisrdm9pZCBzZXRfc2F2ZWQoYm9vbCBzYXYsIFdJTkRPVyAq d2luKTsKKyB2b2lkIHByaW50X3VzYWdlKCk7Cisgb2ZmX3QgbWF4TGluZXMob2ZmX3QgbGVuKTsK KyBpbnQgb3BlbmZpbGUoV0lOUyAqd2luKTsKKyBpbnQgc2F2ZWZpbGUoV0lOUyAqd2luKTsKKy1v ZmZfdCBoZXhTZWFyY2goRklMRSAqZnAsIGludCBjaFtdLCBvZmZfdCBzdGFydGZwLCBpbnQgbGVu Z3RoKTsKKytvZmZfdCBoZXhTZWFyY2hCTShXSU5ET1cgKncsIEZJTEUgKmZwLCBpbnQgcGF0W10s IG9mZl90IHN0YXJ0ZnAsIGludCBwYXRsZW4pOworIG9mZl90IGdvdG9MaW5lKEZJTEUgKmZwLCBv ZmZfdCBjdXJyTG9jLCBvZmZfdCBnb3RvTG9jLCBvZmZfdCBtYXhsaW5lcywgIFdJTkRPVyAqd2lu ZG93cyk7CisgaW50IGdldExvY1ZhbChvZmZfdCBsb2MpOworLWJvb2wgaW5IZXhMaXN0KG9mZl90 IGxvYyk7CisgCisgLyogZ2V0b3B0LmMgKi8KKyBpbnQgaGdldG9wdChpbnQgYXJnYywgY2hhciAq Y29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKm9wdHN0cmluZyk7CitAQCAtMTYwLDYgKzE2OSw4IEBA IFJFVFNJR1RZUEUgY2F0Y2hTZWdmYXVsdChpbnQgc2lnKTsKKyBoZXhMaXN0ICpkZWxldGVOb2Rl KGhleExpc3QgKmhlYWQsIG9mZl90IGxvYyk7CisgaGV4TGlzdCAqaW5zZXJ0SXRlbShoZXhMaXN0 ICpoZWFkLCBvZmZfdCBsb2MsIGludCB2YWwpOworIGludCBzZWFyY2hMaXN0KGhleExpc3QgKmhl YWQsIG9mZl90IGxvYyk7Cisrb2ZmX3QgY291bnRMaXN0KGhleExpc3QgKmhlYWQsIG9mZl90IGxv Yyk7Cisrdm9pZCB1cGRhdGVCdWYoaGV4TGlzdCAqaGVhZCwgY2hhciAqYnVmLCBvZmZfdCBwb3Mx LCBvZmZfdCBwb3MyKTsKKyBpbnQgd3JpdGVDaGFuZ2VzKCk7CisgaGV4TGlzdCAqZnJlZUxpc3Qo aGV4TGlzdCAqaGVhZCk7CisgCitAQCAtMTgxLDggKzE5Miw3IEBAIHZvaWQgcG9wdXBXaW4oY2hh ciAqbXNnLCBpbnQgdGltZSk7Cisgc2hvcnQgaW50IHF1ZXN0aW9uV2luKGNoYXIgKm1zZyk7Cisg CisgLyogc3RhY2suYyAqLworLXZvaWQgY3JlYXRlU3RhY2soaGV4U3RhY2sgKnN0YWNrKTsKKy12 b2lkIHB1c2hTdGFjayhoZXhTdGFjayAqKnN0YWNrLCBoZXhTdGFjayAqdG1wU3RhY2spOworK3Zv aWQgcHVzaFN0YWNrKGhleFN0YWNrICoqc3RhY2ssIG9mZl90IGNsLCBpbnQgdmFsKTsKKyB2b2lk IHBvcFN0YWNrKGhleFN0YWNrICoqc3RhY2spOworIHZvaWQgc21hc2hEYVN0YWNrKGhleFN0YWNr ICoqc3RhY2spOworIAorZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5pbiBiL21hbi9NYWtlZmls ZS5pbgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCBkNjhlZDU3Li4wMDAwMDAwCist LS0gYS9tYW4vTWFrZWZpbGUuaW4KKysrKyAvZGV2L251bGwKK0BAIC0xLDQ4NiArMCwwIEBACist IyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xNSBmcm9tIE1ha2VmaWxlLmFt LgorLSMgQGNvbmZpZ3VyZV9pbnB1dEAKKy0KKy0jIENvcHlyaWdodCAoQykgMTk5NC0yMDE0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSMgVGhpcyBNYWtlZmlsZS5pbiBpcyBm cmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCistIyBnaXZlcyB1bmxp bWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorLSMgd2l0aCBv ciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2Vy dmVkLgorLQorLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBl eHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dAorLSMgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorLSMgUEFSVElDVUxBUiBQ VVJQT1NFLgorLQorLUBTRVRfTUFLRUAKKy1WUEFUSCA9IEBzcmNkaXJACistYW1fX2lzX2dudV9t YWtlID0geyBcCistICBpZiB0ZXN0IC16ICckKE1BS0VMRVZFTCknOyB0aGVuIFwKKy0gICAgZmFs c2U7IFwKKy0gIGVsaWYgdGVzdCAtbiAnJChNQUtFX0hPU1QpJzsgdGhlbiBcCistICAgIHRydWU7 IFwKKy0gIGVsaWYgdGVzdCAtbiAnJChNQUtFX1ZFUlNJT04pJyAmJiB0ZXN0IC1uICckKENVUkRJ UiknOyB0aGVuIFwKKy0gICAgdHJ1ZTsgXAorLSAgZWxzZSBcCistICAgIGZhbHNlOyBcCistICBm aTsgXAorLX0KKy1hbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uID0gXAorLSAgY2FzZSAkJHt0 YXJnZXRfb3B0aW9uLX0gaW4gXAorLSAgICAgID8pIDs7IFwKKy0gICAgICAqKSBlY2hvICJhbV9f bWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uOiBpbnRlcm5hbCBlcnJvcjogaW52YWxpZCIgXAorLSAg ICAgICAgICAgICAgInRhcmdldCBvcHRpb24gJyQke3RhcmdldF9vcHRpb24tfScgc3BlY2lmaWVk IiA+JjI7IFwKKy0gICAgICAgICBleGl0IDE7OyBcCistICBlc2FjOyBcCistICBoYXNfb3B0PW5v OyBcCistICBzYW5lX21ha2VmbGFncz0kJE1BS0VGTEFHUzsgXAorLSAgaWYgJChhbV9faXNfZ251 X21ha2UpOyB0aGVuIFwKKy0gICAgc2FuZV9tYWtlZmxhZ3M9JCRNRkxBR1M7IFwKKy0gIGVsc2Ug XAorLSAgICBjYXNlICQkTUFLRUZMQUdTIGluIFwKKy0gICAgICAqXFxbXCBcCV0qKSBcCistICAg ICAgICBicz1cXDsgXAorLSAgICAgICAgc2FuZV9tYWtlZmxhZ3M9YHByaW50ZiAnJXNcbicgIiQk TUFLRUZMQUdTIiBcCistICAgICAgICAgIHwgc2VkICJzLyQkYnMkJGJzWyQkYnMgJCRicwldKi8v ZyJgOzsgXAorLSAgICBlc2FjOyBcCistICBmaTsgXAorLSAgc2tpcF9uZXh0PW5vOyBcCistICBz dHJpcF90cmFpbG9wdCAoKSBcCistICB7IFwKKy0gICAgZmxnPWBwcmludGYgJyVzXG4nICIkJGZs ZyIgfCBzZWQgInMvJCQxLiokJC8vImA7IFwKKy0gIH07IFwKKy0gIGZvciBmbGcgaW4gJCRzYW5l X21ha2VmbGFnczsgZG8gXAorLSAgICB0ZXN0ICQkc2tpcF9uZXh0ID0geWVzICYmIHsgc2tpcF9u ZXh0PW5vOyBjb250aW51ZTsgfTsgXAorLSAgICBjYXNlICQkZmxnIGluIFwKKy0gICAgICAqPSp8 LS0qKSBjb250aW51ZTs7IFwKKy0gICAgICAgIC0qSSkgc3RyaXBfdHJhaWxvcHQgJ0knOyBza2lw X25leHQ9eWVzOzsgXAorLSAgICAgIC0qST8qKSBzdHJpcF90cmFpbG9wdCAnSSc7OyBcCistICAg ICAgICAtKk8pIHN0cmlwX3RyYWlsb3B0ICdPJzsgc2tpcF9uZXh0PXllczs7IFwKKy0gICAgICAt Kk8/Kikgc3RyaXBfdHJhaWxvcHQgJ08nOzsgXAorLSAgICAgICAgLSpsKSBzdHJpcF90cmFpbG9w dCAnbCc7IHNraXBfbmV4dD15ZXM7OyBcCistICAgICAgLSpsPyopIHN0cmlwX3RyYWlsb3B0ICds Jzs7IFwKKy0gICAgICAtW2RFRG1dKSBza2lwX25leHQ9eWVzOzsgXAorLSAgICAgIC1bSlRdKSBz a2lwX25leHQ9eWVzOzsgXAorLSAgICBlc2FjOyBcCistICAgIGNhc2UgJCRmbGcgaW4gXAorLSAg ICAgICokJHRhcmdldF9vcHRpb24qKSBoYXNfb3B0PXllczsgYnJlYWs7OyBcCistICAgIGVzYWM7 IFwKKy0gIGRvbmU7IFwKKy0gIHRlc3QgJCRoYXNfb3B0ID0geWVzCistYW1fX21ha2VfZHJ5cnVu ID0gKHRhcmdldF9vcHRpb249bjsgJChhbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uKSkKKy1h bV9fbWFrZV9rZWVwZ29pbmcgPSAodGFyZ2V0X29wdGlvbj1rOyAkKGFtX19tYWtlX3J1bm5pbmdf d2l0aF9vcHRpb24pKQorLXBrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorLXBrZ2lu Y2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL0BQQUNLQUdFQAorLXBrZ2xpYmRpciA9ICQobGliZGly KS9AUEFDS0FHRUAKKy1wa2dsaWJleGVjZGlyID0gJChsaWJleGVjZGlyKS9AUEFDS0FHRUAKKy1h bV9fY2QgPSBDRFBBVEg9IiQke1pTSF9WRVJTSU9OKy59JChQQVRIX1NFUEFSQVRPUikiICYmIGNk CistaW5zdGFsbF9zaF9EQVRBID0gJChpbnN0YWxsX3NoKSAtYyAtbSA2NDQKKy1pbnN0YWxsX3No X1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jCistaW5zdGFsbF9zaF9TQ1JJUFQgPSAkKGluc3Rh bGxfc2gpIC1jCistSU5TVEFMTF9IRUFERVIgPSAkKElOU1RBTExfREFUQSkKKy10cmFuc2Zvcm0g PSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpCistTk9STUFMX0lOU1RBTEwgPSA6CistUFJFX0lO U1RBTEwgPSA6CistUE9TVF9JTlNUQUxMID0gOgorLU5PUk1BTF9VTklOU1RBTEwgPSA6CistUFJF X1VOSU5TVEFMTCA9IDoKKy1QT1NUX1VOSU5TVEFMTCA9IDoKKy1idWlsZF90cmlwbGV0ID0gQGJ1 aWxkQAorLWhvc3RfdHJpcGxldCA9IEBob3N0QAorLXN1YmRpciA9IG1hbgorLUFDTE9DQUxfTTQg PSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKKy1hbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bf c3JjZGlyKS9jb25maWd1cmUuYWMKKy1hbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2Fs X200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAorLQkkKEFDTE9DQUxfTTQpCist RElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCist bWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycworLUNP TkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKKy1DT05GSUdfQ0xFQU5fRklM RVMgPQorLUNPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CistQU1fVl9QID0gJChhbV9fdl9QX0BB TV9WQCkKKy1hbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKKy1hbV9fdl9QXzAg PSBmYWxzZQorLWFtX192X1BfMSA9IDoKKy1BTV9WX0dFTiA9ICQoYW1fX3ZfR0VOX0BBTV9WQCkK Ky1hbV9fdl9HRU5fID0gJChhbV9fdl9HRU5fQEFNX0RFRkFVTFRfVkApCistYW1fX3ZfR0VOXzAg PSBAZWNobyAiICBHRU4gICAgICIgJEA7CistYW1fX3ZfR0VOXzEgPSAKKy1BTV9WX2F0ID0gJChh bV9fdl9hdF9AQU1fVkApCistYW1fX3ZfYXRfID0gJChhbV9fdl9hdF9AQU1fREVGQVVMVF9WQCkK Ky1hbV9fdl9hdF8wID0gQAorLWFtX192X2F0XzEgPSAKKy1TT1VSQ0VTID0KKy1ESVNUX1NPVVJD RVMgPQorLWFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAorLSAgY2FzZSAkJEFNX1VQREFURV9J TkZPX0RJUiBpbiBcCistICAgIG58bm98Tk8pIGZhbHNlOzsgXAorLSAgICAqKSAoaW5zdGFsbC1p bmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOzsgXAorLSAgZXNhYworLWFtX192cGF0aF9h ZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58Zydg OworLWFtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCistICAgICQoc3JjZGlyKS8qKSBmPWBl Y2hvICIkJHAiIHwgc2VkICJzfF4kJHNyY2RpcnN0cmlwL3x8ImA7OyBcCistICAgICopIGY9JCRw OzsgXAorLSAgZXNhYzsKKy1hbV9fc3RyaXBfZGlyID0gZj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8 Xi4qL3x8J2A7CistYW1fX2luc3RhbGxfbWF4ID0gNDAKKy1hbV9fbm9iYXNlX3N0cmlwX3NldHVw ID0gXAorLSAgc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxc KnxdL1xcXFwmL2cnYAorLWFtX19ub2Jhc2Vfc3RyaXAgPSBcCistICBmb3IgcCBpbiAkJGxpc3Q7 IGRvIGVjaG8gIiQkcCI7IGRvbmUgfCBzZWQgLWUgInN8JCRzcmNkaXJzdHJpcC98fCIKKy1hbV9f bm9iYXNlX2xpc3QgPSAkKGFtX19ub2Jhc2Vfc3RyaXBfc2V0dXApOyBcCistICBmb3IgcCBpbiAk JGxpc3Q7IGRvIGVjaG8gIiQkcCAkJHAiOyBkb25lIHwgXAorLSAgc2VkICJzfCAkJHNyY2RpcnN0 cmlwL3wgfDsiJyAvIC4qXC8vIXMvIC4qLyAuLzsgcyxcKCAuKlwpL1teL10qJCQsXDEsJyB8IFwK Ky0gICQoQVdLKSAnQkVHSU4geyBmaWxlc1siLiJdID0gIiIgfSB7IGZpbGVzWyQkMl0gPSBmaWxl c1skJDJdICIgIiAkJDE7IFwKKy0gICAgaWYgKCsrblskJDJdID09ICQoYW1fX2luc3RhbGxfbWF4 KSkgXAorLSAgICAgIHsgcHJpbnQgJCQyLCBmaWxlc1skJDJdOyBuWyQkMl0gPSAwOyBmaWxlc1sk JDJdID0gIiIgfSB9IFwKKy0gICAgRU5EIHsgZm9yIChkaXIgaW4gZmlsZXMpIHByaW50IGRpciwg ZmlsZXNbZGlyXSB9JworLWFtX19iYXNlX2xpc3QgPSBcCistICBzZWQgJyQkIU47JCQhTjskJCFO OyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAorLSAgc2VkICckJCFOOyQkIU47JCQh TjskJCFOO3MvXG4vIC9nJworLWFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKKy0g IHRlc3QgLXogIiQkZmlsZXMiIFwKKy0gICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0 ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCistICAgIHx8IHsgZWNobyAi ICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKy0gICAgICAgICAkKGFtX19j ZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCistICB9CistbWFuMWRpciA9ICQobWFu ZGlyKS9tYW4xCistYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKG1hbjFkaXIpIgorLU5S T0ZGID0gbnJvZmYKKy1NQU5TID0gJChtYW5fTUFOUykKKy1hbV9fdGFnZ2VkX2ZpbGVzID0gJChI RUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQorLWFtX19ESVNUX0NPTU1P TiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMKKy1E SVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChF WFRSQV9ESVNUKQorLUFDTE9DQUwgPSBAQUNMT0NBTEAKKy1BTVRBUiA9IEBBTVRBUkAKKy1BTV9E RUZBVUxUX1ZFUkJPU0lUWSA9IEBBTV9ERUZBVUxUX1ZFUkJPU0lUWUAKKy1BVVRPQ09ORiA9IEBB VVRPQ09ORkAKKy1BVVRPSEVBREVSID0gQEFVVE9IRUFERVJACistQVVUT01BS0UgPSBAQVVUT01B S0VACistQVdLID0gQEFXS0AKKy1DQyA9IEBDQ0AKKy1DQ0RFUE1PREUgPSBAQ0NERVBNT0RFQAor LUNGTEFHUyA9IEBDRkxBR1NACistQ1BQID0gQENQUEAKKy1DUFBGTEFHUyA9IEBDUFBGTEFHU0AK Ky1DWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAorLURFRlMgPSBAREVGU0AKKy1ERVBESVIgPSBAREVQ RElSQAorLUVDSE9fQyA9IEBFQ0hPX0NACistRUNIT19OID0gQEVDSE9fTkAKKy1FQ0hPX1QgPSBA RUNIT19UQAorLUVHUkVQID0gQEVHUkVQQAorLUVYRUVYVCA9IEBFWEVFWFRACistR1JFUCA9IEBH UkVQQAorLUlOU1RBTEwgPSBASU5TVEFMTEAKKy1JTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRB QAorLUlOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ACistSU5TVEFMTF9TQ1JJUFQg PSBASU5TVEFMTF9TQ1JJUFRACistSU5TVEFMTF9TVFJJUF9QUk9HUkFNID0gQElOU1RBTExfU1RS SVBfUFJPR1JBTUAKKy1MREZMQUdTID0gQExERkxBR1NACistTElCT0JKUyA9IEBMSUJPQkpTQAor LUxJQlMgPSBATElCU0AKKy1MVExJQk9CSlMgPSBATFRMSUJPQkpTQAorLU1BS0VJTkZPID0gQE1B S0VJTkZPQAorLU1LRElSX1AgPSBATUtESVJfUEAKKy1PQkpFWFQgPSBAT0JKRVhUQAorLVBBQ0tB R0UgPSBAUEFDS0FHRUAKKy1QQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAK Ky1QQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAorLVBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tB R0VfU1RSSU5HQAorLVBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACistUEFDS0FH RV9VUkwgPSBAUEFDS0FHRV9VUkxACistUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lP TkAKKy1QQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKKy1TRVRfTUFLRSA9IEBTRVRf TUFLRUAKKy1TSEVMTCA9IEBTSEVMTEAKKy1TVFJJUCA9IEBTVFJJUEAKKy1WRVJTSU9OID0gQFZF UlNJT05ACistYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKKy1hYnNfc3JjZGlyID0gQGFi c19zcmNkaXJACistYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAorLWFic190 b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorLWFjX2N0X0NDID0gQGFjX2N0X0NDQAorLWFt X19pbmNsdWRlID0gQGFtX19pbmNsdWRlQAorLWFtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGlu Z19kb3RACistYW1fX3F1b3RlID0gQGFtX19xdW90ZUAKKy1hbV9fdGFyID0gQGFtX190YXJACist YW1fX3VudGFyID0gQGFtX191bnRhckAKKy1iaW5kaXIgPSBAYmluZGlyQAorLWJ1aWxkID0gQGJ1 aWxkQAorLWJ1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQAorLWJ1aWxkX2NwdSA9IEBidWlsZF9j cHVACistYnVpbGRfb3MgPSBAYnVpbGRfb3NACistYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRv ckAKKy1idWlsZGRpciA9IEBidWlsZGRpckAKKy1kYXRhZGlyID0gQGRhdGFkaXJACistZGF0YXJv b3RkaXIgPSBAZGF0YXJvb3RkaXJACistZG9jZGlyID0gQGRvY2RpckAKKy1kdmlkaXIgPSBAZHZp ZGlyQAorLWV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAorLWhvc3QgPSBAaG9zdEAKKy1ob3N0 X2FsaWFzID0gQGhvc3RfYWxpYXNACistaG9zdF9jcHUgPSBAaG9zdF9jcHVACistaG9zdF9vcyA9 IEBob3N0X29zQAorLWhvc3RfdmVuZG9yID0gQGhvc3RfdmVuZG9yQAorLWh0bWxkaXIgPSBAaHRt bGRpckAKKy1pbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACistaW5mb2RpciA9IEBpbmZvZGlyQAor LWluc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEAKKy1saWJkaXIgPSBAbGliZGlyQAorLWxpYmV4ZWNk aXIgPSBAbGliZXhlY2RpckAKKy1sb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAorLWxvY2Fsc3RhdGVk aXIgPSBAbG9jYWxzdGF0ZWRpckAKKy1tYW5kaXIgPSBAbWFuZGlyQAorLW1rZGlyX3AgPSBAbWtk aXJfcEAKKy1vbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACistcGRmZGlyID0gQHBkZmRp ckAKKy1wcmVmaXggPSBAcHJlZml4QAorLXByb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3Jh bV90cmFuc2Zvcm1fbmFtZUAKKy1wc2RpciA9IEBwc2RpckAKKy1zYmluZGlyID0gQHNiaW5kaXJA Cistc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACistc3JjZGlyID0gQHNyY2RpckAK Ky1zeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACistdGFyZ2V0X2FsaWFzID0gQHRhcmdldF9hbGlh c0AKKy10b3BfYnVpbGRfcHJlZml4ID0gQHRvcF9idWlsZF9wcmVmaXhACistdG9wX2J1aWxkZGly ID0gQHRvcF9idWlsZGRpckAKKy10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACistbWFuX01BTlMg PSBoZXhjdXJzZS4xCistRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCistYWxsOiBhbGwtYW0KKy0K Ky0uU1VGRklYRVM6CistJChzcmNkaXIpL01ha2VmaWxlLmluOiAgJChzcmNkaXIpL01ha2VmaWxl LmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKKy0JQGZvciBkZXAgaW4gJD87IGRvIFwKKy0JICBj YXNlICckKGFtX19jb25maWd1cmVfZGVwcyknIGluIFwKKy0JICAgICokJGRlcCopIFwKKy0JICAg ICAgKCBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJl ZnJlc2ggKSBcCistCSAgICAgICAgJiYgeyBpZiB0ZXN0IC1mICRAOyB0aGVuIGV4aXQgMDsgZWxz ZSBicmVhazsgZmk7IH07IFwKKy0JICAgICAgZXhpdCAxOzsgXAorLQkgIGVzYWM7IFwKKy0JZG9u ZTsgXAorLQllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBtYW4v TWFrZWZpbGUnOyBcCistCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKKy0JICAkKEFVVE9N QUtFKSAtLWdudSBtYW4vTWFrZWZpbGUKKy1NYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmlu ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCistCUBjYXNlICckPycgaW4gXAorLQkgICpj b25maWcuc3RhdHVzKikgXAorLQkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChB TV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoOzsgXAorLQkgICopIFwKKy0JICAgIGVjaG8gJyBjZCAk KHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAk KGFtX19kZXBmaWxlc19tYXliZSknOyBcCistCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChT SEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSk7 OyBcCistCWVzYWM7CistCistJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3Ny Y2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpCistCWNkICQodG9w X2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorLQorLSQo dG9wX3NyY2RpcikvY29uZmlndXJlOiAgJChhbV9fY29uZmlndXJlX2RlcHMpCistCWNkICQodG9w X2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorLSQoQUNM T0NBTF9NNCk6ICAkKGFtX19hY2xvY2FsX200X2RlcHMpCistCWNkICQodG9wX2J1aWxkZGlyKSAm JiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorLSQoYW1fX2FjbG9jYWxfbTRf ZGVwcyk6CistaW5zdGFsbC1tYW4xOiAkKG1hbl9NQU5TKQorLQlAJChOT1JNQUxfSU5TVEFMTCkK Ky0JQGxpc3QxPScnOyBcCistCWxpc3QyPSckKG1hbl9NQU5TKSc7IFwKKy0JdGVzdCAtbiAiJCht YW4xZGlyKSIgXAorLQkgICYmIHRlc3QgLW4gImBlY2hvICQkbGlzdDEkJGxpc3QyYCIgXAorLQkg IHx8IGV4aXQgMDsgXAorLQllY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQobWFuMWRpcikn IjsgXAorLQkkKE1LRElSX1ApICIkKERFU1RESVIpJChtYW4xZGlyKSIgfHwgZXhpdCAxOyBcCist CXsgZm9yIGkgaW4gJCRsaXN0MTsgZG8gZWNobyAiJCRpIjsgZG9uZTsgIFwKKy0JaWYgdGVzdCAt biAiJCRsaXN0MiI7IHRoZW4gXAorLQkgIGZvciBpIGluICQkbGlzdDI7IGRvIGVjaG8gIiQkaSI7 IGRvbmUgXAorLQkgICAgfCBzZWQgLW4gJy9cLjFbYS16XSokJC9wJzsgXAorLQlmaTsgXAorLQl9 IHwgd2hpbGUgcmVhZCBwOyBkbyBcCistCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gZD07IGVsc2Ug ZD0iJChzcmNkaXIpLyI7IGZpOyBcCistCSAgZWNobyAiJCRkJCRwIjsgZWNobyAiJCRwIjsgXAor LQlkb25lIHwgXAorLQlzZWQgLWUgJ247cywuKi8sLDtwO2g7cywuKlwuLCw7cyxeW14xXVswLTlh LXpdKiQkLDEsO3gnIFwKKy0JICAgICAgLWUgJ3MsXC5bMC05YS16XSokJCwsOyQodHJhbnNmb3Jt KTtHO3MsXG4sLiwnIHwgXAorLQlzZWQgJ047TjtzLFxuLCAsZycgfCB7IFwKKy0JbGlzdD07IHdo aWxlIHJlYWQgZmlsZSBiYXNlIGluc3Q7IGRvIFwKKy0JICBpZiB0ZXN0ICIkJGJhc2UiID0gIiQk aW5zdCI7IHRoZW4gbGlzdD0iJCRsaXN0ICQkZmlsZSI7IGVsc2UgXAorLQkgICAgZWNobyAiICQo SU5TVEFMTF9EQVRBKSAnJCRmaWxlJyAnJChERVNURElSKSQobWFuMWRpcikvJCRpbnN0JyI7IFwK Ky0JICAgICQoSU5TVEFMTF9EQVRBKSAiJCRmaWxlIiAiJChERVNURElSKSQobWFuMWRpcikvJCRp bnN0IiB8fCBleGl0ICQkPzsgXAorLQkgIGZpOyBcCistCWRvbmU7IFwKKy0JZm9yIGkgaW4gJCRs aXN0OyBkbyBlY2hvICIkJGkiOyBkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKy0Jd2hpbGUg cmVhZCBmaWxlczsgZG8gXAorLQkgIHRlc3QgLXogIiQkZmlsZXMiIHx8IHsgXAorLQkgICAgZWNo byAiICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICckKERFU1RESVIpJChtYW4xZGlyKSciOyBcCist CSAgICAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAiJChERVNURElSKSQobWFuMWRpcikiIHx8IGV4 aXQgJCQ/OyB9OyBcCistCWRvbmU7IH0KKy0KKy11bmluc3RhbGwtbWFuMToKKy0JQCQoTk9STUFM X1VOSU5TVEFMTCkKKy0JQGxpc3Q9Jyc7IHRlc3QgLW4gIiQobWFuMWRpcikiIHx8IGV4aXQgMDsg XAorLQlmaWxlcz1geyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkaSI7IGRvbmU7IFwKKy0J bDI9JyQobWFuX01BTlMpJzsgZm9yIGkgaW4gJCRsMjsgZG8gZWNobyAiJCRpIjsgZG9uZSB8IFwK Ky0JICBzZWQgLW4gJy9cLjFbYS16XSokJC9wJzsgXAorLQl9IHwgc2VkIC1lICdzLC4qLywsO2g7 cywuKlwuLCw7cyxeW14xXVswLTlhLXpdKiQkLDEsO3gnIFwKKy0JICAgICAgLWUgJ3MsXC5bMC05 YS16XSokJCwsOyQodHJhbnNmb3JtKTtHO3MsXG4sLiwnYDsgXAorLQlkaXI9JyQoREVTVERJUikk KG1hbjFkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQorLXRhZ3MgVEFHUzoK Ky0KKy1jdGFncyBDVEFHUzoKKy0KKy1jc2NvcGUgY3Njb3BlbGlzdDoKKy0KKy0KKy1kaXN0ZGly OiAkKERJU1RGSUxFUykKKy0JQHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdz L1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorLQl0b3BzcmNkaXJzdHJpcD1gZWNobyAiJCh0b3Bf c3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCistCWxpc3Q9JyQoRElT VEZJTEVTKSc7IFwKKy0JICBkaXN0X2ZpbGVzPWBmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIGVjaG8g JCRmaWxlOyBkb25lIHwgXAorLQkgIHNlZCAtZSAic3xeJCRzcmNkaXJzdHJpcC98fDt0IiBcCist CSAgICAgIC1lICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwK Ky0JY2FzZSAkJGRpc3RfZmlsZXMgaW4gXAorLQkgICovKikgJChNS0RJUl9QKSBgZWNobyAiJCRk aXN0X2ZpbGVzIiB8IFwKKy0JCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1te L10qJCQsLCcgfCBcCistCQkJICAgc29ydCAtdWAgOzsgXAorLQllc2FjOyBcCistCWZvciBmaWxl IGluICQkZGlzdF9maWxlczsgZG8gXAorLQkgIGlmIHRlc3QgLWYgJCRmaWxlIHx8IHRlc3QgLWQg JCRmaWxlOyB0aGVuIGQ9LjsgZWxzZSBkPSQoc3JjZGlyKTsgZmk7IFwKKy0JICBpZiB0ZXN0IC1k ICQkZC8kJGZpbGU7IHRoZW4gXAorLQkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAn cywvW14vXSokJCwsJ2A7IFwKKy0JICAgIGlmIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRmaWxlIjsg dGhlbiBcCistCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0g LTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorLQkgICAgZmk7IFwKKy0JICAgIGlmIHRl c3QgLWQgJChzcmNkaXIpLyQkZmlsZSAmJiB0ZXN0ICQkZCAhPSAkKHNyY2Rpcik7IHRoZW4gXAor LQkgICAgICBjcCAtZnBSICQoc3JjZGlyKS8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhp dCAxOyBcCistCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0g LTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorLQkgICAgZmk7IFwKKy0JICAgIGNwIC1m cFIgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKSQkZGlyIiB8fCBleGl0IDE7IFwKKy0JICBlbHNlIFwK Ky0JICAgIHRlc3QgLWYgIiQoZGlzdGRpcikvJCRmaWxlIiBcCistCSAgICB8fCBjcCAtcCAkJGQv JCRmaWxlICIkKGRpc3RkaXIpLyQkZmlsZSIgXAorLQkgICAgfHwgZXhpdCAxOyBcCistCSAgZmk7 IFwKKy0JZG9uZQorLWNoZWNrLWFtOiBhbGwtYW0KKy1jaGVjazogY2hlY2stYW0KKy1hbGwtYW06 IE1ha2VmaWxlICQoTUFOUykKKy1pbnN0YWxsZGlyczoKKy0JZm9yIGRpciBpbiAiJChERVNURElS KSQobWFuMWRpcikiOyBkbyBcCistCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQk ZGlyIjsgXAorLQlkb25lCistaW5zdGFsbDogaW5zdGFsbC1hbQorLWluc3RhbGwtZXhlYzogaW5z dGFsbC1leGVjLWFtCistaW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0KKy11bmluc3RhbGw6 IHVuaW5zdGFsbC1hbQorLQorLWluc3RhbGwtYW06IGFsbC1hbQorLQlAJChNQUtFKSAkKEFNX01B S0VGTEFHUykgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtZGF0YS1hbQorLQorLWluc3RhbGxjaGVj azogaW5zdGFsbGNoZWNrLWFtCistaW5zdGFsbC1zdHJpcDoKKy0JaWYgdGVzdCAteiAnJChTVFJJ UCknOyB0aGVuIFwKKy0JICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09 IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorLQkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIk KElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCistCSAgICAg IGluc3RhbGw7IFwKKy0JZWxzZSBcCistCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFM TF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKy0JICAgIGluc3RhbGxfc2hf UFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMg XAorLQkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3Rh bGw7IFwKKy0JZmkKKy1tb3N0bHljbGVhbi1nZW5lcmljOgorLQorLWNsZWFuLWdlbmVyaWM6Cist CistZGlzdGNsZWFuLWdlbmVyaWM6CistCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9GSUxFUyki IHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQorLQktdGVzdCAuID0gIiQoc3JjZGlyKSIg fHwgdGVzdCAteiAiJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpIiB8fCBybSAtZiAkKENPTkZJ R19DTEVBTl9WUEFUSF9GSUxFUykKKy0KKy1tYWludGFpbmVyLWNsZWFuLWdlbmVyaWM6CistCUBl Y2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZSIKKy0J QGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRv IHJlYnVpbGQuIgorLWNsZWFuOiBjbGVhbi1hbQorLQorLWNsZWFuLWFtOiBjbGVhbi1nZW5lcmlj IG1vc3RseWNsZWFuLWFtCistCistZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KKy0JLXJtIC1mIE1h a2VmaWxlCistZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tZ2VuZXJpYworLQorLWR2 aTogZHZpLWFtCistCistZHZpLWFtOgorLQorLWh0bWw6IGh0bWwtYW0KKy0KKy1odG1sLWFtOgor LQorLWluZm86IGluZm8tYW0KKy0KKy1pbmZvLWFtOgorLQorLWluc3RhbGwtZGF0YS1hbTogaW5z dGFsbC1tYW4KKy0KKy1pbnN0YWxsLWR2aTogaW5zdGFsbC1kdmktYW0KKy0KKy1pbnN0YWxsLWR2 aS1hbToKKy0KKy1pbnN0YWxsLWV4ZWMtYW06CistCistaW5zdGFsbC1odG1sOiBpbnN0YWxsLWh0 bWwtYW0KKy0KKy1pbnN0YWxsLWh0bWwtYW06CistCistaW5zdGFsbC1pbmZvOiBpbnN0YWxsLWlu Zm8tYW0KKy0KKy1pbnN0YWxsLWluZm8tYW06CistCistaW5zdGFsbC1tYW46IGluc3RhbGwtbWFu MQorLQorLWluc3RhbGwtcGRmOiBpbnN0YWxsLXBkZi1hbQorLQorLWluc3RhbGwtcGRmLWFtOgor LQorLWluc3RhbGwtcHM6IGluc3RhbGwtcHMtYW0KKy0KKy1pbnN0YWxsLXBzLWFtOgorLQorLWlu c3RhbGxjaGVjay1hbToKKy0KKy1tYWludGFpbmVyLWNsZWFuOiBtYWludGFpbmVyLWNsZWFuLWFt CistCS1ybSAtZiBNYWtlZmlsZQorLW1haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBt YWludGFpbmVyLWNsZWFuLWdlbmVyaWMKKy0KKy1tb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4tYW0K Ky0KKy1tb3N0bHljbGVhbi1hbTogbW9zdGx5Y2xlYW4tZ2VuZXJpYworLQorLXBkZjogcGRmLWFt CistCistcGRmLWFtOgorLQorLXBzOiBwcy1hbQorLQorLXBzLWFtOgorLQorLXVuaW5zdGFsbC1h bTogdW5pbnN0YWxsLW1hbgorLQorLXVuaW5zdGFsbC1tYW46IHVuaW5zdGFsbC1tYW4xCistCist Lk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAorLQorLS5QSE9OWTogYWxsIGFsbC1hbSBj aGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIGNzY29wZWxpc3QtYW0gXAorLQljdGFn cy1hbSBkaXN0Y2xlYW4gZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwg XAorLQlodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRh IFwKKy0JaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIGluc3RhbGwt ZXhlYyBcCistCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGlu c3RhbGwtaW5mbyBcCistCWluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLW1hbjEg aW5zdGFsbC1wZGYgXAorLQlpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0g aW5zdGFsbC1zdHJpcCBcCistCWluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRp cnMgbWFpbnRhaW5lci1jbGVhbiBcCistCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHlj bGVhbiBtb3N0bHljbGVhbi1nZW5lcmljIHBkZiBcCistCXBkZi1hbSBwcyBwcy1hbSB0YWdzLWFt IHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLW1hbiBcCistCXVuaW5zdGFsbC1tYW4x CistCistLlBSRUNJT1VTOiBNYWtlZmlsZQorLQorLQorLSMgVGVsbCB2ZXJzaW9ucyBbMy41OSwz LjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCistIyBPdGhlcndp c2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCist Lk5PRVhQT1JUOgorZGlmZiAtLWdpdCBhL21hbi9oZXhjdXJzZS4xIGIvbWFuL2hleGN1cnNlLjEK K2luZGV4IGMyYzlkZWYuLjYxY2MyNWIgMTAwNjQ0CistLS0gYS9tYW4vaGV4Y3Vyc2UuMQorKysr IGIvbWFuL2hleGN1cnNlLjEKK0BAIC0xLDIwICsxLDI5IEBACisgLlwiIHRvIHByb2Nlc3MgdXNl IHRoZSBmb2xsb3dpbmcgY29tbWFuZAorIC5cIiBncm9mZiAtbWFuIC1UYXNjaWkgbWFucGFnZW5h bWUuMQorLS5USCBIRVhDVVJTRSAxICIyMiBEZWNlbWJlciAyMDAzIgorKy5USCBIRVhDVVJTRSAx ICIxNSBBcHJpbCAyMDIyIgorIC5TSCBOQU1FCisgaGV4Y3Vyc2UgXC0gYW4gbmN1cnNlcy1iYXNl ZCBoZXggZWRpdG9yCisgLlNIIFNZTk9QU0lTCisgLkIgaGV4Y3Vyc2UKKyBbCistLkIgXC0/ICIg fCAiIFwtaGVscAorKy5CIFwtPyB8IFwtaGVscAorIF0gWworIC5CIFwtYQorIF0gWworLS5CIFwt cgorLS5JIHJudW0KKysuQiBcLWMKKysuSSBjb2xvcmxldmVsCisrXSBbCisrLkIgXC1lCisrXSBb CisrLkIgXC1mCisgXSBbCisgLkIgXC1vCisgLkkgb3V0cHV0ZmlsZQorK10gWworKy5CIFwtcgor Ky5JIHJudW0KKytdIFsKKysuQiBcLXQKKyBdIFsgWworIC5CUiBcLWkKKyBdCitAQCAtMzEsNiAr NDAsMzAgQEAgUHJpbnRzIG91dCB0aGUgY29tbWFuZCB1c2FnZSBpbmZvCisgLkIgLWEKKyBTcGVj aWZpZXMgdGhlIGFkZHJlc3NlcyB0byBiZSBvdXRwdXQgaW4gZGVjaW1hbCBmb3JtYXQgaW5pdGlh bGx5LgorIC5UUCAxNQorKy5CSSAtYyBcIGNvbG9ybGV2ZWwKKytTcGVjaWZpZXMgdGhlIGNvbG9y IGxldmVsLgorKy5SUyAxOAorKzA6IG5vIGNvbG9ycworKy5SRQorKy5SUyAxOAorKzE6IG9ubHkg Y29sb3IgZm9yIGFkZHJlc3NlcworKy5SRQorKy5SUyAxOAorKzI6IDEgKyBjb2xvciBmb3IgMDAg KGRlZmF1bHQgaWYgdGVybWluYWwgc3VwcG9ydHMgY29sb3IpCisrLlJFCisrLlJTIDE4CisrMzog bXVsdGljb2xvciBieSBGcmFua1NhbnNDCisrLlJFCisrLlRQIDE1CisrLkIgLWUKKytTcGVjaWZp ZXMgdGhlIGNoYXJhY3RlcnMgdG8gYmUgb3V0cHV0IGluIEVCQ0RJQyBmb3JtYXQgcmF0aGVyIHRo YW4gQVNDSUkuCisrLlRQIDE1CisrLkIgLWYKKytTcGVjaWZpZXMgdGhhdCBmdW5jdGlvbiBrZXkg bnVtYmVycyB3aWxsIGJlIHNob3duIGFsb25nIG5hbWVzIGluIHRoZSBsYWJlbHMuCisrLlRQIDE1 CisrLkJJIFwtbyBcIG91dHB1dGZpbGUKKytTcGVjaWZpZXMgdGhlIG91dHB1dCBmaWxlIHRvIGJl IHdyaXR0ZW4gdG8gYnkgZGVmYXVsdC4KKysuVFAgMTUKKyAuQkkgXC1yIFwgcm51bQorIFNwZWNp ZmllcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUgdGhhdCB0aGUgaGV4ZWRpdG9y IHNob3VsZCBvdXRwdXQuICBJZgorIC5JIHJudW0KK0BAIC00MCwxMCArNzMsMTAgQEAgd2lsbCBm aWxsIHRoZSB0ZXJtaW5hbCB3aWR0aCwganVzdCBhcyBpZiB0aGUKKyAuQiBcLXIKKyB3YXMgbm90 IHNwZWNpZmllZC4KKyAuVFAgMTUKKy0uQkkgXC1vIFwgb3V0cHV0ZmlsZQorLVNwZWNpZmllcyB0 aGUgb3V0cHV0IGZpbGUgdG8gYmUgd3JpdHRlbiB0byBieSBkZWZhdWx0LgorKy5CIC10CisrU3Bl Y2lmaWVzIHRoZSBjb2xvcnMgc2V0IGJ5IHRoZSB0ZXJtaW5hbCBzaG91bGQgYmUga2VwdCAoYWxs IGJhY2tncm91bmQgYW5kIG5vcm1hbCBmb3JlZ3JvdW5kKS4gU2V0IHRoaXMgaWYgeW91IHNlZSB1 Z2x5IGNvbG9ycyBvciBkb24ndCBzZWUgc29tZSBjb2xvcnMgYXQgYWxsLgorIC5UUCAxNQorLS5C SSBbIFwtaSBdIFwgaW5wdXRmaWxlCisrLkJJIFtcIFwtaVwgXSBcIGlucHV0ZmlsZQorIFNwZWNp ZmllcyB0aGUgaW5wdXQgZmlsZSB0byBiZSByZWFkIGluLgorIC5CIFwtaQorIGlzIG5vdCBuZWVk ZWQgaWYKK0BAIC02NCw3ICs5Nyw3IEBAIE9wZW5zIGEgZmlsZS4KKyBHb3RvIGEgY2VydGFpbiBs b2NhdGlvbiBpbiB0aGUgY3VycmVudCBmaWxlLiAgRGVwZW5kaW5nIG9uIHdoaWNoIHdheSB0aGUg YWRkcmVzc2VzIGFyZSBiZWluZyB2aWV3ZWQgYXQgdGhlIG1vbWVudCwgdGhlIHNlYXJjaCB3aWxs IGJlaGF2ZSBkaWZmZXJlbnRseS4gIElmIHRoZSBhZGRyZXNzZXMgYXJlIGN1cnJlbnRseSBpbiBo ZXggZm9ybWF0LCB0aGUgc2VhcmNoIHdpbGwgc2VhcmNoIGFzIGlmIHRoZSBpbnB1dCB3YXMgZ2l2 ZW4gaW4gaGV4YWRlY2ltYWwgZm9ybWF0LiAgSWYgdGhlIGFkZHJlc3NlcyBhcmUgaW4gZGVjaW1h bCBmb3JtYXQsIHRoZSBmdW5jdGlvbiB3aWxsIHNlYXJjaCBmb3IgdGhlIGFkZHJlc3MgaW4gZGVj aW1hbC4KKyAuVFAgMTUKKyAuQiBGNSB8IGN0cmwrZgorLVNlYXJjaCBmb3IgYSBjZXJ0YWluIHN0 cmluZyBpbiB0aGUgY3VycmVudCBmaWxlLiAgRGVwZW5kaW5nIG9uIHdoaWNoIHdpbmRvdyB0aGUg dXNlciBpcyBjdXJyZW50bHkgZWRpdGluZyBpbiwgdGhpcyBzZWFyY2ggd2lsbCBiZWhhdmUgZGlm ZmVyZW50bHkuICBJZiBlZGl0aW5nIGluIHRoZSBoZXggd2luZG93LCB0aGUgaW5wdXQgc2hvdWxk IG9ubHkgYmUgaW4gaGV4YWRlY2ltYWwsIGFuZCBpdCB3aWxsIHNlYXJjaCBmb3IgdGhlIGhleGFk ZWNpbWFsICJzdHJpbmcuIiAgSWYgdGhlIGN1cnJlbnQgZWRpdGluZyB3aW5kb3cgaXMgdGhlIEFT Q0lJIHdpbmRvdywgdGhlIGlucHV0IHNob3VsZCBiZSBBU0NJSSBjaGFyYWN0ZXJzLCBhbmQgdGhl IHNlYXJjaCB3aWxsIGZpbmQgdGhhdCBBU0NJSSBzdHJpbmcgaW4gdGhlIGZpbGUuCisrU2VhcmNo IGZvciBhIGNlcnRhaW4gc3RyaW5nIGluIHRoZSBjdXJyZW50IGZpbGUgc3RhcnRpbmcgYXQgdGhl IG5leHQgcG9zaXRpb24gdG8gdGhlIGN1cnNvci4gIERlcGVuZGluZyBvbiB3aGljaCB3aW5kb3cg dGhlIHVzZXIgaXMgY3VycmVudGx5IGVkaXRpbmcgaW4sIHRoaXMgc2VhcmNoIHdpbGwgYmVoYXZl IGRpZmZlcmVudGx5LiAgSWYgZWRpdGluZyBpbiB0aGUgaGV4IHdpbmRvdywgdGhlIGlucHV0IHNo b3VsZCBvbmx5IGJlIGluIGhleGFkZWNpbWFsLCBhbmQgaXQgd2lsbCBzZWFyY2ggZm9yIHRoZSBo ZXhhZGVjaW1hbCAic3RyaW5nIi4gIElmIHRoZSBjdXJyZW50IGVkaXRpbmcgd2luZG93IGlzIHRo ZSBBU0NJSSB3aW5kb3csIHRoZSBpbnB1dCBzaG91bGQgYmUgQVNDSUkgY2hhcmFjdGVycywgYW5k IHRoZSBzZWFyY2ggd2lsbCBmaW5kIHRoYXQgQVNDSUkgc3RyaW5nIGluIHRoZSBmaWxlLiAgVGhl IHNlYXJjaCBzdHJpbmcgaXMgbGltaXRlZCB0byA4MCBieXRlcy4KKyAuVFAgMTUKKyAuQiBGNiB8 IGN0cmwrYQorIFN3aXRjaCBiZXR3ZWVuIGhleGFkZWNpbWFsIGFkZHJlc3MgdmFsdWVzIGFuZCBk ZWNpbWFsIGFkZHJlc3MgdmFsdWVzLgorQEAgLTEwNywxMSArMTQwLDE0IEBAIEphbWVzIFN0ZXBo ZW5zb24gLSBodHRwczovL3BsdXMuZ29vZ2xlLmNvbS91LzAvMTAzMTc0NDU5MjU4MTc1MDcwNzg0 L2Fib3V0CisgLlJTCisgTG9ubnkgR29tZXMgLSBoZXhjdXJzZSBkb3QgbG9ubnlnb21lcyBkb3Qg Y29tCisgLlJFCisrLlJTCisrcHJzbyBhdCBHaXRodWIgLSBodHRwczovL2dpdGh1Yi5jb20vcHJz bworKy5SRQorIC5MUAorIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhpcyBzb2Z0d2FyZSBpcyBh bHdheXMgYXZhaWxhYmUgYXQKKyAuTFAKKyAuUlMKKy0uSSBodHRwczovL2dpdGh1Yi5jb20vTG9u bnlHb21lcy9oZXhjdXJzZQorKy5JIGh0dHBzOi8vZ2l0aHViLmNvbS9wcnNvL2hleGN1cnNlCisg LlJFCisgLlNIIEJVR1MKKyBPbiBzb21lIHRlcm1pbmFscyB0aGUgZnVuY3Rpb24ga2V5cyB3aWxs IG5vdCB3b3JrLiAgCitAQCAtMTIyLDEwICsxNTgsMTAgQEAgVGhpcyB3aWxsIGJlIGNvcnJlY3Rl ZCBpbiB0aGUgbmV4dCByZWxlYXNlLiAgVGhlcmUgaXMgYWxzbyBhbiBpc3N1ZSB3aGVyZSB0aGUK KyBsYWJlbHMgb24gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuIGRvIG5vdCByZXNpemUgY29ycmVj dGx5LiAgQSBmaXggZm9yIHRoZQorIGxhdHRlciBpcyBpbiB0aGUgd29ya3MuCisgLkxQCistVG8g cmVwb3J0IGEgYnVnIG9yIHByb2JsZW0sIHBsZWFzZSBlLW1haWw6CisrVG8gcmVwb3J0IGEgYnVn IG9yIHByb2JsZW0sIHBsZWFzZSBvcGVuIGFuIGlzc3VlOgorIC5MUAorIC5SUworLWRldmVsQGpl d2Zpc2gubmV0CisrLkkgaHR0cHM6Ly9naXRodWIuY29tL3Byc28vaGV4Y3Vyc2UvaXNzdWVzCisg LlJFCisgLlNIIFRPRE8KKy1XaGVuIHdlIGdldCB0aGUgdGltZSwgd2Ugd291bGQgbGlrZSB0byBp bXBsZW1lbnQgdGhlIGFiaWxpdHkgdG8gaW5zZXJ0IGFuZCBkZWxldGUgZGF0YSBmcm9tIHRoZSBm aWxlLiAgUGxlYXNlIGUtbWFpbCB1cyB3aXRoIGFueSBhZGRpdGlvbmFsIHN1Z2dlc3Rpb25zLgor K1doZW4gd2UgZ2V0IHRoZSB0aW1lLCB3ZSB3b3VsZCBsaWtlIHRvIGltcGxlbWVudCB0aGUgYWJp bGl0eSB0byBpbnNlcnQgYW5kIGRlbGV0ZSBkYXRhIGZyb20gdGhlIGZpbGUuICBQbGVhc2Ugc2Vu ZCBhbnkgYWRkaXRpb25hbCBzdWdnZXN0aW9ucy4KK2RpZmYgLS1naXQgYS9zY3JlZW5zaG90cy9o ZXhjdXJzZS1zY3JlZW5zaG90LnBuZyBiL3NjcmVlbnNob3RzL2hleGN1cnNlLXNjcmVlbnNob3Qu cG5nCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNmQzZTIyOQorQmluYXJ5 IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9zY3JlZW5zaG90cy9oZXhjdXJzZS1zY3JlZW5zaG90LnBu ZyBkaWZmZXIKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuaW4gYi9zcmMvTWFrZWZpbGUuaW4K K2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYzk2MzVmMC4uMDAwMDAwMAorLS0tIGEv c3JjL01ha2VmaWxlLmluCisrKysgL2Rldi9udWxsCitAQCAtMSw1ODEgKzAsMCBAQAorLSMgTWFr ZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTUgZnJvbSBNYWtlZmlsZS5hbS4KKy0j IEBjb25maWd1cmVfaW5wdXRACistCistIyBDb3B5cmlnaHQgKEMpIDE5OTQtMjAxNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0jIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBz b2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMgZ2l2ZXMgdW5saW1pdGVk IHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKy0jIHdpdGggb3Igd2l0 aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4K Ky0KKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50 IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKy0jIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKKy0jIFBBUlRJQ1VMQVIgUFVSUE9T RS4KKy0KKy1AU0VUX01BS0VACistCistVlBBVEggPSBAc3JjZGlyQAorLWFtX19pc19nbnVfbWFr ZSA9IHsgXAorLSAgaWYgdGVzdCAteiAnJChNQUtFTEVWRUwpJzsgdGhlbiBcCistICAgIGZhbHNl OyBcCistICBlbGlmIHRlc3QgLW4gJyQoTUFLRV9IT1NUKSc7IHRoZW4gXAorLSAgICB0cnVlOyBc CistICBlbGlmIHRlc3QgLW4gJyQoTUFLRV9WRVJTSU9OKScgJiYgdGVzdCAtbiAnJChDVVJESVIp JzsgdGhlbiBcCistICAgIHRydWU7IFwKKy0gIGVsc2UgXAorLSAgICBmYWxzZTsgXAorLSAgZmk7 IFwKKy19CistYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbiA9IFwKKy0gIGNhc2UgJCR7dGFy Z2V0X29wdGlvbi19IGluIFwKKy0gICAgICA/KSA7OyBcCistICAgICAgKikgZWNobyAiYW1fX21h a2VfcnVubmluZ193aXRoX29wdGlvbjogaW50ZXJuYWwgZXJyb3I6IGludmFsaWQiIFwKKy0gICAg ICAgICAgICAgICJ0YXJnZXQgb3B0aW9uICckJHt0YXJnZXRfb3B0aW9uLX0nIHNwZWNpZmllZCIg PiYyOyBcCistICAgICAgICAgZXhpdCAxOzsgXAorLSAgZXNhYzsgXAorLSAgaGFzX29wdD1ubzsg XAorLSAgc2FuZV9tYWtlZmxhZ3M9JCRNQUtFRkxBR1M7IFwKKy0gIGlmICQoYW1fX2lzX2dudV9t YWtlKTsgdGhlbiBcCistICAgIHNhbmVfbWFrZWZsYWdzPSQkTUZMQUdTOyBcCistICBlbHNlIFwK Ky0gICAgY2FzZSAkJE1BS0VGTEFHUyBpbiBcCistICAgICAgKlxcW1wgXAldKikgXAorLSAgICAg ICAgYnM9XFw7IFwKKy0gICAgICAgIHNhbmVfbWFrZWZsYWdzPWBwcmludGYgJyVzXG4nICIkJE1B S0VGTEFHUyIgXAorLSAgICAgICAgICB8IHNlZCAicy8kJGJzJCRic1skJGJzICQkYnMJXSovL2ci YDs7IFwKKy0gICAgZXNhYzsgXAorLSAgZmk7IFwKKy0gIHNraXBfbmV4dD1ubzsgXAorLSAgc3Ry aXBfdHJhaWxvcHQgKCkgXAorLSAgeyBcCistICAgIGZsZz1gcHJpbnRmICclc1xuJyAiJCRmbGci IHwgc2VkICJzLyQkMS4qJCQvLyJgOyBcCistICB9OyBcCistICBmb3IgZmxnIGluICQkc2FuZV9t YWtlZmxhZ3M7IGRvIFwKKy0gICAgdGVzdCAkJHNraXBfbmV4dCA9IHllcyAmJiB7IHNraXBfbmV4 dD1ubzsgY29udGludWU7IH07IFwKKy0gICAgY2FzZSAkJGZsZyBpbiBcCistICAgICAgKj0qfC0t KikgY29udGludWU7OyBcCistICAgICAgICAtKkkpIHN0cmlwX3RyYWlsb3B0ICdJJzsgc2tpcF9u ZXh0PXllczs7IFwKKy0gICAgICAtKkk/Kikgc3RyaXBfdHJhaWxvcHQgJ0knOzsgXAorLSAgICAg ICAgLSpPKSBzdHJpcF90cmFpbG9wdCAnTyc7IHNraXBfbmV4dD15ZXM7OyBcCistICAgICAgLSpP PyopIHN0cmlwX3RyYWlsb3B0ICdPJzs7IFwKKy0gICAgICAgIC0qbCkgc3RyaXBfdHJhaWxvcHQg J2wnOyBza2lwX25leHQ9eWVzOzsgXAorLSAgICAgIC0qbD8qKSBzdHJpcF90cmFpbG9wdCAnbCc7 OyBcCistICAgICAgLVtkRURtXSkgc2tpcF9uZXh0PXllczs7IFwKKy0gICAgICAtW0pUXSkgc2tp cF9uZXh0PXllczs7IFwKKy0gICAgZXNhYzsgXAorLSAgICBjYXNlICQkZmxnIGluIFwKKy0gICAg ICAqJCR0YXJnZXRfb3B0aW9uKikgaGFzX29wdD15ZXM7IGJyZWFrOzsgXAorLSAgICBlc2FjOyBc CistICBkb25lOyBcCistICB0ZXN0ICQkaGFzX29wdCA9IHllcworLWFtX19tYWtlX2RyeXJ1biA9 ICh0YXJnZXRfb3B0aW9uPW47ICQoYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbikpCistYW1f X21ha2Vfa2VlcGdvaW5nID0gKHRhcmdldF9vcHRpb249azsgJChhbV9fbWFrZV9ydW5uaW5nX3dp dGhfb3B0aW9uKSkKKy1wa2dkYXRhZGlyID0gJChkYXRhZGlyKS9AUEFDS0FHRUAKKy1wa2dpbmNs dWRlZGlyID0gJChpbmNsdWRlZGlyKS9AUEFDS0FHRUAKKy1wa2dsaWJkaXIgPSAkKGxpYmRpcikv QFBBQ0tBR0VACistcGtnbGliZXhlY2RpciA9ICQobGliZXhlY2RpcikvQFBBQ0tBR0VACistYW1f X2NkID0gQ0RQQVRIPSIkJHtaU0hfVkVSU0lPTisufSQoUEFUSF9TRVBBUkFUT1IpIiAmJiBjZAor LWluc3RhbGxfc2hfREFUQSA9ICQoaW5zdGFsbF9zaCkgLWMgLW0gNjQ0CistaW5zdGFsbF9zaF9Q Uk9HUkFNID0gJChpbnN0YWxsX3NoKSAtYworLWluc3RhbGxfc2hfU0NSSVBUID0gJChpbnN0YWxs X3NoKSAtYworLUlOU1RBTExfSEVBREVSID0gJChJTlNUQUxMX0RBVEEpCistdHJhbnNmb3JtID0g JChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKQorLU5PUk1BTF9JTlNUQUxMID0gOgorLVBSRV9JTlNU QUxMID0gOgorLVBPU1RfSU5TVEFMTCA9IDoKKy1OT1JNQUxfVU5JTlNUQUxMID0gOgorLVBSRV9V TklOU1RBTEwgPSA6CistUE9TVF9VTklOU1RBTEwgPSA6CistYnVpbGRfdHJpcGxldCA9IEBidWls ZEAKKy1ob3N0X3RyaXBsZXQgPSBAaG9zdEAKKy1iaW5fUFJPR1JBTVMgPSBoZXhjdXJzZSQoRVhF RVhUKQorLXN1YmRpciA9IHNyYworLUFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwu bTQKKy1hbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKy1h bV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RF UEVOREVOQ0lFUykgXAorLQkkKEFDTE9DQUxfTTQpCistRElTVF9DT01NT04gPSAkKHNyY2Rpcikv TWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCistbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwp ICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycworLUNPTkZJR19IRUFERVIgPSAkKHRvcF9idWls ZGRpcikvY29uZmlnLmgKKy1DT05GSUdfQ0xFQU5fRklMRVMgPQorLUNPTkZJR19DTEVBTl9WUEFU SF9GSUxFUyA9CistYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGJpbmRpcikiCistUFJP R1JBTVMgPSAkKGJpbl9QUk9HUkFNUykKKy1hbV9oZXhjdXJzZV9PQkpFQ1RTID0gZmlsZS4kKE9C SkVYVCkgbGxpc3QuJChPQkpFWFQpIHNjcmVlbi4kKE9CSkVYVCkgXAorLQloZXhjdXJzZS4kKE9C SkVYVCkgc3RhY2suJChPQkpFWFQpIGdldG9wdC4kKE9CSkVYVCkgXAorLQlhY2NlcHRjaC4kKE9C SkVYVCkgY29sb3IuJChPQkpFWFQpCistaGV4Y3Vyc2VfT0JKRUNUUyA9ICQoYW1faGV4Y3Vyc2Vf T0JKRUNUUykKKy1oZXhjdXJzZV9MREFERCA9ICQoTERBREQpCistQU1fVl9QID0gJChhbV9fdl9Q X0BBTV9WQCkKKy1hbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKKy1hbV9fdl9Q XzAgPSBmYWxzZQorLWFtX192X1BfMSA9IDoKKy1BTV9WX0dFTiA9ICQoYW1fX3ZfR0VOX0BBTV9W QCkKKy1hbV9fdl9HRU5fID0gJChhbV9fdl9HRU5fQEFNX0RFRkFVTFRfVkApCistYW1fX3ZfR0VO XzAgPSBAZWNobyAiICBHRU4gICAgICIgJEA7CistYW1fX3ZfR0VOXzEgPSAKKy1BTV9WX2F0ID0g JChhbV9fdl9hdF9AQU1fVkApCistYW1fX3ZfYXRfID0gJChhbV9fdl9hdF9AQU1fREVGQVVMVF9W QCkKKy1hbV9fdl9hdF8wID0gQAorLWFtX192X2F0XzEgPSAKKy1ERUZBVUxUX0lOQ0xVREVTID0g LUkuQGFtX19pc3JjQCAtSSQodG9wX2J1aWxkZGlyKQorLWRlcGNvbXAgPSAkKFNIRUxMKSAkKHRv cF9zcmNkaXIpL2RlcGNvbXAKKy1hbV9fZGVwZmlsZXNfbWF5YmUgPSBkZXBmaWxlcworLWFtX19t diA9IG12IC1mCistQ09NUElMRSA9ICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAk KElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSBcCistCSQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAk KENGTEFHUykKKy1BTV9WX0NDID0gJChhbV9fdl9DQ19AQU1fVkApCistYW1fX3ZfQ0NfID0gJChh bV9fdl9DQ19AQU1fREVGQVVMVF9WQCkKKy1hbV9fdl9DQ18wID0gQGVjaG8gIiAgQ0MgICAgICAi ICRAOworLWFtX192X0NDXzEgPSAKKy1DQ0xEID0gJChDQykKKy1MSU5LID0gJChDQ0xEKSAkKEFN X0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorLUFNX1Zf Q0NMRCA9ICQoYW1fX3ZfQ0NMRF9AQU1fVkApCistYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERf QEFNX0RFRkFVTFRfVkApCistYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwor LWFtX192X0NDTERfMSA9IAorLVNPVVJDRVMgPSAkKGhleGN1cnNlX1NPVVJDRVMpCistRElTVF9T T1VSQ0VTID0gJChoZXhjdXJzZV9TT1VSQ0VTKQorLWFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0g XAorLSAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCistICAgIG58bm98Tk8pIGZhbHNl OzsgXAorLSAgICAqKSAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOzsg XAorLSAgZXNhYworLWFtX190YWdnZWRfZmlsZXMgPSAkKEhFQURFUlMpICQoU09VUkNFUykgJChU QUdTX0ZJTEVTKSAkKExJU1ApCistIyBSZWFkIGEgbGlzdCBvZiBuZXdsaW5lLXNlcGFyYXRlZCBz dHJpbmdzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LAorLSMgYW5kIHByaW50IGVhY2ggb2YgdGhl bSBvbmNlLCB3aXRob3V0IGR1cGxpY2F0ZXMuICBJbnB1dCBvcmRlciBpcworLSMgKm5vdCogcHJl c2VydmVkLgorLWFtX191bmlxdWlmeV9pbnB1dCA9ICQoQVdLKSAnXAorLSAgQkVHSU4geyBub25l bXB0eSA9IDA7IH0gXAorLSAgeyBpdGVtc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKy0g IEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gaXRlbXMpIHByaW50IGk7IH07IH0gXAor LScKKy0jIE1ha2Ugc3VyZSB0aGUgbGlzdCBvZiBzb3VyY2VzIGlzIHVuaXF1ZS4gIFRoaXMgaXMg bmVjZXNzYXJ5IGJlY2F1c2UsCistIyBlLmcuLCB0aGUgc2FtZSBzb3VyY2UgZmlsZSBtaWdodCBi ZSBzaGFyZWQgYW1vbmcgX1NPVVJDRVMgdmFyaWFibGVzCistIyBmb3IgZGlmZmVyZW50IHByb2dy YW1zL2xpYnJhcmllcy4KKy1hbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzID0gXAorLSAgbGlz dD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKKy0gIHVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBk byBcCistICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNy Y2RpcikvJCRpOyBmaTsgXAorLSAgZG9uZSB8ICQoYW1fX3VuaXF1aWZ5X2lucHV0KWAKKy1FVEFH UyA9IGV0YWdzCistQ1RBR1MgPSBjdGFncworLWFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9N YWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL2RlcGNvbXAgXAorLQkkKHRvcF9zcmNkaXIpL21raW5z dGFsbGRpcnMKKy1ESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChU RVhJTkZPUykgJChFWFRSQV9ESVNUKQorLUFDTE9DQUwgPSBAQUNMT0NBTEAKKy1BTVRBUiA9IEBB TVRBUkAKKy1BTV9ERUZBVUxUX1ZFUkJPU0lUWSA9IEBBTV9ERUZBVUxUX1ZFUkJPU0lUWUAKKy1B VVRPQ09ORiA9IEBBVVRPQ09ORkAKKy1BVVRPSEVBREVSID0gQEFVVE9IRUFERVJACistQVVUT01B S0UgPSBAQVVUT01BS0VACistQVdLID0gQEFXS0AKKy1DQyA9IEBDQ0AKKy1DQ0RFUE1PREUgPSBA Q0NERVBNT0RFQAorLUNGTEFHUyA9IEBDRkxBR1NACistQ1BQID0gQENQUEAKKy1DUFBGTEFHUyA9 IEBDUFBGTEFHU0AKKy1DWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAorLURFRlMgPSBAREVGU0AKKy1E RVBESVIgPSBAREVQRElSQAorLUVDSE9fQyA9IEBFQ0hPX0NACistRUNIT19OID0gQEVDSE9fTkAK Ky1FQ0hPX1QgPSBARUNIT19UQAorLUVHUkVQID0gQEVHUkVQQAorLUVYRUVYVCA9IEBFWEVFWFRA CistR1JFUCA9IEBHUkVQQAorLUlOU1RBTEwgPSBASU5TVEFMTEAKKy1JTlNUQUxMX0RBVEEgPSBA SU5TVEFMTF9EQVRBQAorLUlOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ACistSU5T VEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRACistSU5TVEFMTF9TVFJJUF9QUk9HUkFNID0g QElOU1RBTExfU1RSSVBfUFJPR1JBTUAKKy1MREZMQUdTID0gQExERkxBR1NACistTElCT0JKUyA9 IEBMSUJPQkpTQAorLUxJQlMgPSBATElCU0AKKy1MVExJQk9CSlMgPSBATFRMSUJPQkpTQAorLU1B S0VJTkZPID0gQE1BS0VJTkZPQAorLU1LRElSX1AgPSBATUtESVJfUEAKKy1PQkpFWFQgPSBAT0JK RVhUQAorLVBBQ0tBR0UgPSBAUEFDS0FHRUAKKy1QQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdF X0JVR1JFUE9SVEAKKy1QQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAorLVBBQ0tBR0VfU1RS SU5HID0gQFBBQ0tBR0VfU1RSSU5HQAorLVBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5B TUVACistUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACistUEFDS0FHRV9WRVJTSU9OID0gQFBB Q0tBR0VfVkVSU0lPTkAKKy1QQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKKy1TRVRf TUFLRSA9IEBTRVRfTUFLRUAKKy1TSEVMTCA9IEBTSEVMTEAKKy1TVFJJUCA9IEBTVFJJUEAKKy1W RVJTSU9OID0gQFZFUlNJT05ACistYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKKy1hYnNf c3JjZGlyID0gQGFic19zcmNkaXJACistYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxk ZGlyQAorLWFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorLWFjX2N0X0NDID0gQGFj X2N0X0NDQAorLWFtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQAorLWFtX19sZWFkaW5nX2RvdCA9 IEBhbV9fbGVhZGluZ19kb3RACistYW1fX3F1b3RlID0gQGFtX19xdW90ZUAKKy1hbV9fdGFyID0g QGFtX190YXJACistYW1fX3VudGFyID0gQGFtX191bnRhckAKKy1iaW5kaXIgPSBAYmluZGlyQAor LWJ1aWxkID0gQGJ1aWxkQAorLWJ1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQAorLWJ1aWxkX2Nw dSA9IEBidWlsZF9jcHVACistYnVpbGRfb3MgPSBAYnVpbGRfb3NACistYnVpbGRfdmVuZG9yID0g QGJ1aWxkX3ZlbmRvckAKKy1idWlsZGRpciA9IEBidWlsZGRpckAKKy1kYXRhZGlyID0gQGRhdGFk aXJACistZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACistZG9jZGlyID0gQGRvY2RpckAKKy1k dmlkaXIgPSBAZHZpZGlyQAorLWV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAorLWhvc3QgPSBA aG9zdEAKKy1ob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACistaG9zdF9jcHUgPSBAaG9zdF9jcHVA CistaG9zdF9vcyA9IEBob3N0X29zQAorLWhvc3RfdmVuZG9yID0gQGhvc3RfdmVuZG9yQAorLWh0 bWxkaXIgPSBAaHRtbGRpckAKKy1pbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACistaW5mb2RpciA9 IEBpbmZvZGlyQAorLWluc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEAKKy1saWJkaXIgPSBAbGliZGly QAorLWxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKKy1sb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAor LWxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKKy1tYW5kaXIgPSBAbWFuZGlyQAorLW1r ZGlyX3AgPSBAbWtkaXJfcEAKKy1vbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACistcGRm ZGlyID0gQHBkZmRpckAKKy1wcmVmaXggPSBAcHJlZml4QAorLXByb2dyYW1fdHJhbnNmb3JtX25h bWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKKy1wc2RpciA9IEBwc2RpckAKKy1zYmluZGly ID0gQHNiaW5kaXJACistc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACistc3JjZGly ID0gQHNyY2RpckAKKy1zeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACistdGFyZ2V0X2FsaWFzID0g QHRhcmdldF9hbGlhc0AKKy10b3BfYnVpbGRfcHJlZml4ID0gQHRvcF9idWlsZF9wcmVmaXhACist dG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKKy10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJA CistQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtV2FsbCAtV2Vycm9yIC1X ZXh0cmEKKy1oZXhjdXJzZV9TT1VSQ0VTID0gZmlsZS5jIGxsaXN0LmMgc2NyZWVuLmMgaGV4Y3Vy c2UuYyBzdGFjay5jIGdldG9wdC5jIGFjY2VwdGNoLmMgY29sb3IuYworLWFsbDogYWxsLWFtCist CistLlNVRkZJWEVTOgorLS5TVUZGSVhFUzogLmMgLm8gLm9iagorLSQoc3JjZGlyKS9NYWtlZmls ZS5pbjogICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCistCUBm b3IgZGVwIGluICQ/OyBkbyBcCistCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBc CistCSAgICAqJCRkZXAqKSBcCistCSAgICAgICggY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFL RSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoICkgXAorLQkgICAgICAgICYmIHsgaWYgdGVz dCAtZiAkQDsgdGhlbiBleGl0IDA7IGVsc2UgYnJlYWs7IGZpOyB9OyBcCistCSAgICAgIGV4aXQg MTs7IFwKKy0JICBlc2FjOyBcCistCWRvbmU7IFwKKy0JZWNobyAnIGNkICQodG9wX3NyY2Rpcikg JiYgJChBVVRPTUFLRSkgLS1nbnUgc3JjL01ha2VmaWxlJzsgXAorLQkkKGFtX19jZCkgJCh0b3Bf c3JjZGlyKSAmJiBcCistCSAgJChBVVRPTUFLRSkgLS1nbnUgc3JjL01ha2VmaWxlCistTWFrZWZp bGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwor LQlAY2FzZSAnJD8nIGluIFwKKy0JICAqY29uZmlnLnN0YXR1cyopIFwKKy0JICAgIGNkICQodG9w X2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaDs7IFwKKy0J ICAqKSBcCistCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29u ZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXAorLQkgICAg Y2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikv JEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpOzsgXAorLQllc2FjOworLQorLSQodG9wX2J1aWxkZGly KS9jb25maWcuc3RhdHVzOiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSAkKENPTkZJR19TVEFUVVNf REVQRU5ERU5DSUVTKQorLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VG TEFHUykgYW0tLXJlZnJlc2gKKy0KKy0kKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZTogICQoYW1fX2Nv bmZpZ3VyZV9kZXBzKQorLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VG TEFHUykgYW0tLXJlZnJlc2gKKy0kKEFDTE9DQUxfTTQpOiAgJChhbV9fYWNsb2NhbF9tNF9kZXBz KQorLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJl ZnJlc2gKKy0kKGFtX19hY2xvY2FsX200X2RlcHMpOgorLWluc3RhbGwtYmluUFJPR1JBTVM6ICQo YmluX1BST0dSQU1TKQorLQlAJChOT1JNQUxfSU5TVEFMTCkKKy0JQGxpc3Q9JyQoYmluX1BST0dS QU1TKSc7IHRlc3QgLW4gIiQoYmluZGlyKSIgfHwgbGlzdD07IFwKKy0JaWYgdGVzdCAtbiAiJCRs aXN0IjsgdGhlbiBcCistCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKGJpbmRpcikn IjsgXAorLQkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGJpbmRpcikiIHx8IGV4aXQgMTsgXAor LQlmaTsgXAorLQlmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCAkJHAiOyBkb25lIHwgXAor LQlzZWQgJ3MvJChFWEVFWFQpJCQvLycgfCBcCistCXdoaWxlIHJlYWQgcCBwMTsgZG8gaWYgdGVz dCAtZiAkJHAgXAorLQkgIDsgdGhlbiBlY2hvICIkJHAiOyBlY2hvICIkJHAiOyBlbHNlIDo7IGZp OyBcCistCWRvbmUgfCBcCistCXNlZCAtZSAncDtzLC4qLywsO247aCcgXAorLQkgICAgLWUgJ3N8 Lip8LnwnIFwKKy0JICAgIC1lICdwO3g7cywuKi8sLDtzLyQoRVhFRVhUKSQkLy87JCh0cmFuc2Zv cm0pO3MvJCQvJChFWEVFWFQpLycgfCBcCistCXNlZCAnTjtOO047cyxcbiwgLGcnIHwgXAorLQkk KEFXSykgJ0JFR0lOIHsgZmlsZXNbIi4iXSA9ICIiOyBkaXJzWyIuIl0gPSAxIH0gXAorLQkgIHsg ZD0kJDM7IGlmIChkaXJzW2RdICE9IDEpIHsgcHJpbnQgImQiLCBkOyBkaXJzW2RdID0gMSB9IFwK Ky0JICAgIGlmICgkJDIgPT0gJCQ0KSBmaWxlc1tkXSA9IGZpbGVzW2RdICIgIiAkJDE7IFwKKy0J ICAgIGVsc2UgeyBwcmludCAiZiIsICQkMyAiLyIgJCQ0LCAkJDE7IH0gfSBcCistCSAgRU5EIHsg Zm9yIChkIGluIGZpbGVzKSBwcmludCAiZiIsIGQsIGZpbGVzW2RdIH0nIHwgXAorLQl3aGlsZSBy ZWFkIHR5cGUgZGlyIGZpbGVzOyBkbyBcCistCSAgICBpZiB0ZXN0ICIkJGRpciIgPSAuOyB0aGVu IGRpcj07IGVsc2UgZGlyPS8kJGRpcjsgZmk7IFwKKy0JICAgIHRlc3QgLXogIiQkZmlsZXMiIHx8 IHsgXAorLQkgICAgICBlY2hvICIgJChJTlNUQUxMX1BST0dSQU1fRU5WKSAkKElOU1RBTExfUFJP R1JBTSkgJCRmaWxlcyAnJChERVNURElSKSQoYmluZGlyKSQkZGlyJyI7IFwKKy0JICAgICAgJChJ TlNUQUxMX1BST0dSQU1fRU5WKSAkKElOU1RBTExfUFJPR1JBTSkgJCRmaWxlcyAiJChERVNURElS KSQoYmluZGlyKSQkZGlyIiB8fCBleGl0ICQkPzsgXAorLQkgICAgfSBcCistCTsgZG9uZQorLQor LXVuaW5zdGFsbC1iaW5QUk9HUkFNUzoKKy0JQCQoTk9STUFMX1VOSU5TVEFMTCkKKy0JQGxpc3Q9 JyQoYmluX1BST0dSQU1TKSc7IHRlc3QgLW4gIiQoYmluZGlyKSIgfHwgbGlzdD07IFwKKy0JZmls ZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwIjsgZG9uZSB8IFwKKy0JICBzZWQgLWUg J2g7cyxeLiovLCw7cy8kKEVYRUVYVCkkJC8vOyQodHJhbnNmb3JtKScgXAorLQkgICAgICAtZSAn cy8kJC8kKEVYRUVYVCkvJyBcCistCWA7IFwKKy0JdGVzdCAtbiAiJCRsaXN0IiB8fCBleGl0IDA7 IFwKKy0JZWNobyAiICggY2QgJyQoREVTVERJUikkKGJpbmRpciknICYmIHJtIC1mIiAkJGZpbGVz ICIpIjsgXAorLQljZCAiJChERVNURElSKSQoYmluZGlyKSIgJiYgcm0gLWYgJCRmaWxlcworLQor LWNsZWFuLWJpblBST0dSQU1TOgorLQktdGVzdCAteiAiJChiaW5fUFJPR1JBTVMpIiB8fCBybSAt ZiAkKGJpbl9QUk9HUkFNUykKKy0KKy1oZXhjdXJzZSQoRVhFRVhUKTogJChoZXhjdXJzZV9PQkpF Q1RTKSAkKGhleGN1cnNlX0RFUEVOREVOQ0lFUykgJChFWFRSQV9oZXhjdXJzZV9ERVBFTkRFTkNJ RVMpIAorLQlAcm0gLWYgaGV4Y3Vyc2UkKEVYRUVYVCkKKy0JJChBTV9WX0NDTEQpJChMSU5LKSAk KGhleGN1cnNlX09CSkVDVFMpICQoaGV4Y3Vyc2VfTERBREQpICQoTElCUykKKy0KKy1tb3N0bHlj bGVhbi1jb21waWxlOgorLQktcm0gLWYgKi4kKE9CSkVYVCkKKy0KKy1kaXN0Y2xlYW4tY29tcGls ZToKKy0JLXJtIC1mICoudGFiLmMKKy0KKy1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9f cXVvdGVALi8kKERFUERJUikvYWNjZXB0Y2guUG9AYW1fX3F1b3RlQAorLUBBTURFUF9UUlVFQEBh bV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9jb2xvci5Qb0BhbV9fcXVvdGVACist QEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2ZpbGUuUG9A YW1fX3F1b3RlQAorLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQ RElSKS9nZXRvcHQuUG9AYW1fX3F1b3RlQAorLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFt X19xdW90ZUAuLyQoREVQRElSKS9oZXhjdXJzZS5Qb0BhbV9fcXVvdGVACistQEFNREVQX1RSVUVA QGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xsaXN0LlBvQGFtX19xdW90ZUAK Ky1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvc2NyZWVu LlBvQGFtX19xdW90ZUAKKy1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8k KERFUERJUikvc3RhY2suUG9AYW1fX3F1b3RlQAorLQorLS5jLm86CistQGFtX19mYXN0ZGVwQ0Nf VFJVRUAJJChBTV9WX0NDKSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8k Ki5UcG8gLWMgLW8gJEAgJDwKKy1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9f bXYpICQoREVQRElSKS8kKi5UcG8gJChERVBESVIpLyQqLlBvCistQEFNREVQX1RSVUVAQGFtX19m YXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29s PW5vIEBBTURFUEJBQ0tTTEFTSEAKKy1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJ REVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hA CistQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ09NUElMRSkg LWMgLW8gJEAgJDwKKy0KKy0uYy5vYmo6CistQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0ND KSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKi5UcG8gLWMgLW8gJEAg YCQoQ1lHUEFUSF9XKSAnJDwnYAorLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFt X19tdikgJChERVBESVIpLyQqLlRwbyAkKERFUERJUikvJCouUG8KKy1AQU1ERVBfVFJVRUBAYW1f X2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nJDwnIG9iamVjdD0nJEAnIGxpYnRv b2w9bm8gQEFNREVQQkFDS1NMQVNIQAorLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNF QAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFT SEAKKy1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDT01QSUxF KSAtYyAtbyAkQCBgJChDWUdQQVRIX1cpICckPCdgCistCistSUQ6ICQoYW1fX3RhZ2dlZF9maWxl cykKKy0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgbWtpZCAtZklEICQkdW5pcXVl CistdGFnczogdGFncy1hbQorLVRBR1M6IHRhZ3MKKy0KKy10YWdzLWFtOiAkKFRBR1NfREVQRU5E RU5DSUVTKSAkKGFtX190YWdnZWRfZmlsZXMpCistCXNldCB4OyBcCistCWhlcmU9YHB3ZGA7IFwK Ky0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAorLQlzaGlmdDsgXAorLQlpZiB0 ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCQqJCR1bmlxdWUiOyB0aGVuIDo7IGVsc2UgXAorLQkgIHRl c3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwKKy0JICBpZiB0ZXN0ICQk IyAtZ3QgMDsgdGhlbiBcCistCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NG TEFHUykgJChFVEFHU19BUkdTKSBcCistCSAgICAgICIkJEAiICQkdW5pcXVlOyBcCistCSAgZWxz ZSBcCistCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFH U19BUkdTKSBcCistCSAgICAgICQkdW5pcXVlOyBcCistCSAgZmk7IFwKKy0JZmkKKy1jdGFnczog Y3RhZ3MtYW0KKy0KKy1DVEFHUzogY3RhZ3MKKy1jdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lF UykgJChhbV9fdGFnZ2VkX2ZpbGVzKQorLQkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMp OyBcCistCXRlc3QgLXogIiQoQ1RBR1NfQVJHUykkJHVuaXF1ZSIgXAorLQkgIHx8ICQoQ1RBR1Mp ICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKKy0JICAgICAk JHVuaXF1ZQorLQorLUdUQUdTOgorLQloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYm IHB3ZGAgXAorLQkgICYmICQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpIFwKKy0JICAmJiBndGFncyAt aSAkKEdUQUdTX0FSR1MpICIkJGhlcmUiCistY3Njb3BlbGlzdDogY3Njb3BlbGlzdC1hbQorLQor LWNzY29wZWxpc3QtYW06ICQoYW1fX3RhZ2dlZF9maWxlcykKKy0JbGlzdD0nJChhbV9fdGFnZ2Vk X2ZpbGVzKSc7IFwKKy0JY2FzZSAiJChzcmNkaXIpIiBpbiBcCistCSAgW1xcL10qIHwgPzpbXFwv XSopIHNkaXI9IiQoc3JjZGlyKSIgOzsgXAorLQkgICopIHNkaXI9JChzdWJkaXIpLyQoc3JjZGly KSA7OyBcCistCWVzYWM7IFwKKy0JZm9yIGkgaW4gJCRsaXN0OyBkbyBcCistCSAgaWYgdGVzdCAt ZiAiJCRpIjsgdGhlbiBcCistCSAgICBlY2hvICIkKHN1YmRpcikvJCRpIjsgXAorLQkgIGVsc2Ug XAorLQkgICAgZWNobyAiJCRzZGlyLyQkaSI7IFwKKy0JICBmaTsgXAorLQlkb25lID4+ICQodG9w X2J1aWxkZGlyKS9jc2NvcGUuZmlsZXMKKy0KKy1kaXN0Y2xlYW4tdGFnczoKKy0JLXJtIC1mIFRB R1MgSUQgR1RBR1MgR1JUQUdTIEdTWU1TIEdQQVRIIHRhZ3MKKy0KKy1kaXN0ZGlyOiAkKERJU1RG SUxFUykKKy0JQHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRc XCpdL1xcXFwmL2cnYDsgXAorLQl0b3BzcmNkaXJzdHJpcD1gZWNobyAiJCh0b3Bfc3JjZGlyKSIg fCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCistCWxpc3Q9JyQoRElTVEZJTEVTKSc7 IFwKKy0JICBkaXN0X2ZpbGVzPWBmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRmaWxlOyBk b25lIHwgXAorLQkgIHNlZCAtZSAic3xeJCRzcmNkaXJzdHJpcC98fDt0IiBcCistCSAgICAgIC1l ICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwKKy0JY2FzZSAk JGRpc3RfZmlsZXMgaW4gXAorLQkgICovKikgJChNS0RJUl9QKSBgZWNobyAiJCRkaXN0X2ZpbGVz IiB8IFwKKy0JCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1teL10qJCQsLCcg fCBcCistCQkJICAgc29ydCAtdWAgOzsgXAorLQllc2FjOyBcCistCWZvciBmaWxlIGluICQkZGlz dF9maWxlczsgZG8gXAorLQkgIGlmIHRlc3QgLWYgJCRmaWxlIHx8IHRlc3QgLWQgJCRmaWxlOyB0 aGVuIGQ9LjsgZWxzZSBkPSQoc3JjZGlyKTsgZmk7IFwKKy0JICBpZiB0ZXN0IC1kICQkZC8kJGZp bGU7IHRoZW4gXAorLQkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAncywvW14vXSok JCwsJ2A7IFwKKy0JICAgIGlmIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRmaWxlIjsgdGhlbiBcCist CSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhl YyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorLQkgICAgZmk7IFwKKy0JICAgIGlmIHRlc3QgLWQgJChz cmNkaXIpLyQkZmlsZSAmJiB0ZXN0ICQkZCAhPSAkKHNyY2Rpcik7IHRoZW4gXAorLQkgICAgICBj cCAtZnBSICQoc3JjZGlyKS8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCist CSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhl YyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorLQkgICAgZmk7IFwKKy0JICAgIGNwIC1mcFIgJCRkLyQk ZmlsZSAiJChkaXN0ZGlyKSQkZGlyIiB8fCBleGl0IDE7IFwKKy0JICBlbHNlIFwKKy0JICAgIHRl c3QgLWYgIiQoZGlzdGRpcikvJCRmaWxlIiBcCistCSAgICB8fCBjcCAtcCAkJGQvJCRmaWxlICIk KGRpc3RkaXIpLyQkZmlsZSIgXAorLQkgICAgfHwgZXhpdCAxOyBcCistCSAgZmk7IFwKKy0JZG9u ZQorLWNoZWNrLWFtOiBhbGwtYW0KKy1jaGVjazogY2hlY2stYW0KKy1hbGwtYW06IE1ha2VmaWxl ICQoUFJPR1JBTVMpCistaW5zdGFsbGRpcnM6CistCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGJp bmRpcikiOyBkbyBcCistCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQkZGlyIjsg XAorLQlkb25lCistaW5zdGFsbDogaW5zdGFsbC1hbQorLWluc3RhbGwtZXhlYzogaW5zdGFsbC1l eGVjLWFtCistaW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0KKy11bmluc3RhbGw6IHVuaW5z dGFsbC1hbQorLQorLWluc3RhbGwtYW06IGFsbC1hbQorLQlAJChNQUtFKSAkKEFNX01BS0VGTEFH UykgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtZGF0YS1hbQorLQorLWluc3RhbGxjaGVjazogaW5z dGFsbGNoZWNrLWFtCistaW5zdGFsbC1zdHJpcDoKKy0JaWYgdGVzdCAteiAnJChTVFJJUCknOyB0 aGVuIFwKKy0JICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5T VEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorLQkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RB TExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCistCSAgICAgIGluc3Rh bGw7IFwKKy0JZWxzZSBcCistCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9H UkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKy0JICAgIGluc3RhbGxfc2hfUFJPR1JB TT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorLQkg ICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwK Ky0JZmkKKy1tb3N0bHljbGVhbi1nZW5lcmljOgorLQorLWNsZWFuLWdlbmVyaWM6CistCistZGlz dGNsZWFuLWdlbmVyaWM6CistCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9GSUxFUykiIHx8IHJt IC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQorLQktdGVzdCAuID0gIiQoc3JjZGlyKSIgfHwgdGVz dCAteiAiJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpIiB8fCBybSAtZiAkKENPTkZJR19DTEVB Tl9WUEFUSF9GSUxFUykKKy0KKy1tYWludGFpbmVyLWNsZWFuLWdlbmVyaWM6CistCUBlY2hvICJU aGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZSIKKy0JQGVjaG8g Iml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVp bGQuIgorLWNsZWFuOiBjbGVhbi1hbQorLQorLWNsZWFuLWFtOiBjbGVhbi1iaW5QUk9HUkFNUyBj bGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWFtCistCistZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0K Ky0JLXJtIC1yZiAuLyQoREVQRElSKQorLQktcm0gLWYgTWFrZWZpbGUKKy1kaXN0Y2xlYW4tYW06 IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKKy0JZGlzdGNs ZWFuLXRhZ3MKKy0KKy1kdmk6IGR2aS1hbQorLQorLWR2aS1hbToKKy0KKy1odG1sOiBodG1sLWFt CistCistaHRtbC1hbToKKy0KKy1pbmZvOiBpbmZvLWFtCistCistaW5mby1hbToKKy0KKy1pbnN0 YWxsLWRhdGEtYW06CistCistaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCistCistaW5zdGFs bC1kdmktYW06CistCistaW5zdGFsbC1leGVjLWFtOiBpbnN0YWxsLWJpblBST0dSQU1TCistCist aW5zdGFsbC1odG1sOiBpbnN0YWxsLWh0bWwtYW0KKy0KKy1pbnN0YWxsLWh0bWwtYW06CistCist aW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8tYW0KKy0KKy1pbnN0YWxsLWluZm8tYW06CistCist aW5zdGFsbC1tYW46CistCistaW5zdGFsbC1wZGY6IGluc3RhbGwtcGRmLWFtCistCistaW5zdGFs bC1wZGYtYW06CistCistaW5zdGFsbC1wczogaW5zdGFsbC1wcy1hbQorLQorLWluc3RhbGwtcHMt YW06CistCistaW5zdGFsbGNoZWNrLWFtOgorLQorLW1haW50YWluZXItY2xlYW46IG1haW50YWlu ZXItY2xlYW4tYW0KKy0JLXJtIC1yZiAuLyQoREVQRElSKQorLQktcm0gLWYgTWFrZWZpbGUKKy1t YWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmlj CistCistbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLWFtCistCistbW9zdGx5Y2xlYW4tYW06IG1v c3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYworLQorLXBkZjogcGRmLWFtCist CistcGRmLWFtOgorLQorLXBzOiBwcy1hbQorLQorLXBzLWFtOgorLQorLXVuaW5zdGFsbC1hbTog dW5pbnN0YWxsLWJpblBST0dSQU1TCistCistLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJp cAorLQorLS5QSE9OWTogQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFt IGNsZWFuIFwKKy0JY2xlYW4tYmluUFJPR1JBTVMgY2xlYW4tZ2VuZXJpYyBjc2NvcGVsaXN0LWFt IGN0YWdzIGN0YWdzLWFtIFwKKy0JZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVh bi1nZW5lcmljIGRpc3RjbGVhbi10YWdzIFwKKy0JZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgaHRt bC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBcCistCWluc3RhbGwtYW0gaW5zdGFsbC1iaW5QUk9H UkFNUyBpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIFwKKy0JaW5zdGFsbC1kdmkgaW5zdGFs bC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBcCistCWluc3RhbGwtaHRtbCBp bnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBcCistCWluc3RhbGwt bWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgXAorLQlpbnN0YWxsLXBz LWFtIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBcCistCWluc3Rh bGxkaXJzIG1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIFwKKy0JbW9z dGx5Y2xlYW4gbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYt YW0gXAorLQlwcyBwcy1hbSB0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSBcCist CXVuaW5zdGFsbC1iaW5QUk9HUkFNUworLQorLS5QUkVDSU9VUzogTWFrZWZpbGUKKy0KKy0KKy0j IFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwg dmFyaWFibGVzLgorLSMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFz dCkgbWF5IGJlIGV4Y2VlZGVkLgorLS5OT0VYUE9SVDoKK2RpZmYgLS1naXQgYS9zcmMvYWNjZXB0 Y2guYyBiL3NyYy9hY2NlcHRjaC5jCitpbmRleCAxNTgwNjQ1Li4xOWMzZWIwIDEwMDY0NAorLS0t IGEvc3JjL2FjY2VwdGNoLmMKKysrKyBiL3NyYy9hY2NlcHRjaC5jCitAQCAtMSw1ICsxLDYgQEAK KyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqXAorICAqICBDb3B5cmlnaHQgKEMpIDIwMDEsIGhleGN1 cnNlIGlzICB3cml0ZW4gYnkgSmV3ZmlzaCBhbmQgQXJtb3RoICAgICAgICAgICAgICoKKysgKiAg Q29weXJpZ2h0IChDKSAyMDIwLTIwMjMgcHJzbyBhdCBnaXRodWIsIGZpeGVzIGFuZCBpbXByb3Zl bWVudHMgICAgICAgICAgICAqCisgICoJCQkJCQkJCQkgICAgICAqCisgICogIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 ICAgICAgKgorICAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSAgICAgICoKK0BAIC0zNSwxMSArMzYsMTIgQEAgaW50 IHdhY2NlcHRjaChXSU5TICp3aW4sIG9mZl90IGxlbikKKyAgICAgCisgICAgIG9mZl90IGNvdW50 OworICAgICBpbnQgIGNvbCA9IDAsIHZhbCwgdG1wdmFsLCAJICAgIAkJCS8qIGNvdW50ZXJzLCBl dGMuICAgICAqLyAgIAorLSAgICAgICAgIGNoWzE3XSwJCQkJCS8qIGhvbGRzIHNlYXJjaCBzdHJp bmcqLworKyAgICAgICAgIGNoWzgxXSwJCQkJCS8qIGhvbGRzIHNlYXJjaCBzdHJpbmcqLworIAkg ZW9sID0gKEJBU0UgKiAzKSAtIDEsCQkJCS8qIGVuZCBvZiBsaW5lIHBvcyAgICAqLworIAkgbGFz dFJvdyA9IDAsIGxhc3RDb2wgPSAwLAkJCS8qIGxhc3Qgcm93L2NvbCBjb29yZHMqLworIAkgY3Vy VmFsID0gMCwJICAgICAgICAJCQkvKiB2YWxzIEAgY3Vyc29yIGxvY3MgKi8KKy0JIHRtcCA9IDA7 CisrCSB0bXAgPSAwLAorKwkgdGVtcGxlbiA9IDA7CisgCisgICAgIG9mZl90IGNsLAkJCQkJCS8q IGN1cnJlbnQgbG9jIGluIGZpbGUqLworIAkgIGdvdG9Mb2MgPSAwLAkJCQkJLyogZ290byBsb2Nh dGlvbiAgICAgICovCitAQCAtNDksMTMgKzUxLDE0IEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2lu LCBvZmZfdCBsZW4pCisgCisgICAgIGNoYXIgKmdvdG9Mb2NTdHIsCQkJCQkvKiBjb252ZXJ0IHRv IGdvdG9Mb2MgKi8KKyAgICAgICAgICAqdGVtcCwKKysgICAgICAgICAqc2VhcmNoaGV4LAorKyAg ICAgICAgICpzZWFyY2hhc2NpaSwKKyAgICAgCSAqdG1wc3RyLAkJCQkJLyogdG1wIHN0ciA0IGlu cHV0TGluZSovCisgCSBTZWFyY2hTdHJbMTNdOworIAorICAgICBzaG9ydCBpbnQga2V5OwkJCQkJ Lyoga2V5IGNhcHR1cmUgICAgICAgICovCisgICAgIFdJTkRPVyAqV2luZHM7CQkJCQkvKiB3aW5k b3cgcG9pbnRlciAgICAgKi8KKyAgICAgaGV4U3RhY2sgKnN0YWNrOwkJCQkJLyogdXNlZCBmb3Ig c3RhY2sgICAgICovCistICAgIGhleFN0YWNrICp0bXBTdGFjazsJCQkJCS8qIHVzZWQgZm9yIHN0 YWNrICAgICAqLworICAgICBlZGl0SGV4ID0gVFJVRTsJCQkJCS8qIHZhbCBmb3IgZWRpdGluZyAg ICAqLworIAorICAgICBTSVpFX0NICT0gRkFMU0U7CQkJCS8qIHNldCB3aW5jaCB0byBmYWxzZSAq LworQEAgLTYzLDEwICs2NiwxMSBAQCBpbnQgd2FjY2VwdGNoKFdJTlMgKndpbiwgb2ZmX3QgbGVu KQorICAgICBtYXhsaW5lcyAgICA9IG1heExpbmVzKGxlbik7CQkJLyogbGluZXMgaW4gZmlsZSAg ICAgICovCisgICAgIAorICAgICBib29sIHNob3VsZEV4aXQgPSBmYWxzZTsKKysgICAgYm9vbCBz YXZlZHBvaW50ID0gVFJVRTsKKyAKKy0gICAgLypjcmVhdGVTdGFjayhzdGFjayk7Ki8JCQkJLyog aW5pdCB0aGUgc3RhY2sgICAgICovCisgICAgIHN0YWNrID0gTlVMTDsKKy0gICAgdGVtcCA9IChj aGFyICopY2FsbG9jKDgxLCBzaXplb2YoY2hhcikpOworKyAgICBzZWFyY2hoZXggPSAoY2hhciAq KWNhbGxvYyg4MSwgc2l6ZW9mKGNoYXIpKTsKKysgICAgc2VhcmNoYXNjaWkgPSAoY2hhciAqKWNh bGxvYyg4MSwgc2l6ZW9mKGNoYXIpKTsKKyAKKyAgICAgaWYgKGZwSU4pCQkJCQkJLyogaWYgZmls ZSBvcGVuZWQgdGhlbiovCisgICAgIHsJCQkJCQkJLyogaGlnaGxpZ2h0IDAsMCBsb2MgICovCitA QCAtODQsNyArODgsNiBAQCBpbnQgd2FjY2VwdGNoKFdJTlMgKndpbiwgb2ZmX3QgbGVuKQorICAg ICAgICAgCisgCQkJCQkJCS8qIGdldCBrZXlzIHRpbCBleGl0ICAqLworICAgICB3aGlsZSghc2hv dWxkRXhpdCkKKy0gICAgLy93aGlsZSAoIShzYXZlPXF1aXRQcm9ncmFtKGlzRW1wdHlTdGFjayhz dGFjayksKGtleSA9IHdnZXRjaChXaW5kcykpKSkpCisgICAgIHsKKyAgICAgICAgIGtleSA9IHdn ZXRjaChXaW5kcyk7CisgCWxhc3RSb3cgPSByb3c7CitAQCAtMTE4LDcgKzEyMSw3IEBAIGludCB3 YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZfdCBsZW4pCisgCWNhc2UgQ1RSTF9BTkQoJ3EnKToKKyAJ Y2FzZSBDVFJMX0FORCgneCcpOgorIAljYXNlIEtFWV9GKDgpOgorLQkJaWYgKGlzRW1wdHlTdGFj ayhzdGFjaykpCisrCQlpZiAoc2F2ZWQpCisgCQl7CisgCQkJLyogTm8gcGVuZGluZyBjaGFuZ2Vz ICovCisgCQkJc2hvdWxkRXhpdCA9IHRydWU7CitAQCAtMTY1LDYgKzE2OCwyMyBAQCBpbnQgd2Fj Y2VwdGNoKFdJTlMgKndpbiwgb2ZmX3QgbGVuKQorIAkJICAgIGlmKChyb3cgPiBNQVhZKSAmJiAo Y3VycmVudExpbmUgPD0gbWF4bGluZXMpKQorIAkJICAgICAgICB3aW5zY3JvbGwod2luLCBXaW5k cywgMSwgY3VycmVudExpbmUpOworIAkJfQorKwkJZWxzZSBpZiAoY3VycmVudExpbmUgIT0gbWF4 bGluZXMpCisrCQl7CQkJCQkvKiBtb3ZlIHRvIEVPRiAgICAgICAgKi8KKysJCQkJCQkJLyogc2Ny b2xsIGRvd24uLi4gICAgICovCisrCQkgICAgaWYgKHJvdyA+PSBNQVhZKQorKwkJICAgICAgICB3 aW5zY3JvbGwod2luLCBXaW5kcywgMSwgKytjdXJyZW50TGluZSk7CisrCQkgICAgZWxzZQorKwkJ ICAgIHsKKysJCSAgICAgICAgY3VycmVudExpbmUrKzsKKysJCSAgICAgICAgcm93Kys7CisrCQkg ICAgfQorKwkJCQkJCQkvKiBsYXN0IGNvbHVtbiAgICAgICAgKi8KKysJCSAgICBjb2wgPSAoZWRp dEhleCkgPyAzICogKChsZW4gJSBCQVNFKSAtIDEpOihsZW4gJSBCQVNFKSAtIDE7CisrCQkgICAg aWYgKGNvbCA8IDApCisrCQkgICAgICAgIGNvbCA9IChlZGl0SGV4KSA/IDMgKiAoQkFTRSAtIDEp IDogQkFTRSAtIDE7CisrCisrCQkgICAgd21vdmUoV2luZHMsIHJvdywgY29sKTsJCS8qIG1vdmUg Y3Vyc29yICAgICAgICAqLworKwkJfQorIAkJYnJlYWs7CisgCisgCWNhc2UgS0VZX0JBQ0tTUEFD RToKK0BAIC0xOTAsNyArMjEwLDExIEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZfdCBs ZW4pCisgCisgCWRlZmF1bHQ6CQkJCQkvKiBpZiBvdGhlciBrZXkuLi4gICAgKi8KKyAJCQkJCQkJ LyogaWYga2V5IHdlIHdhbnQuLi4gICovCistCQlpZiAoaXNwcmludChrZXkpICYmICgoZWRpdEhl eCAmJiBpc3hkaWdpdChrZXkpKSB8fCAhZWRpdEhleCkpCisrCQlpZiAoIChlZGl0SGV4ICYmIGlz eGRpZ2l0KGtleSkpIHx8CisrCQkgICAgICggKCFlZGl0SGV4ICYmIGlzcHJpbnQoa2V5KSkgJiYK KysJCSAgICAgICAoIChVU0VfRUJDRElDKSA/IChBU0NJSV90b19FQkNESUNba2V5XSE9Tk9ERUYp IDogVFJVRSApCisrCQkgICAgICkKKysJCSAgICkKKyAJCXsKKyAJCSAgICBpZiAoKGNsPWN1cnNv ckxvYyhjdXJyZW50TGluZSwgY29sLCBlZGl0SGV4LEJBU0UpKTwgbGVuKSAKKyAJCSAgICB7ICAg CitAQCAtMjA0LDI2ICsyMjgsNDMgQEAgaW50IHdhY2NlcHRjaChXSU5TICp3aW4sIG9mZl90IGxl bikKKyAKKyAJCQl3YXR0cm9uKHdpbi0+aGV4LCBBX0JPTEQpOworIAkJCXdhdHRyb24od2luLT5h c2NpaSwgQV9CT0xEKTsKKy0JCQkJCQkJLyogb3V0cHV0IGl0ICAgICAgICAgICovCistCQkJd3By aW50dyhXaW5kcywgIiVjIiwgZWRpdEhleCA/IHRvdXBwZXIoa2V5KToga2V5KTsKKyAKKyAJCQl0 bXB2YWwgPSB2YWw7CQkJLyogdmFsIGI0IGtleSBwcmVzcyAgICovCisgCisgCQkJaWYgKGVkaXRI ZXgpCQkJLyogaWYgaW4gaGV4IHdpbi4uLiAgICovCisgCQkJeworLQkJCSAgICBpZiAoa2V5ID49 IDY1ICYmIGtleSA8PSA3MCkJLyogZ2V0IGNvcnJlY3QgdmFsICAgICovCistCQkJICAgIAlrZXkg LT0gNzsKKy0JCQkgICAgZWxzZSBpZiAoa2V5ID49IDk3ICYmIGtleSA8PSAxMDIpCistCQkJICAg IAlrZXkgLT0gMzk7CistCQkJICAgIGtleSAtPSA0ODsKKy0JCQkKKy0JCQkgICAgaWYgKChjb2wg JSAzKSA9PSAwKQkJLyogY29tcHV0ZSBieXRlIHZhbCAgICovCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbCA9IChrZXkgKiAxNikgKyAodmFsICUgMTYpOworLQkJCSAgICBlbHNlIGlm ICgoY29sICUgMykgPT0gMSkKKy0JCQkgICAgCXZhbCA9ICh2YWwgLSAoKHZhbCArIDE2KSAlIDE2 KSArIGtleSk7CisrCQkJCXNob3J0IGludCB0bXBrZXkgPSBrZXk7CisrCisrCQkJCWlmICh0bXBr ZXkgPj0gNjUgJiYgdG1wa2V5IDw9IDcwKQkvKiBnZXQgY29ycmVjdCB2YWwgICAgKi8KKysJCQkJ CXRtcGtleSAtPSA3OworKwkJCQllbHNlIGlmICh0bXBrZXkgPj0gOTcgJiYgdG1wa2V5IDw9IDEw MikKKysJCQkJCXRtcGtleSAtPSAzOTsKKysJCQkJdG1wa2V5IC09IDQ4OworKworKwkJCQlpZiAo KGNvbCAlIDMpID09IDApCQkvKiBjb21wdXRlIGJ5dGUgdmFsICovCisrCQkJCXsgICAgICAgICAg ICAgICAgICAJCS8qIGFuZCB1cGRhdGUgY29sb3IgKi8KKysJCQkJICAgICAgICAJCQkJLyogZmly c3QgZGlnaXQgaGV4ICAqLworKwkJCQkJdmFsID0gKHRtcGtleSAqIDE2KSArICh2YWwgJSAxNik7 CisrCQkJCQlieXRlX2NvbG9yX29uKChyb3cgKiBCQVNFKSArIGNvbCwgdmFsKTsKKysJCQkJCXdw cmludHcoV2luZHMsICIlMDJYIiwgdmFsKTsKKysJCQkJfQorKwkJCQllbHNlIGlmICgoY29sICUg MykgPT0gMSkKKysJCQkJICAgICB7CQkJCQkvKiBzZWNvbmQgZGlnaXQgaGV4ICovCisrCQkJCSAg ICAgCXZhbCA9ICh2YWwgLSAoKHZhbCArIDE2KSAlIDE2KSArIHRtcGtleSk7CisrCQkJCSAgICAg CWJ5dGVfY29sb3Jfb24oKHJvdyAqIEJBU0UpICsgY29sLCB2YWwpOworKwkJCQkgICAgIAl3bW92 ZSh3aW4tPmhleCwgcm93LCBjb2wtMSk7CisrCQkJCSAgICAgCXdwcmludHcoV2luZHMsICIlMDJY IiwgdmFsKTsKKysJCQkJICAgICAJd21vdmUod2luLT5oZXgsIHJvdywgY29sKTsKKysJCQkJICAg ICB9CisgCQkJfQorIAkJCWVsc2UJCQkJLyogZWxzZS4uLiAgICAgICAgICAgICovCistCQkJICAg IHZhbCA9IGtleTsJCQkvKiB2YWwgaXMga2V5IHByZXNzZWQgKi8KKysJCQl7CisrCQkJCQkvKiB2 YWwgaXMga2V5IHByZXNzZWQgKi8KKysJCQkJdmFsID0gKFVTRV9FQkNESUMpID8gQVNDSUlfdG9f RUJDRElDW2tleV0gOiBrZXk7CisrCQkJCSAgICAgICAgICAJCQkvKiBvdXRwdXQgaXQgICAgICAg ICAgKi8KKysJCQkJYnl0ZV9jb2xvcl9vbigocm93ICogQkFTRSkgKyBjb2wsIHZhbCk7CisrCQkJ CXdwcmludHcoV2luZHMsICIlYyIsIGtleSk7CisrCQkJfQorIAorIAkJCWlmIChlZGl0SGV4KQkJ CS8qIHVwZGF0ZSBhc2NpaSB3aW4gICAqLworIAkJCXsKK0BAIC0yNDAsMTkgKzI4MSwxOCBAQCBp bnQgd2FjY2VwdGNoKFdJTlMgKndpbiwgb2ZmX3QgbGVuKQorIAkJCSAgICB3bW92ZSh3aW4tPmFz Y2lpLCByb3csIGNvbCk7CisgCQkJICAgIHdyZWZyZXNoKHdpbi0+aGV4KTsKKyAJCQl9CisrCQkJ Ynl0ZV9jb2xvcl9vZmYoKHJvdyAqIEJBU0UpICsgY29sLCB2YWwpOworIAorIAkJCXdhdHRyc2V0 KHdpbi0+aGV4LCBBX05PUk1BTCk7CisgCQkJd2F0dHJzZXQod2luLT5hc2NpaSwgQV9OT1JNQUwp OworIAkJCQorIAkJCQkJCQkvKiBlZGl0IGxpc3QgICAgICAgICAgKi8KKysJCQkJCQkJLyogZmly c3QgYWRkIHRoZSBvcmlnaW5hbCB2YWx1ZSBmb3Igc2F2ZSt1bmRvICovCisrCQkJaWYgKHNlYXJj aExpc3QoaGVhZCwgY2wpID09IC0xKSBoZWFkID0gaW5zZXJ0SXRlbShoZWFkLCBjbCwgdG1wdmFs KTsKKysJCQkJCQkJLyogdGhlbiBhZGQgdGhlIGN1cnJlbnQgdmFsdWUgKi8KKyAJCQloZWFkID0g aW5zZXJ0SXRlbShoZWFkLCBjbCwgdmFsKTsKKy0JCS8qIGNhbGxvYygpIGlzIHVzZWQgYmVjYXVz ZSBpdCBOVUxMUyBvdXQgYWxsIHJldHVybmVkIG1lbW9yeSAgKi8KKy0gICAgCQkJdG1wU3RhY2sg PSAoaGV4U3RhY2sgKikgY2FsbG9jKDEsIHNpemVvZihoZXhTdGFjaykpOworLQkJCXRtcFN0YWNr LT5jdXJyZW50TG9jID0gY2w7CistCQkJdG1wU3RhY2stPmxsaXN0CSAgICAgPSBoZWFkOworLQkJ CXRtcFN0YWNrLT5zYXZlZFZhbCAgID0gdG1wdmFsOworLQkJCXRtcFN0YWNrLT5wcmV2ICAgICAg ID0gTlVMTDsKKy0JCQlwdXNoU3RhY2soJnN0YWNrLCB0bXBTdGFjayk7CisrCQkJcHVzaFN0YWNr KCZzdGFjaywgY2wsIHRtcHZhbCk7CisrCQkJc2V0X3NhdmVkKEZBTFNFLCBXaW5kcyk7CisgCQkg ICAgfQkJCQkJLyogY29udGludWUgdG8gbmV4dAorIAkJCQkJCQkgICAgY2FzZSAgICAgICAgICAg ICAgKi8KKyAKK0BAIC0yOTcsNiArMzM3LDcgQEAgaW50IHdhY2NlcHRjaChXSU5TICp3aW4sIG9m Zl90IGxlbikKKyAJCX0KKyAJCWVsc2UKKyAJCSAgICBjdXJyZW50TGluZSAtPSAoMipNQVhZKTsK KysgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgCisgCWNhc2UgQ1RSTF9BTkQo J2QnKToKKyAJY2FzZSBLRVlfUEdETjoJCQkJCS8qIGlmIEtFWV9QR0ROLi4uICAgICAqLworQEAg LTQyOSwxMyArNDcwLDIzIEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZfdCBsZW4pCisg CQkJTUlOX0FERFJfTEVOR1RIID0gZ2V0TWluaW11bUFkZHJlc3NMZW5ndGgobWF4TG9jKGZwSU4p KTsKKyAJCQljdXJWYWwgPSBnZXRMb2NWYWwoMCk7CisgICAgICAgICAgICAgICAgICAgICB9ICAg ICAgICAgICAgICAgIAorKwkgCSAgICBzZXRfc2F2ZWQoVFJVRSwgV2luZHMpOworIAkgCSAgICBy ZXR1cm4gVFJVRTsJCQkvKiBUUlVFIGlmIHdvcmtlZCAgICAgKi8KKyAJCX0KKyAJCWJyZWFrOwor IAorIAljYXNlIENUUkxfQU5EKCdzJyk6CQkJCS8qIGlmIEYyIG9yIF5zLi4uICAgICAqLworIAlj YXNlIEtFWV9GKDIpOgkJCQkJLyogc2F2ZSB0aGUgZmlsZSAgICAgICovCistCQlzYXZlZmlsZSh3 aW4pOworKwkJaWYgKHNhdmVmaWxlKHdpbikgPT0gMCkKKysJCXsKKysJCQlzZXRfc2F2ZWQoVFJV RSwgV2luZHMpOworKwkJCWlmIChzdGFjayAhPSBOVUxMICYmIHN0YWNrLT5zYXZlZFZhbCAhPSBT QVZFUE9JTlQpCisrCQkJeworKwkJCQlwdXNoU3RhY2soJnN0YWNrLCAtMSwgU0FWRVBPSU5UKTsK KysJCQkJc2F2ZWRwb2ludCA9IFRSVUU7CisrCQkJfQorKwkJCWVsc2UgaWYgKHN0YWNrID09IE5V TEwpIHNhdmVkcG9pbnQgPSBUUlVFOworKwkJfQorIAkJYnJlYWs7CisgCisgCWNhc2UgQ1RSTF9B TkQoJ2YnKToKK0BAIC00NTEsMTQgKzUwMiwxNiBAQCBpbnQgd2FjY2VwdGNoKFdJTlMgKndpbiwg b2ZmX3QgbGVuKQorICAgICAgICAgICAgICAgICAgICAgd3JlZnJlc2god2luLT5oZXhfb3V0bGlu ZSk7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorLSAK KysKKysJCXRlbXAgPSBlZGl0SGV4ID8gc2VhcmNoaGV4IDogc2VhcmNoYXNjaWk7CisgCisgCQlp ZiAodGVtcCAhPSBOVUxMKQorIAkJeworIAkJICAgIGJ6ZXJvKFNlYXJjaFN0ciwgMTMpOworIAkJ ICAgIHN0cmNhdChTZWFyY2hTdHIsICIoIik7CistCQkgICAgaWYgKHN0cmxlbih0ZW1wKSA8PSAx MCkKKy0JCQlzdHJuY2F0KFNlYXJjaFN0ciwgdGVtcCwgc3RybGVuKHRlbXApKTsKKysJCSAgICB0 ZW1wbGVuID0gc3RybGVuKHRlbXApOworKwkJICAgIGlmICh0ZW1wbGVuIDw9IDEwKQorKwkJCXN0 cmNhdChTZWFyY2hTdHIsIHRlbXApOworIAkJICAgIGVsc2UKKyAJCSAgICB7CisgCQkJc3RybmNh dChTZWFyY2hTdHIsIHRlbXAsIDcpOworQEAgLTQ3OCw3ICs1MzEsNyBAQCBpbnQgd2FjY2VwdGNo KFdJTlMgKndpbiwgb2ZmX3QgbGVuKQorIAkJLyogdGhlIHRoaXJkIHBhcmFtZXRlciBwb3NpdGlv bnMgdGhlIGN1cnNvciBpbiB0aGUgY29ycmVjdCBsb2MqLworIAkJdG1wc3RyID0gaW5wdXRMaW5l KHdpbi0+aGV4X291dGxpbmUsIExJTkVTIC0gMSwgCisgCQkJICgoZWRpdEhleCkgPyAyMSA6IDIz KSArIAorLQkJCSAoKHN0cmxlbih0ZW1wKSA+IDEwKSA/IDEwIDogc3RybGVuKHRlbXApKSk7Cisr CQkJICgodGVtcGxlbiA+IDEwKSA/IDEwIDogdGVtcGxlbiksICFlZGl0SGV4KTsKKyAJCW5vZWNo bygpOworIAorIAkJd21vdmUod2luLT5oZXhfb3V0bGluZSwgTElORVMgLSAxLCAxKTsKK0BAIC00 OTcsOCArNTUwLDE2IEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZfdCBsZW4pCisgCQlp ZiAodG1wc3RyWzBdICE9ICdcMCcgKQkJCS8qIGVudGVyIHdhcyBoaXQgc28gICAqLworIAkJewkJ CQkJLyogZG9uJ3QgY2hhbmdlIHRlbXAgICovCisgCQkgICAgYnplcm8odGVtcCwgODEpOworLQkJ ICAgIHN0cm5jcHkodGVtcCwgdG1wc3RyLCAoc3RybGVuKHRtcHN0cikgPiA4MCkgCistCQkJICAg ID8gODAgOiBzdHJsZW4odG1wc3RyKSk7CisrCQkgICAgaWYgKHN0cmxlbih0bXBzdHIpID4gODAp CisrCQkgICAgeworKwkJCXN0cm5jcHkodGVtcCwgdG1wc3RyLCA4MCk7CisrCisrCQkJcG9wdXBX aW4oIldhcm5pbmc6IHNlYXJjaCB2YWx1ZSB0cnVuY2F0ZWQgdG8gdGhlIG1heGltdW0gODAgYnl0 ZXMiLCAtMSk7CisrCQkJcmVzdG9yZUJvcmRlcih3aW4pOwkJCS8qIHJlc3RvcmUgYm9yZGVyICAg ICAqLworKwkJCXdyZWZyZXNoKHdpbi0+aGV4X291dGxpbmUpOworKwkJICAgIH0KKysJCSAgICBl bHNlCisrCQkJc3RyY3B5KHRlbXAsIHRtcHN0cik7CisgCQl9CisgCisgCQl2YWwgPSAwOworQEAg LTUyNywyNCArNTg4LDM4IEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZfdCBsZW4pCisg CQlpZiAoKGNvdW50ICUgMiA+IDApICYmIChlZGl0SGV4KSkJLyogYWRkIGxhc3QgYnl0ZSBvbiAg ICovCisgCQkJICAgIGNoWyhjb3VudCArIDEpIC8gMl0gPSB0bXA7CisgCisrCQlnb3RvTG9jID0g LTE7CisgCQlpZiAodmFsICE9IC0xKQkJCQkvKiBpZiB2YWwgY2hlY2tzIG91dCAgKi8KKyAJCQkJ CQkJLyogc2VhcmNoIGZvciBpdCAgICAgICovCistCQkgICAgdmFsID0gaGV4U2VhcmNoKGZwSU4s IGNoLCBjdXJzb3JMb2MoY3VycmVudExpbmUsIGNvbCwKKy0JCQkgIGVkaXRIZXgsIEJBU0UpLCAo ZWRpdEhleCkgPyAoKGNvdW50KzEpLzIpIDogY291bnQpOworKwkJICAgIGdvdG9Mb2MgPSBoZXhT ZWFyY2hCTSh3aW4tPmhleF9vdXRsaW5lLCBmcElOLCBjaCwgKG9mZl90KSBjdXJzb3JMb2MoY3Vy cmVudExpbmUsIGNvbCwKKysJCQkgICAgICBlZGl0SGV4LCBCQVNFKSwgKGludCkgKGVkaXRIZXgp ID8gKChjb3VudCsxKS8yKSA6IGNvdW50KTsKKysJCWVsc2UKKysJCXsKKysJCSAgICBwb3B1cFdp bigiVmFsdWUgaXMgbm90IGhleCEiLCAtMSk7CisrCQkgICAgcmVzdG9yZUJvcmRlcih3aW4pOwkJ CS8qIHJlc3RvcmUgYm9yZGVyICAgICAqLworKwkJICAgIHdyZWZyZXNoKHdpbi0+aGV4X291dGxp bmUpOworKwkJICAgIGJyZWFrOworKwkJfQorIAorLQkJaWYgKHZhbCA9PSAtMSkgCQkJCS8qIGlm IG5vdGhpbmcgY2FtZSB1cCAqLworKwkJaWYgKGdvdG9Mb2MgPT0gLTEpIAkJCQkvKiBpZiBub3Ro aW5nIGNhbWUgdXAgKi8KKyAJCXsKKyAJCSAgICBwb3B1cFdpbigiVmFsdWUgbm90IGZvdW5kISIs IC0xKTsKKyAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVCb3JkZXIod2luKTsJCQkvKiByZXN0 b3JlIGJvcmRlciAgICAgKi8KKyAJCSAgICB3cmVmcmVzaCh3aW4tPmhleF9vdXRsaW5lKTsKKyAJ CX0KKy0JCWVsc2UgCisrCQllbHNlIGlmIChnb3RvTG9jID09IC0yKQorKwkJeworKwkJICAgIHBv cHVwV2luKCJTZWFyY2ggY2FuY2VsZWQhIiwgLTEpOworKyAgICAgICAgICAgICAgICAgICAgcmVz dG9yZUJvcmRlcih3aW4pOwkJCS8qIHJlc3RvcmUgYm9yZGVyICAgICAqLworKwkJICAgIHdyZWZy ZXNoKHdpbi0+aGV4X291dGxpbmUpOworKwkJfQorKwkJZWxzZQorIAkJeworICAgICAgICAgICAg ICAgICAgICAgZ2V0eXgoV2luZHMsIHJvdywgY29sKTsKKyAJCQkJCQkJLyogZ290byBmb3VuZCBs b2MgICAgICovCisgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TGluZSA9IGdvdG9MaW5lKGZw SU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvckxvYyhj dXJyZW50TGluZSxjb2wsZWRpdEhleCxCQVNFKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmFsLCBtYXhsaW5lcywgV2luZHMpOworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvTG9jLCBtYXhsaW5lcywgV2luZHMpOwor IAorIAkJfQorIAkJYnJlYWs7CitAQCAtNTcwLDcgKzY0NSwxMCBAQCBpbnQgd2FjY2VwdGNoKFdJ TlMgKndpbiwgb2ZmX3QgbGVuKQorIAkJCSAgICAgICBNSU5fQUREUl9MRU5HVEgsIChpbnRtYXhf dCkoKGNvdW50ICsgcm93KSAqIEJBU0UpKTsKKyAKKyAJCQkJCQkJLyogdXBkYXRlIG1lbnUgYnV0 dG9uICovCistCQlzbGtfc2V0KDYsIChwcmludEhleCkgPyAiSGV4IEFkZHIiOiJEZWMgQWRkciIs IDEpOworKwkJaWYgKEZOVU1CRVJTKQorKwkJICAgIHNsa19zZXQoNiwgKHByaW50SGV4KSA/ICI2 OkhleCBBZCI6IjY6RGVjIEFkIiwgMSk7CisrCQllbHNlCisrCQkgICAgc2xrX3NldCg2LCAocHJp bnRIZXgpID8gIkhleCBBZGRyIjoiRGVjIEFkZHIiLCAxKTsKKyAJCXNsa19ub3V0cmVmcmVzaCgp OwkJCS8qIHJlZnJlc2ggICAgICAgICAgICAqLworIAkJd25vdXRyZWZyZXNoKHdpbi0+YWRkcmVz cyk7CisgCQlicmVhazsKK0BAIC01ODQsNyArNjYyLDcgQEAgaW50IHdhY2NlcHRjaChXSU5TICp3 aW4sIG9mZl90IGxlbikKKyAKKyAJCWVjaG8oKTsJCQkJCS8qIGVjaG8gY2hhcnMgICAgICAgICAq LworIAkJZ290b0xvY1N0ciA9IGlucHV0TGluZSh3aW4tPmhleF9vdXRsaW5lLCBMSU5FUyAtIDEs IAorLQkJCSAgICAgICAgICAgICAgKHByaW50SGV4KSA/IDIxIDogMjUpOworKwkJCSAgICAgICAg ICAgICAgKHByaW50SGV4KSA/IDIxIDogMjUsIEZBTFNFKTsKKyAJCWlmIChnb3RvTG9jU3RyWzBd ID09IDI3KQkJLyogZXNjYXBlIHdhcyBoaXQgICAgICovCisgCQl7CQkJCQkvKiByZXN0b3JlICYg cmV0dXJuICAgKi8KKyAJCSAgICByZXN0b3JlQm9yZGVyKHdpbik7CitAQCAtNjIxLDI0ICs2OTks MzEgQEAgaW50IHdhY2NlcHRjaChXSU5TICp3aW4sIG9mZl90IGxlbikKKyAJCQkJCQkJLypzd2l0 Y2ggdGhlIHVuZGVybGluZSovCisgCQlnZXR5eChXaW5kcywgcm93LCBjb2wpOwkJCS8qIGN1cnJl bnQgbG9jYXRpb24gICAqLworIAkJd2F0dHJzZXQoKGVkaXRIZXgpID8gd2luLT5hc2NpaSA6IHdp bi0+aGV4LCBBX05PUk1BTCk7CistCQltdndwcmludHcoKGVkaXRIZXgpID8gd2luLT5hc2NpaSA6 IHdpbi0+aGV4LCByb3csCistCQkJICAoZWRpdEhleCkgPyBjb2wvMyA6IGNvbCozLCAKKy0JCQkg IChlZGl0SGV4KSA/ICIlYyI6ICIlMDJYIiwgCistCQkJICAoZWRpdEhleCkgPyAoKGlzcHJpbnQo Y3VyVmFsKSk/Y3VyVmFsIDogJy4nKTpjdXJWYWwpOworKworKwkJYnl0ZV9jb2xvcl9vbigocm93 ICogQkFTRSkgKyBjb2wsIGN1clZhbCk7CisrCisrCQlpZiAoZWRpdEhleCkKKysJCSAgIG12d3By aW50dyh3aW4tPmFzY2lpLCByb3csIGNvbC8zLCAiJWMiLAorKwkJICAgICAgKFVTRV9FQkNESUMp ID8gRUJDRElDW2N1clZhbF0gOiAoaXNwcmludChjdXJWYWwpKSA/IGN1clZhbCA6ICcuJyk7Cisr CQllbHNlCisrCQkgICBtdndwcmludHcod2luLT5oZXgsIHJvdywgY29sKjMsICIlMDJYIiwgY3Vy VmFsKTsKKysKKysJCWJ5dGVfY29sb3Jfb2ZmKChyb3cgKiBCQVNFKSArIGNvbCwgY3VyVmFsKTsK KysKKyAJCXdub3V0cmVmcmVzaCgoZWRpdEhleCkgPyB3aW4tPmFzY2lpIDogd2luLT5oZXgpOwor IAkJaWYgKGVkaXRIZXgpCQkJCS8qIGFscmVhZHkgaW4gaGV4IHdpbiAqLworIAkJeworIAkJICAg IFdpbmRzID0gd2luLT5hc2NpaTsJCQkvKiBjaGFuZ2UgdG8gYXNjaWkgICAgKi8KKyAJCSAgICBl b2wgPSBCQVNFOworIAkgCSAgICB3bW92ZShXaW5kcywgcm93LCAoY29sLzMpKTsKKy0JCSAgICBz bGtfc2V0KDcsICJBc2MgRWRpdCIsIDEpOworKwkJICAgIHNsa19zZXQoNywgRk5VTUJFUlMgPyAi NzpBc2MgRWQiOiJBc2MgRWRpdCIsIDEpOworIAkJfQorIAkJZWxzZQkJCQkJLyogYWxyZWFkeSBp biBhc2NpaSAgICovCisgCQl7CisgCQkgICAgV2luZHMgPSB3aW4tPmhleDsJCQkvKiBjaGFuZ2Ug dG8gaGV4IHdpbiAgKi8KKyAJCSAgICBlb2wgPSAoQkFTRSAqIDMpIC0gMTsKKyAJIAkgICAgd21v dmUoV2luZHMsIHJvdywgKGNvbCozKSk7CQorLQkJICAgIHNsa19zZXQoNywgIkhleCBFZGl0Iiwg MSk7CisrCQkgICAgc2xrX3NldCg3LCBGTlVNQkVSUyA/ICI3OkhleCBFZCI6IkhleCBFZGl0Iiwg MSk7CisgCQl9CisgCisgCQllZGl0SGV4ID0gKCFlZGl0SGV4KTsJCQkvKiBjaGFuZ2UgdGVzdCB2 YWwgICAgKi8KK0BAIC02NDYsNyArNzMxLDcgQEAgaW50IHdhY2NlcHRjaChXSU5TICp3aW4sIG9m Zl90IGxlbikKKyAKKyAJCWdldHl4KFdpbmRzLCByb3csIGNvbCk7CQkJLyogY3VycmVudCBsb2Nh dGlvbiAgICovCisgCQkvKiByZS1ib2xkIGNoYXIgaWYgdGhlIHZhbHVlIG92ZXIgdGhlIGN1cnNv ciBpcyBtb2RpZmllZCAgICAgICovCistCQlpZiAoaW5IZXhMaXN0KGN1cnNvckxvYyhjdXJyZW50 TGluZSwgY29sLCBlZGl0SGV4LCBCQVNFKSkpIAorKwkJaWYgKGNvdW50TGlzdChoZWFkLCBjdXJz b3JMb2MoY3VycmVudExpbmUsIGNvbCwgZWRpdEhleCwgQkFTRSkpID4gMSkKKyAJCXsKKyAJCSAg ICB3YXR0cm9uKChlZGl0SGV4KSA/IHdpbi0+aGV4IDogd2luLT5hc2NpaSwgQV9CT0xEKTsKKyAJ CSAgICBtdndwcmludHcoKGVkaXRIZXgpID8gd2luLT5oZXggOiB3aW4tPmFzY2lpICwgcm93LCBj b2wsIAorQEAgLTY3MiwxNCArNzU3LDMyIEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZf dCBsZW4pCisgCWNhc2UgQ1RSTF9BTkQoJ3onKToJCQkJLyogXnogdW5kbyBsYXN0IG1vZCAgICov CisgCQlnZXR5eChXaW5kcywgcm93LCBjb2wpOworIAorLQkJCQkJCQkvKiBzZXQgcHJldmlvdXMg bG9jICAgKi8KKy0JCWNsID0gKHN0YWNrID09IE5VTEwpID8gY2wgOiBzdGFjay0+Y3VycmVudExv YzsKKysJCWlmIChzdGFjayAhPSBOVUxMICYmIHN0YWNrLT5zYXZlZFZhbCA9PSBTQVZFUE9JTlQp CisrCQl7CisrCQkgICAgcG9wU3RhY2soJnN0YWNrKTsKKysJCSAgICBzYXZlZHBvaW50ID0gRkFM U0U7CisrCQl9CisgCQlpZiAoc3RhY2sgIT0gTlVMTCkKKyAJCXsKKy0KKy0JCSAgICAvKmlmIChz dGFjayAhPSBOVUxMKSB2YWwgPSBzdGFjay0+c2F2ZWRWYWw7ICAgICAgICAgICAgICAgKi8KKysJ CSAgICBjbCA9IHN0YWNrLT5jdXJyZW50TG9jOworIAkJICAgIHZhbCA9IHN0YWNrLT5zYXZlZFZh bDsKKyAJCSAgICBwb3BTdGFjaygmc3RhY2spOworKwkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBpZiB0aGVyZSBpcyBhIHNhdmUgcG9pbnQgaW4gKi8KKysJCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhlIG5leHQgdmFsdWUgb2YgdGhlIHN0YWNr ICovCisrCQkgICAgaWYgKHN0YWNrICE9IE5VTEwgJiYgc3RhY2stPnNhdmVkVmFsID09IFNBVkVQ T0lOVCkKKysJCSAgICB7CisrCQkgICAgICAgIGlmIChzYXZlZHBvaW50KSAgICAgICAvKiBhbmQg aWYgaXQncyB0aGUgbGFzdCAoY29udHJvbGxlZCAqLworKwkJICAgICAgICB7ICAgICAgICAgICAg ICAgICAgICAgLyogYnkgc2F2ZWRwb2ludCkgZ28gdG8gc2F2ZWQgbW9kZSAqLworKwkJICAgICAg ICAgICAgc2F2ZWRwb2ludCA9IEZBTFNFOworKwkJICAgICAgICAgICAgc2V0X3NhdmVkKFRSVUUs IFdpbmRzKTsKKysJCSAgICAgICAgfQorKwkJICAgICAgICBlbHNlIHNldF9zYXZlZChGQUxTRSwg V2luZHMpOworKwkJICAgICAgICBwb3BTdGFjaygmc3RhY2spOworKwkJICAgIH0KKysJCSAgICBl bHNlIGlmIChzdGFjayA9PSBOVUxMICYmIHNhdmVkcG9pbnQpCisrCQkgICAgICAgICAgICAgIHNl dF9zYXZlZChUUlVFLCBXaW5kcyk7CisrCQkgICAgICAgICBlbHNlIHNldF9zYXZlZChGQUxTRSwg V2luZHMpOworKworIAkJICAgIGhlYWQgPSBkZWxldGVOb2RlKGhlYWQsY2wpOworIAorIAorQEAg LTY5OSwzOSArODAyLDI5IEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZfdCBsZW4pCisg CQkKKyAJCSAgICBnZXR5eChXaW5kcywgcm93LCBjb2wpOworIAorLSAgIAkJICAgIGlmICgoc2Vh cmNoTGlzdChoZWFkLCBjbCkpICE9IC0xKQorKyAgIAkJICAgIGlmIChjb3VudExpc3QoaGVhZCwg Y2wpID4gMSkKKyAJCSAgICB7CQorIAkJCXdhdHRyb24od2luLT5oZXgsIEFfQk9MRCk7CisgCQkJ d2F0dHJvbih3aW4tPmFzY2lpLCBBX0JPTEQpOworIAkJICAgIH0KKysJCSAgICBieXRlX2NvbG9y X29uKChyb3cgKiBCQVNFKSArIGNvbCwgdmFsKTsKKysKKyAgICAgICAgICAgICAgICAgICAgIGlm IChlZGl0SGV4KQorIAkJICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICB3bW92ZSh3aW4t PmFzY2lpLCByb3csIChjb2wvMykpOyAgICAKKy0JCQl3cHJpbnR3KHdpbi0+YXNjaWksICIlYyIs IChVU0VfRUJDRElDKSA/IEVCQ0RJQ1t2YWxdIDoKKy0JCQkgICAgICAgKGlzcHJpbnQodmFsKSA/ IHZhbCA6IDQ2KSk7CistICAgICAgICAgICAgICAgICAgICAgICAgd21vdmUod2luLT5oZXgsIHJv dywgY29sKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICB3cmVmcmVzaCh3aW4tPmFzY2lpKTsK Ky0KKyAgICAgICAgICAgICAgICAgICAgICAgICB3cHJpbnR3KHdpbi0+aGV4LCAiJTAyWCIsIHZh bCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgd21vdmUod2luLT5oZXgsIHJvdywgY29sKTsg ICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICB3cmVmcmVzaCh3aW4tPmhleCk7CisgCQkg ICAgfQorIAkJICAgIGVsc2UKKyAJCSAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgd21v dmUod2luLT5oZXgsIHJvdywgKGNvbCozKSk7ICAgICAgCistICAgICAgICAgICAgICAgICAgICAg ICAgd3ByaW50dyh3aW4tPmhleCwgIiUwMlgiLCB2YWwpOworLSAgICAgICAgICAgICAgICAgICAg ICAgIHdtb3ZlKHdpbi0+YXNjaWksIHJvdywgY29sKTsKKy0gICAgICAgICAgICAgICAgICAgICAg ICB3cmVmcmVzaCh3aW4tPmhleCk7CistCisgCQkJd3ByaW50dyh3aW4tPmFzY2lpLCAiJWMiLCAo VVNFX0VCQ0RJQykgPyBFQkNESUNbdmFsXSA6CisgCQkJICAgICAgIChpc3ByaW50KHZhbCkgPyB2 YWwgOiA0NikpOworICAgICAgICAgICAgICAgICAgICAgICAgIHdtb3ZlKHdpbi0+YXNjaWksIHJv dywgY29sKTsgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgd3JlZnJlc2god2luLT5hc2Np aSk7CisgCQkgICAgfQorKwkJICAgIGJ5dGVfY29sb3Jfb2ZmKChyb3cgKiBCQVNFKSArIGNvbCwg dmFsKTsKKyAJCSAgICB3YXR0cnNldCh3aW4tPmhleCwgQV9OT1JNQUwpOworIAkJICAgIHdhdHRy c2V0KHdpbi0+YXNjaWksIEFfTk9STUFMKTsKKy0KKy0KKyAJCX0KKyAJCWJyZWFrOworIAorQEAg LTc0MCw3ICs4MzMsOCBAQCBpbnQgd2FjY2VwdGNoKFdJTlMgKndpbiwgb2ZmX3QgbGVuKQorIAkg ICAgcHJpbnREZWJ1ZyhoZWFkLCAtMSk7CisgCSAgICBicmVhazsKKyAjZW5kaWYKKy0JfQorKwor Kwl9IC8vIHN3aXRjaAorIAorIAlnZXR5eChXaW5kcywgcm93LCBjb2wpOwkJCQkvKiBnZXQgY3Vy IHJvdy9jb2wgICAgKi8KKyAJaWYgKGZwSU4pCitAQCAtNzY0LDI3ICs4NTgsNDEgQEAgaW50IHdh Y2NlcHRjaChXSU5TICp3aW4sIG9mZl90IGxlbikKKyAJICAgICAgICBjdXJWYWwgPSBnZXRMb2NW YWwoY3Vyc29yTG9jKGxhc3RMaW5lLCBsYXN0Q29sLCBlZGl0SGV4LCBCQVNFKSk7CisgCQl3YXR0 cnNldCgoZWRpdEhleCkgPyB3aW4tPmFzY2lpIDogd2luLT5oZXgsIEFfTk9STUFMKTsKKyAJCXdh dHRyb24oKGVkaXRIZXgpID8gd2luLT5hc2NpaSA6IHdpbi0+aGV4LAorLQkJICAoaW5IZXhMaXN0 KGN1cnNvckxvYyhsYXN0TGluZSwgbGFzdENvbCwgZWRpdEhleCwgQkFTRSkpKSA/CisrCQkgIChj b3VudExpc3QoaGVhZCwgY3Vyc29yTG9jKGxhc3RMaW5lLCBsYXN0Q29sLCBlZGl0SGV4LCBCQVNF KSkgPiAxKSA/CisgCQkgIEFfQk9MRCA6IEFfTk9STUFMKTsKKy0JCW12d3ByaW50dygoZWRpdEhl eCkgPyB3aW4tPmFzY2lpIDogd2luLT5oZXgsIGxhc3RSb3csIAorLQkJCSAgKGVkaXRIZXgpID8g bGFzdENvbC8zIDogbGFzdENvbCozLCAKKy0JCQkgIChlZGl0SGV4KSA/ICIlYyIgOiAiJTAyWCIs IAorLQkJCSAgKGVkaXRIZXgpID8gKGlzcHJpbnQoY3VyVmFsKSkgPyBjdXJWYWwgOiAnLic6IGN1 clZhbCk7CisrCisrCQlieXRlX2NvbG9yX29uKChsYXN0Um93ICogQkFTRSkgKyBsYXN0Q29sLCBj dXJWYWwpOworKworKwkJaWYgKGVkaXRIZXgpCisrCQkgICBtdndwcmludHcod2luLT5hc2NpaSwg bGFzdFJvdywgbGFzdENvbC8zLCAiJWMiLAorKwkJICAgICAgKFVTRV9FQkNESUMpID8gRUJDRElD W2N1clZhbF0gOiAoaXNwcmludChjdXJWYWwpKSA/IGN1clZhbCA6ICcuJyk7CisrCQllbHNlCisr CQkgICBtdndwcmludHcod2luLT5oZXgsIGxhc3RSb3csIGxhc3RDb2wqMywgIiUwMlgiLCBjdXJW YWwpOworKworKwkJYnl0ZV9jb2xvcl9vZmYoKGxhc3RSb3cgKiBCQVNFKSArIGxhc3RDb2wsIGN1 clZhbCk7CisrCisgCQl3bW92ZShXaW5kcywgcm93LCBjb2wpOworIAkJd2F0dHJzZXQoKGVkaXRI ZXgpID8gd2luLT5hc2NpaSA6IHdpbi0+aGV4LCBBX05PUk1BTCk7CisgCQl3bm91dHJlZnJlc2go KGVkaXRIZXgpID8gd2luLT5hc2NpaSA6IHdpbi0+aGV4KTsKKyAJICAgIH0KKysKKyAJCQkJCQkJ LyogaGlnaGxpZ2h0IG5ldyBjaGFyICovCisgCSAgICB3YXR0cm9uKChlZGl0SGV4KSA/IHdpbi0+ YXNjaWkgOiB3aW4tPmhleCwgQV9VTkRFUkxJTkUpOworLQkgICAgaWYgKGluSGV4TGlzdChjdXJz b3JMb2MoY3VycmVudExpbmUsIGNvbCwgZWRpdEhleCwgQkFTRSkpKQorKwkgICAgaWYgKGNvdW50 TGlzdChoZWFkLCBjdXJzb3JMb2MoY3VycmVudExpbmUsIGNvbCwgZWRpdEhleCwgQkFTRSkpID4g MSkKKyAJICAgICAgICB3YXR0cm9uKChlZGl0SGV4KSA/IHdpbi0+YXNjaWkgOiB3aW4tPmhleCwg QV9CT0xEKTsKKyAKKyAJICAgIGN1clZhbCA9IGdldExvY1ZhbChjdXJzb3JMb2MoY3VycmVudExp bmUsIGNvbCwgZWRpdEhleCwgQkFTRSkpOworIAorLQkgICAgbXZ3cHJpbnR3KChlZGl0SGV4KSA/ IHdpbi0+YXNjaWkgOiB3aW4tPmhleCwgcm93LCAKKy0JCSAgICAgIChlZGl0SGV4KSA/IGNvbC8z IDogY29sKjMsICAKKy0JCSAgICAgIChlZGl0SGV4KSA/ICIlYyIgOiAiJTAyWCIsIAorLQkJICAg ICAgKGVkaXRIZXgpID8gKGlzcHJpbnQoY3VyVmFsKSkgPyBjdXJWYWwgOiAnLicgOiBjdXJWYWwp OyAKKysJICAgIGJ5dGVfY29sb3Jfb24oKHJvdyAqIEJBU0UpICsgY29sLCBjdXJWYWwpOworKwor KwkgICAgaWYgKGVkaXRIZXgpCisrCSAgICAgICBtdndwcmludHcod2luLT5hc2NpaSwgcm93LCBj b2wvMywgIiVjIiwKKysJICAgICAgICAgIChVU0VfRUJDRElDKSA/IEVCQ0RJQ1tjdXJWYWxdIDog KGlzcHJpbnQoY3VyVmFsKSkgPyBjdXJWYWwgOiAnLicpOworKwkgICAgZWxzZQorKwkgICAgICAg bXZ3cHJpbnR3KHdpbi0+aGV4LCByb3csIGNvbCozLCAiJTAyWCIsIGN1clZhbCk7CisrCisrCSAg ICBieXRlX2NvbG9yX29mZigocm93ICogQkFTRSkgKyBjb2wsIGN1clZhbCk7CisrCisgCSAgICB3 YXR0cnNldCgoZWRpdEhleCkgPyB3aW4tPmFzY2lpIDogd2luLT5oZXgsIEFfTk9STUFMKTsKKyAJ ICAgIHdub3V0cmVmcmVzaCgoZWRpdEhleCkgPyB3aW4tPmFzY2lpIDogd2luLT5oZXgpOworIAl9 CitAQCAtODAzLDcgKzkxMSw4IEBAIGludCB3YWNjZXB0Y2goV0lOUyAqd2luLCBvZmZfdCBsZW4p CisgCWRvdXBkYXRlKCk7CQkJCQkvKiB1cGRhdGUgdmlzdWFsICAgICAgKi8KKyAgICAgfQorIAor LSAgICBmcmVlKHRlbXApOworKyAgICBmcmVlKHNlYXJjaGhleCk7CisrICAgIGZyZWUoc2VhcmNo YXNjaWkpOworICAgICB3aGlsZSAoc3RhY2sgIT0gTlVMTCkKKyAJcG9wU3RhY2soJnN0YWNrKTsK KyAgICAgCitAQCAtODI4LDI3ICs5MzcsMjMgQEAgdm9pZCByZXN0b3JlQm9yZGVyKFdJTlMgKndp bikKKyAgKiBEZXNjcmlwdGlvbjogIGdldHMgYSBsaW5lIG9mIGlucHV0IGZyb20gdXNlcgkJKgor ICAqIFJldHVybnM6CSByZWNlaXZlZCBzdHJpbmcJCQkqCisgXCoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLWNoYXIgKmlucHV0TGluZShX SU5ET1cgKndpbiwgaW50IGxpbmUsIGludCBjb2wpCisrY2hhciAqaW5wdXRMaW5lKFdJTkRPVyAq d2luLCBpbnQgbGluZSwgaW50IGNvbCwgYm9vbCBhbGxvd19zcGFjZSkKKyB7CisgICAgIGludCB4 OworLSAgICB1bnNpZ25lZCBsb25nIGludCBjOworKyAgICB1bnNpZ25lZCBsb25nIGludCBjLCBm aXJzdF9wcmludGFibGU7CisgICAgIGNoYXIgKmNoOworLSAgICBpbnQgYWxsb2NhdGVkID0gODE7 CisrICAgIGludCBhbGxvY2F0ZWQgPSA4MDsKKysKKysgICAgZmlyc3RfcHJpbnRhYmxlID0gYWxs b3dfc3BhY2UgPyAzMiA6IDMzOworIAorICAgICBub2VjaG8oKTsKKyAKKy0gICAgY2ggPSAoY2hh ciAqKW1hbGxvYyhhbGxvY2F0ZWQpOwkJCQkvKiBhbGxvY2F0ZSBzcGFjZSAgICAgKi8KKysgICAg Y2ggPSAoY2hhciAqKW1hbGxvYyhhbGxvY2F0ZWQrMSk7CQkJCS8qIGFsbG9jYXRlIHNwYWNlICAg ICAqLworIAorICAgICB3bW92ZSh3aW4sIGxpbmUsIGNvbCk7CisgCisgICAgIGZvciAoeCA9IDA7 IChjID0gd2dldGNoKHdpbikpICE9IDEwOyB4KyspIAorICAgICB7CistCWlmICh4ID4gMCAmJiB4 ID49IGFsbG9jYXRlZCkKKy0JeworLQkJY2ggPSAoY2hhciopcmVhbGxvYyhjaCwgeCArIDEpOwor LQkJYWxsb2NhdGVkID0geCArIDE7CistCX0KKy0JCisgICAgICAgICB3Y2xydG9lb2wod2luKTsJ CQkJCS8qIGNsZWFyIGxpbmUgICAgICAgICAqLworICAgICAgICAgaWYgKGMgPT0gJ1xiJyB8fCBj ID09IDEyNykgCQkJLyogZ2V0IGJhY2tzcGFjZSAgICAgICovCisgCXsKK0BAIC04NTcsMTYgKzk2 MiwyMSBAQCBjaGFyICppbnB1dExpbmUoV0lORE9XICp3aW4sIGludCBsaW5lLCBpbnQgY29sKQor ICAgICAgICAgICAgIGNoW3hdID0gJ1wwJzsKKyAgICAgICAgICAgICB4IC09IDI7CQkJCQkvKiBt b2RpZnkgcHRyICAgICAgICAgKi8KKyAgICAgICAgIH0KKy0gICAgICAgIGVsc2UgaWYgKGMgPiAz MiAmJiBjIDwgMTI3KSAJCQkvKiBpZiBwcmludGFibGUgY2hhciAgKi8KKy0JeworLSAgICAgICAg ICAgIGNoW3hdID0gYzsKKy0gICAgICAgICAgICB3YWRkY2god2luLCBjaFt4XSk7CistICAgICAg ICB9CisgCWVsc2UgaWYgKGMgPT0gMjcpCQkJCS8qIGlmIHRoZSBlc2NhcGUga2V5ICAqLworIAl7 ICAgCQkJCQkJLyogaXMgcHJlc3NlZCwgcmV0dXJuICovCisgCSAgICBjaFswXSA9IDI3OwkJCQkJ Lyogc2V0dGluZyBjaCB0byAweGZmICovCisgCSAgICByZXR1cm4gY2g7CQkJCQkKKyAJfQorKwll bHNlIGlmICh4ID09IGFsbG9jYXRlZCkKKysJeworKwkgICAgeC0tOworKwkgICAgY29udGludWU7 CisrCX0KKysJZWxzZSBpZiAoYyA+PSBmaXJzdF9wcmludGFibGUgJiYgYyA8IDEyNykgCQkJLyog aWYgcHJpbnRhYmxlIGNoYXIgICovCisrCXsKKysJICAgIGNoW3hdID0gYzsKKysJICAgIHdhZGRj aCh3aW4sIGNoW3hdKTsKKysJfQorICAgICAgICAgZWxzZSAJCQkJCQkvKiBpZiBhbnl0aGluZyBl bHNlICAgKi8KKyAJeworICAgICAgICAgICAgIGNoW3hdID0gJ1wwJzsKK2RpZmYgLS1naXQgYS9z cmMvY29sb3IuYyBiL3NyYy9jb2xvci5jCitpbmRleCA0MDdjMmMzLi45ZjI1OGIyIDEwMDY0NAor LS0tIGEvc3JjL2NvbG9yLmMKKysrKyBiL3NyYy9jb2xvci5jCitAQCAtMSw1ICsxLDYgQEAKKyAv KgorICAqIENvcHlyaWdodCAoYykgMjAxNSBKYXZpZXIgRXNjYWxhZGEgR8OzbWV6CisrICogQ29w eXJpZ2h0IChDKSAyMDIwLDIwMjEgcHJzbyBhdCBnaXRodWIsIGZpeGVzIGFuZCBpbXByb3ZlbWVu dHMKKyAgKi8KKyAKKyAjaW5jbHVkZSAiaGV4LmgiCitAQCAtMTMsMTggKzE0LDMyIEBAIGJvb2wg Y29sb3JfZW5hYmxlZDsKKyB2b2lkIGluaXRfY29sb3JzKHZvaWQpCisgeworICAgICBjb2xvcl9l bmFibGVkID0gaGFzX2NvbG9ycygpOworLSAgICBpZihjb2xvcl9lbmFibGVkKQorKyAgICBpZihj b2xvcl9lbmFibGVkICYmIGNvbG9yX2xldmVsPjApCisgICAgIHsKKyAgICAgICAgIHN0YXJ0X2Nv bG9yKCk7CistICAgICAgICBpbml0X3BhaXIoMSwgQ09MT1JfQkxBQ0ssICAgQ09MT1JfQkxBQ0sp OworLSAgICAgICAgaW5pdF9wYWlyKDIsIENPTE9SX1JFRCwgICAgIENPTE9SX0JMQUNLKTsKKy0g ICAgICAgIGluaXRfcGFpcigzLCBDT0xPUl9HUkVFTiwgICBDT0xPUl9CTEFDSyk7CistICAgICAg ICBpbml0X3BhaXIoNCwgQ09MT1JfWUVMTE9XLCAgQ09MT1JfQkxBQ0spOworLSAgICAgICAgaW5p dF9wYWlyKDUsIENPTE9SX0JMVUUsICAgIENPTE9SX0JMQUNLKTsKKy0gICAgICAgIGluaXRfcGFp cig2LCBDT0xPUl9NQUdFTlRBLCBDT0xPUl9CTEFDSyk7CistICAgICAgICBpbml0X3BhaXIoNywg Q09MT1JfQ1lBTiwgICAgQ09MT1JfQkxBQ0spOworLSAgICAgICAgaW5pdF9wYWlyKDgsIENPTE9S X1dISVRFLCAgIENPTE9SX0JMQUNLKTsKKy0KKysgICAgICAgIGlmIChURVJNX0NPTE9SUykKKysg ICAgICAgIHsKKysgICAgICAgICAgICB1c2VfZGVmYXVsdF9jb2xvcnMoKTsKKysgICAgICAgICAg ICBpbml0X3BhaXIoMSwgQ09MT1JfQkxBQ0ssICAgLTEpOworKyAgICAgICAgICAgIGluaXRfcGFp cigyLCBDT0xPUl9SRUQsICAgICAtMSk7CisrICAgICAgICAgICAgaW5pdF9wYWlyKDMsIENPTE9S X0dSRUVOLCAgIC0xKTsKKysgICAgICAgICAgICBpbml0X3BhaXIoNCwgQ09MT1JfWUVMTE9XLCAg LTEpOworKyAgICAgICAgICAgIGluaXRfcGFpcig1LCBDT0xPUl9CTFVFLCAgICAtMSk7CisrICAg ICAgICAgICAgaW5pdF9wYWlyKDYsIENPTE9SX01BR0VOVEEsIC0xKTsKKysgICAgICAgICAgICBp bml0X3BhaXIoNywgQ09MT1JfQ1lBTiwgICAgLTEpOworKyAgICAgICAgICAgIGluaXRfcGFpcig4 LCBDT0xPUl9XSElURSwgICAtMSk7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAg ICB7CisrICAgICAgICAgICAgaW5pdF9wYWlyKDEsIENPTE9SX0JMQUNLLCAgIENPTE9SX0JMQUNL KTsKKysgICAgICAgICAgICBpbml0X3BhaXIoMiwgQ09MT1JfUkVELCAgICAgQ09MT1JfQkxBQ0sp OworKyAgICAgICAgICAgIGluaXRfcGFpcigzLCBDT0xPUl9HUkVFTiwgICBDT0xPUl9CTEFDSyk7 CisrICAgICAgICAgICAgaW5pdF9wYWlyKDQsIENPTE9SX1lFTExPVywgIENPTE9SX0JMQUNLKTsK KysgICAgICAgICAgICBpbml0X3BhaXIoNSwgQ09MT1JfQkxVRSwgICAgQ09MT1JfQkxBQ0spOwor KyAgICAgICAgICAgIGluaXRfcGFpcig2LCBDT0xPUl9NQUdFTlRBLCBDT0xPUl9CTEFDSyk7Cisr ICAgICAgICAgICAgaW5pdF9wYWlyKDcsIENPTE9SX0NZQU4sICAgIENPTE9SX0JMQUNLKTsKKysg ICAgICAgICAgICBpbml0X3BhaXIoOCwgQ09MT1JfV0hJVEUsICAgQ09MT1JfQkxBQ0spOworKyAg ICAgICAgfQorICAgICB9CisgfQorIAorQEAgLTM1LDEwICs1MCwxNiBAQCB2b2lkIGluaXRfY29s b3JzKHZvaWQpCisgaW50IGdldF9ieXRlX2NvbG9yKGludG1heF90IGFkZHJlc3MsIGNoYXIgYykK KyB7CisgICAgIFVOVVNFRChhZGRyZXNzKTsKKy0gICAgaWYgKGMgPT0gMHgwMCkgeworLSAgICAg ICAgcmV0dXJuIENPTE9SX1BBSVIoNSk7CistICAgIH0KKy0gICAgcmV0dXJuIEFfTk9STUFMOwor KyAgICBpZiAoKHVuc2lnbmVkIGNoYXIpIGMgPT0gMHgwMCkKKysgICAgICAgIHJldHVybiAoKGNv bG9yX2xldmVsPjEpID8gQ09MT1JfUEFJUig1KSA6IEFfTk9STUFMKTsKKysKKysgICAgaWYgKGNv bG9yX2xldmVsPjIpCisrICAgICAgaWYgKCgodW5zaWduZWQgY2hhcikgYyA+PSAweDIwKSAmJiAo KHVuc2lnbmVkIGNoYXIpIGMgPD0gMHg3RSkpIHsKKysgICAgICAgICAgcmV0dXJuIENPTE9SX1BB SVIoOCk7CisrICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQgY2hhcikgYyA9PSAweEZGKSB7Cisr ICAgICAgICAgIHJldHVybiBDT0xPUl9QQUlSKDIpOworKyAgICAgIH0gZWxzZSByZXR1cm4gQ09M T1JfUEFJUig3KTsKKysgICAgZWxzZSByZXR1cm4gQV9OT1JNQUw7CisgfQorIAorIHZvaWQgYnl0 ZV9jb2xvcl9vbihpbnRtYXhfdCBhZGRyZXNzLCBjaGFyIGMpCitAQCAtNjYsNyArODcsNyBAQCB2 b2lkIGJ5dGVfY29sb3Jfb2ZmKGludG1heF90IGFkZHJlc3MsIGNoYXIgYykKKyBpbnQgZ2V0X2Fk ZHJlc3NfY29sb3IoaW50bWF4X3QgYWRkcmVzcykKKyB7CisgICBVTlVTRUQoYWRkcmVzcyk7Cist ICByZXR1cm4gQ09MT1JfUEFJUig0KTsKKysgIHJldHVybiAoKGNvbG9yX2xldmVsPjApID8gQ09M T1JfUEFJUig0KSA6IEFfTk9STUFMKTsKKyB9CisgCisgdm9pZCBhZGRyZXNzX2NvbG9yX29uKGlu dG1heF90IGFkZHJlc3MpCitAQCAtODEsNCArMTAyLDQgQEAgdm9pZCBhZGRyZXNzX2NvbG9yX29m ZihpbnRtYXhfdCBhZGRyZXNzKQorICAgaWYoY29sb3JfZW5hYmxlZCkgeworICAgICAgIHdhdHRy b24od2luZG93cy0+YWRkcmVzcywgZ2V0X2FkZHJlc3NfY29sb3IoYWRkcmVzcykpOworICAgfQor LX0KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK30KK2RpZmYgLS1naXQgYS9zcmMvZmls ZS5jIGIvc3JjL2ZpbGUuYworaW5kZXggODYyMGE4ZS4uMWY1NjljMSAxMDA2NDQKKy0tLSBhL3Ny Yy9maWxlLmMKKysrKyBiL3NyYy9maWxlLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKipcCisgICogIENvcHlyaWdodCAoQykgMjAwMSwgaGV4Y3Vyc2UgaXMgd3JpdHRl biBieSBKZXdmaXNoIGFuZCBBcm1vdGggICAgICAgICAgICAgKgorKyAqICBDb3B5cmlnaHQgKEMp IDIwMjAtMjAyMiBwcnNvIGF0IGdpdGh1YiwgZml4ZXMgYW5kIGltcHJvdmVtZW50cyAgICAgICAg ICAgICoKKyAgKgkJCQkJCQkJCSAgICAgICoKKyAgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICAgICAqCisgICog IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5ICAgICAgKgorQEAgLTI2LDU3ICsyNyw3OCBAQAorIFwqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIHZvaWQgb3V0bGlu ZShGSUxFICpmcCwgb2ZmX3QgbGluZW51bSkKKyB7CistICAgIGludCBpLCBjLCB0bXBbQkFTRV07 CQkJCQkvKiBob2xkcyBjaGFyIHZhbHVlcyAgKi8KKysgICAgaW50IGksIGMsIHRtcFtCQVNFXSwJ CQkJCS8qIGhvbGRzIGNoYXIgdmFsdWVzICAqLworKyAgICAgICAgY2xyc3RhdGhleCwgY2xyc3Rh dGFzY2lpOworKyAgICBib29sIGJvbGRbQkFTRV07CisgICAgIGhleExpc3QgKnRtcEhlYWQgPSBo ZWFkOwkJCQkJLyogdG1wIGxpbmtsaXN0IGhlYWQgICovCisrICAgIG9mZl90IGxvY2Jhc2UgPSBs aW5lbnVtICogQkFTRSwgbG9jYmFzZWk7CisgCistICAgIGZvciAoaSA9IDA7IGkgPCBCQVNFOyBp KyspCQkJCQkvKiBzZXQgdmFscyB0byBFT0YgICAgKi8KKy0JCXRtcFtpXSA9IC0xOworLQorLSAg ICB3aGlsZSAodG1wSGVhZCAhPSBOVUxMICYmIHRtcEhlYWQtPmxvYyA8IChsaW5lbnVtICogQkFT RSkpCisrICAgIHdoaWxlICh0bXBIZWFkICE9IE5VTEwgJiYgdG1wSGVhZC0+bG9jIDwgbG9jYmFz ZSkKKyAJCXRtcEhlYWQgPSB0bXBIZWFkLT5uZXh0OwkJCQkvKiBhZHZhbmNlIHRlbXAgaGVhZCAg Ki8KKyAKKyAgICAgZm9yIChpID0gMDsgaSA8IEJBU0U7IGkrKykgCistCXsKKy0JCXdoaWxlICh0 bXBIZWFkICE9IE5VTEwgJiYgKHRtcEhlYWQtPmxvYyA8ICgobGluZW51bSAqIEJBU0UpICsgaSkp KQorKyAgICB7CisrCQlsb2NiYXNlaSA9IGxvY2Jhc2UgKyBpOworKwkJd2hpbGUgKHRtcEhlYWQg IT0gTlVMTCAmJiAodG1wSGVhZC0+bG9jIDwgbG9jYmFzZWkpKQorIAkJCXRtcEhlYWQgPSB0bXBI ZWFkLT5uZXh0OworLQkJCistCQlpZiAodG1wSGVhZCAhPSBOVUxMICYmICh0bXBIZWFkLT5sb2Mg PT0gKChsaW5lbnVtICogQkFTRSkgKyBpKSkpCisrCisrCQlpZiAodG1wSGVhZCAhPSBOVUxMICYm ICh0bXBIZWFkLT5sb2MgPT0gbG9jYmFzZWkpKQorIAkJewkJCQkJCQkJCQkvKnN0b3JlIHZhbCBm cm9tIGxsaXN0Ki8KKyAJCQl0bXBbaV0gPSB0bXBIZWFkLT52YWw7CisgCQkJdG1wSGVhZCA9IHRt cEhlYWQtPm5leHQ7CisrCQkJaWYgKHRtcEhlYWQgIT0gTlVMTCAmJiB0bXBIZWFkLT5sb2MgPT0g bG9jYmFzZWkpCisrCQkJICAgICBib2xkW2ldID0gVFJVRTsgICAgICAgLyogaWYgdGhlcmUgaXMg YXQgbGVhc3QgMiB2YWx1ZXMgc2V0IGJvbGQgKi8KKysJCQllbHNlIGJvbGRbaV0gPSBGQUxTRTsK KysJCX0KKysJCWVsc2UKKysJCXsKKysJCQl0bXBbaV0gPSAtMTsgICAgICAgIC8qIHNldCB2YWwg dG8gRU9GICAgICovCisrCQkJYm9sZFtpXSA9IEZBTFNFOworIAkJfQorICAgICB9CisgCistICAg IHdjbHJ0b2VvbCh3aW5kb3dzLT5oZXgpOwkJCQkJLyogY2xlYXIgbGluZXMgICAgICAgICovCist ICAgIHdjbHJ0b2VvbCh3aW5kb3dzLT5hc2NpaSk7CisrICAgIGNscnN0YXRoZXggPSB3Y2xydG9l b2wod2luZG93cy0+aGV4KTsJCQkJCS8qIGNsZWFyIGxpbmVzICAgICAgICAqLworKyAgICBjbHJz dGF0YXNjaWkgPSB3Y2xydG9lb2wod2luZG93cy0+YXNjaWkpOworIAorICAgICAvKnByaW50IGxp bmUncyBhZGRyZXNzKi8KKy0gICAgYWRkcmVzc19jb2xvcl9vbigoaW50bWF4X3QpKGxpbmVudW0g KiBCQVNFKSk7CistICAgIHdwcmludHcod2luZG93cy0+YWRkcmVzcywgKHByaW50SGV4KSA/ICIl MCpqWCAiOiIlMCpqZCAiLCBNSU5fQUREUl9MRU5HVEgsIChpbnRtYXhfdCkobGluZW51bSAqIEJB U0UpKTsKKy0gICAgYWRkcmVzc19jb2xvcl9vZmYoKGludG1heF90KShsaW5lbnVtICogQkFTRSkp OworKyAgICBhZGRyZXNzX2NvbG9yX29uKChpbnRtYXhfdCkobG9jYmFzZSkpOworKyAgICB3cHJp bnR3KHdpbmRvd3MtPmFkZHJlc3MsIChwcmludEhleCkgPyAiJTAqalggIjoiJTAqamQgIiwgTUlO X0FERFJfTEVOR1RILCAoaW50bWF4X3QpKGxvY2Jhc2UpKTsKKysgICAgYWRkcmVzc19jb2xvcl9v ZmYoKGludG1heF90KShsb2NiYXNlKSk7CisgCisgICAgIHJld2luZChmcCk7CQkJCQkJCQkJLyog cmVzZXQgdGhlIGZpbGUgcHRyICovCistICAgIGZzZWVrbyhmcCwgKGxpbmVudW0gKiBCQVNFKSwg MCk7CQkJCS8qIHNldCBuZXcgcG9zIGZvciBmcCAqLworKyAgICBmc2Vla28oZnAsIGxvY2Jhc2Us IDApOwkJCQkvKiBzZXQgbmV3IHBvcyBmb3IgZnAgKi8KKyAKKyAgICAgZm9yIChpID0gMDsgaSA8 IEJBU0UgJiYgKGMgPSBnZXRjKGZwKSkgIT0gRU9GOyBpKyspCisgICAgIHsKKysJCWxvY2Jhc2Vp ID0gbG9jYmFzZSArIGk7CisgCQlpZiAodG1wW2ldICE9IC0xKSAJCQkJCQkvKiB3aGlsZSBub3Qg RU9GICAgICAgKi8KKy0JCXsJYyA9IHRtcFtpXTsJCQkJCQkJLyogc3RvcmUgdmFsIGluIGMgICAg ICovCisrCQkJYyA9IHRtcFtpXTsJCQkJCQkJLyogc3RvcmUgdmFsIGluIGMgICAgICovCisrCQlp ZiAoYm9sZFtpXSkKKysJCXsKKyAJCQl3YXR0cm9uKHdpbmRvd3MtPmFzY2lpLCBBX0JPTEQpOwor IAkJCXdhdHRyb24od2luZG93cy0+aGV4LCBBX0JPTEQpOworIAkJfQorLSAgICAgICAgYnl0ZV9j b2xvcl9vbigobGluZW51bSAqIEJBU0UpICsgaSwgYyk7CisrCQlieXRlX2NvbG9yX29uKGxvY2Jh c2VpLCBjKTsKKyAJCXdwcmludHcod2luZG93cy0+aGV4LCAiJTAyWCAiLCBjKTsJCS8qIHByaW50 IG91dCBoZXggY2hhciAqLworIAkJaWYgKFVTRV9FQkNESUMpCisgCQkJd3ByaW50dyh3aW5kb3dz LT5hc2NpaSwgIiVjIiwgRUJDRElDW2NdKTsvKiBwcmludCBFQkNESUMgY2hhciAqLworLQkJZWxz ZQkJCQkJCQkJCS8qIHByaW50IEFTQ0lJICBjaGFyICovCistICAgICAgICAgICAgd3ByaW50dyh3 aW5kb3dzLT5hc2NpaSwgKGlzcHJpbnQoYykpID8gIiVjIjoiLiIsIGMpOworLSAgICAgICAgYnl0 ZV9jb2xvcl9vZmYoKGxpbmVudW0gKiBCQVNFKSArIGksIGMpOworLSAgICAgICAgaWYgKHRtcFtp XSAhPSAtMSkgeworLSAgICAgICAgICAgIHdhdHRyb2ZmKHdpbmRvd3MtPmFzY2lpLCBBX0JPTEQp OworLSAgICAgICAgICAgIHdhdHRyb2ZmKHdpbmRvd3MtPmhleCwgQV9CT0xEKTsKKy0gICAgICAg IH0KKysJCWVsc2UJCQkJCQkvKiBwcmludCBBU0NJSSAgY2hhciAqLworKwkJCXdwcmludHcod2lu ZG93cy0+YXNjaWksIChpc3ByaW50KGMpKSA/ICIlYyI6Ii4iLCBjKTsKKysJCWJ5dGVfY29sb3Jf b2ZmKGxvY2Jhc2VpLCBjKTsKKysJCWlmIChib2xkW2ldKQorKwkJeworKwkJCXdhdHRyb2ZmKHdp bmRvd3MtPmFzY2lpLCBBX0JPTEQpOworKwkJCXdhdHRyb2ZmKHdpbmRvd3MtPmhleCwgQV9CT0xE KTsKKysJCX0KKyAgICAgfQorKwkJCS8qIHdvcmthcm91bmQgdG8gYSBzdHJhbmdlIGJ1ZywgaW4g c29tZSBjYXNlcyAqLworKwkJCS8qIHdjbHJ0b2VvbCgpIGRvZXNuJ3Qgd29yayBmb3IgdGhlIGxh c3QgbGluZSAqLworKyAgICBpZiAoY2xyc3RhdGhleD09RVJSIHx8IGNscnN0YXRhc2NpaT09RVJS KQorKwkJZm9yICg7IGkgPCBCQVNFOyBpKyspCisrCQl7CisrCQkJd3ByaW50dyh3aW5kb3dzLT5o ZXgsICIgICAiKTsKKysJCQl3cHJpbnR3KHdpbmRvd3MtPmFzY2lpLCAiICIpOworKwkJfQorIH0K KyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKlwKK0BAIC05MCw2ICsxMTIsMzEgQEAgb2ZmX3QgbWF4TG9jKEZJTEUgKmZwKQorICAgICBy ZXR1cm4oZnRlbGxvKGZwKSk7CQkJCS8qIHJldHVybiB2YWwgYXQgRU9GICAqLworIH0KKyAKKysv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwK KysgKiBEZXNjcmlwdGlvbjogZW50ZXJzIG9yIGV4aXRzIGZyb20gbW9kaWZpZWQgbW9kZTogICAg KgorKyAqICAgICAgc2V0IG9yIHJlc2V0IHNhdmVkLCBhbmQgd3JpdGUgb3IgcmVzdG9yZSAgICAg ICAqCisrICogICAgICBtb2RlIGluZGljYXRvciAoKikgYXQgdG9wIG9mIGhleCB3aW5kb3cgICAg ICAgICoKKytcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKyt2b2lkIHNldF9zYXZlZChib29sIHNhdiwgV0lORE9XICp3aW4pCisreworKyAg ICBpbnQgeSwgeDsKKysKKysgICAgZ2V0eXgod2luLCB5LCB4KTsKKysgICAgaWYgKCAoc2F2ZWQg PSBzYXYpICkgIC8qIHNldCwgbm90IGNvbXBhcmUgKi8KKysgICAgeworKyAgICAgICAgbXZ3YWRk Y2god2luZG93cy0+aGV4X291dGxpbmUsIDAsIE1JTl9BRERSX0xFTkdUSCszLCBBQ1NfSExJTkUp OworKyAgICAgICAgbXZ3YWRkY2god2luZG93cy0+aGV4X291dGxpbmUsIDAsIE1JTl9BRERSX0xF TkdUSCs0LCBBQ1NfSExJTkUpOworKyAgICAgICAgbXZ3YWRkY2god2luZG93cy0+aGV4X291dGxp bmUsIDAsIE1JTl9BRERSX0xFTkdUSCs1LCBBQ1NfSExJTkUpOworKyAgICAgICAgd25vdXRyZWZy ZXNoKHdpbmRvd3MtPmhleF9vdXRsaW5lKTsKKysgICAgfQorKyAgICBlbHNlCisrICAgIHsKKysg ICAgICAgIG12d3ByaW50dyh3aW5kb3dzLT5oZXhfb3V0bGluZSwgMCwgTUlOX0FERFJfTEVOR1RI KzMsICIgKiAiKTsKKysgICAgICAgIHdub3V0cmVmcmVzaCh3aW5kb3dzLT5oZXhfb3V0bGluZSk7 CisrICAgIH0KKysgICAgd21vdmUod2luLCB5LCB4KTsKKyt9CisrCisgLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwKKyAgKiBEZXNjcmlwdGlv bjogcHJpbnRzIG91dCB0aGUgY29tbWFuZCBsaW5lIGhlbHAgaW5mbyAqCisgICoJCXRoaXMgZnVu Y3Rpb24gZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nKgorQEAgLTk5LDE0ICsxNDYsMjEgQEAgdm9p ZCBwcmludF91c2FnZSgpCisgICAgIGNoYXIgKnZlciA9IEhWRVJTSU9OOyAKKyAKKyAgICAgcHJp bnRmKCJoZXhjdXJzZSwgdmVyc2lvbiAlcyBieSBKYW1lcyBTdGVwaGVuc29uIGFuZCBMb25ueSBH b21lc1xuIix2ZXIpOworLSAgICBwcmludGYoIlxudXNhZ2U6IGhleGN1cnNlIFstP3xoZWxwXSBb LWFdIFstciBybnVtXSBbLW8gb3V0cHV0ZmlsZV0gIik7IAorLSAgICBwcmludGYoIltbLWldIGlu ZmlsZV1cblxuIik7CistICAgIHByaW50ZigiICAgIC1hXHRcdE91dHB1dCBhZGRyZXNzZXMgaW4g ZGVjaW1hbCBmb3JtYXQgaW5pdGlhbGx5XG4iKTsKKy0gICAgcHJpbnRmKCIgICAgLWVcdFx0T3V0 cHV0IGNoYXJhY3RlcnMgaW4gRUJDRElDIGZvcm1hdCByYXRoZXIgdGhhbiBBU0NJSVxuIik7IAor LSAgICBwcmludGYoIiAgICAtciBybnVtXHRSZXNpemUgdGhlIGRpc3BsYXkgdG8gXCJybnVtXCIg Ynl0ZXMgd2lkZVxuIik7CistICAgIHByaW50ZigiICAgIC1vIG91dGZpbGVcdFdyaXRlIG91dHB1 dCB0byBvdXRmaWxlIGJ5IGRlZmF1bHRcbiIpOyAKKy0gICAgcHJpbnRmKCIgICAgLT8gfCAtaGVs cFx0RGlzcGxheSB1c2FnZSBhbmQgdmVyc2lvbiBvZiBoZXhjdXJzZSBwcm9ncmFtXG4iKTsKKy0g ICAgcHJpbnRmKCIgICAgWy1pXSBpbmZpbGVcdFJlYWQgZnJvbSBkYXRhIGZyb20gaW5maWxlICgt aSByZXF1aXJlZCBpZiBub3QgbGFzdCBhcmd1bWVudClcblxuIik7CisrICAgIHByaW50ZigidXNh Z2U6IGhleGN1cnNlIFstP3xoZWxwXSBbLWFdIFstYyBjb2xvcmxldmVsXSBbLWVdIFstZl0gWy1v IG91dHB1dGZpbGVdICIpOworKyAgICBwcmludGYoIlstciBybnVtXSBbLXRdIFtbLWldIGluZmls ZV1cbiIpOworKyAgICBwcmludGYoIiAgICAtPyB8IC1oZWxwXHRcdERpc3BsYXkgdXNhZ2UgYW5k IHZlcnNpb24gb2YgaGV4Y3Vyc2UgcHJvZ3JhbVxuIik7CisrICAgIHByaW50ZigiICAgIC1hXHRc dFx0T3V0cHV0IGFkZHJlc3NlcyBpbiBkZWNpbWFsIGZvcm1hdCBpbml0aWFsbHlcbiIpOworKyAg ICBwcmludGYoIiAgICAtYyBjb2xvcmxldmVsXHRTZXQgdGhlIGNvbG9yIGxldmVsXG4iKTsKKysg ICAgcHJpbnRmKCIgICAgXHRcdFx0XHQwOiBubyBjb2xvcnNcbiIpOworKyAgICBwcmludGYoIiAg ICBcdFx0XHRcdDE6IG9ubHkgY29sb3IgZm9yIGFkZHJlc3Nlc1xuIik7CisrICAgIHByaW50Zigi ICAgIFx0XHRcdFx0MjogMSArIGNvbG9yIGZvciAwMCAoZGVmYXVsdCBpZiB0ZXJtaW5hbCBzdXBw b3J0cyBjb2xvcilcbiIpOworKyAgICBwcmludGYoIiAgICBcdFx0XHRcdDM6IG11bHRpY29sb3Ig YnkgRnJhbmtTYW5zQ1xuIik7CisrICAgIHByaW50ZigiICAgIC1lXHRcdFx0T3V0cHV0IGNoYXJh Y3RlcnMgaW4gRUJDRElDIGZvcm1hdCByYXRoZXIgdGhhbiBBU0NJSVxuIik7CisrICAgIHByaW50 ZigiICAgIC1mXHRcdFx0U2hvdyBmdW5jdGlvbiBrZXkgbnVtYmVycyBpbiBsYWJlbHNcbiIpOwor KyAgICBwcmludGYoIiAgICAtbyBvdXRmaWxlXHRcdFdyaXRlIG91dHB1dCB0byBvdXRmaWxlIGJ5 IGRlZmF1bHRcbiIpOworKyAgICBwcmludGYoIiAgICAtciBybnVtXHRcdFJlc2l6ZSB0aGUgZGlz cGxheSB0byBcInJudW1cIiBieXRlcyB3aWRlXG4iKTsKKysgICAgcHJpbnRmKCIgICAgLXRcdFx0 XHRLZWVwIGNvbG9ycyBkZWZpbmVkIGJ5IHRlcm1pbmFsXG4iKTsKKysgICAgcHJpbnRmKCIgICAg Wy1pXSBpbmZpbGVcdFx0UmVhZCBmcm9tIGRhdGEgZnJvbSBpbmZpbGUgKC1pIHJlcXVpcmVkIGlm IG5vdCBsYXN0IGFyZ3VtZW50KVxuXG4iKTsKKyB9CisgCisgLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcCitAQCAtMTQzLDcgKzE5Nyw3IEBA IGludCBvcGVuZmlsZShXSU5TICp3aW4pCisgCWlmICghZnBJTmZpbGVuYW1lKQorICAgICAgICAg ZnBJTmZpbGVuYW1lID0gKGNoYXIgKikgbWFsbG9jKDgxKTsgICAgICAgICAgICAgLyogYWxsb2Nh dGUgaWYgTlVMTCAgICovCisgCistICAgIGNoID0gaW5wdXRMaW5lKHdpbi0+aGV4X291dGxpbmUs IExJTkVTIC0gMSwgMjEpOwkvKiBnZXQgZmlsZW5hbWUgICAgICAgKi8KKysgICAgY2ggPSBpbnB1 dExpbmUod2luLT5oZXhfb3V0bGluZSwgTElORVMgLSAxLCAyMSwgVFJVRSk7CS8qIGdldCBmaWxl bmFtZSAgICAgICAqLworIAorICAgICBpZiAoY2hbMF0gPT0gMjcpCQkJCQkJCQkJLyogaWYgZXNj YXBlIHdhcyBoaXQgICovCisgICAgIHsKK0BAIC0yMDMsNyArMjU3LDcgQEAgaW50IHNhdmVmaWxl KFdJTlMgKndpbikKKyAKKyAgICAgd3JlZnJlc2god2luLT5oZXhfb3V0bGluZSk7ICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIHJlZnJlc2ggd2luZG93ICAgICAqLworIAorLSAgICBjaCA9IGlu cHV0TGluZSh3aW4tPmhleF9vdXRsaW5lLCBMSU5FUyAtIDEsIDIxKTsJLyogZ2V0IGZpbGVuYW1l ICAgICAgICovCisrICAgIGNoID0gaW5wdXRMaW5lKHdpbi0+aGV4X291dGxpbmUsIExJTkVTIC0g MSwgMjEsIFRSVUUpOwkvKiBnZXQgZmlsZW5hbWUgICAgICAgKi8KKyAKKyAgICAgaWYgKGNoWzBd ICE9IDI3KQkJCQkJCS8qaWYgZXNjYXBlIHdhc24ndCBoaXQqLworICAgICB7CitAQCAtMjI1LDYg KzI3OSw3IEBAIGludCBzYXZlZmlsZShXSU5TICp3aW4pCisgCX0KKyAJCisgCS8qd3JpdGUgdG8g ZmlsZSAgICAgICAqLworKwlwb3B1cFdpbigiU2F2aW5nIGZpbGUuLi4iLCAtMik7CisgCWlmICgh d3JpdGVDaGFuZ2VzKCkpCisgCSAgICBwb3B1cFdpbigiVGhlIGZpbGUgaGFzIGJlZW4gc2F2ZWQu IiwgLTEpOworIAllbHNlCitAQCAtMjQxLDY2ICsyOTYsMTcxIEBAIGludCBzYXZlZmlsZShXSU5T ICp3aW4pCisgICAgIHJldHVybiBleGl0Q29kZTsKKyB9CisgCisrdm9pZCBtYWtlX2RlbHRhMShp bnQgKmRlbHRhMSwgaW50ICpwYXQsIHNpemVfdCBwYXRsZW4pIHsKKysgICAgc2l6ZV90IGk7Cisr ICAgIGZvciAoaT0wOyBpIDwgQUxQSEFCRVRfTEVOOyBpKyspIHsKKysgICAgICAgIGRlbHRhMVtp XSA9IHBhdGxlbjsKKysgICAgfQorKyAgICBmb3IgKGk9MDsgaSA8IHBhdGxlbi0xOyBpKyspIHsK KysgICAgICAgIGRlbHRhMVtwYXRbaV1dID0gcGF0bGVuLTEgLSBpOworKyAgICB9CisrfQorKwor Ky8vIHRydWUgaWYgdGhlIHN1ZmZpeCBvZiB3b3JkIHN0YXJ0aW5nIGZyb20gd29yZFtwb3NdIGlz IGEgcHJlZml4CisrLy8gb2Ygd29yZAorK2ludCBpc19wcmVmaXgoaW50ICp3b3JkLCBzaXplX3Qg d29yZGxlbiwgc2l6ZV90IHBvcykgeworKyAgICBzaXplX3QgaTsKKysgICAgc2l6ZV90IHN1ZmZp eGxlbiA9IHdvcmRsZW4gLSBwb3M7CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBzdWZmaXhsZW47 IGkrKykgeworKyAgICAgICAgaWYgKHdvcmRbaV0gIT0gd29yZFtwb3MraV0pIHsKKysgICAgICAg ICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICByZXR1cm4gMTsKKyt9Cisr CisrLy8gbGVuZ3RoIG9mIHRoZSBsb25nZXN0IHN1ZmZpeCBvZiB3b3JkIGVuZGluZyBvbiB3b3Jk W3Bvc10uCisrLy8gc3VmZml4X2xlbmd0aCgiZGRkYmNhYmMiLCA4LCA0KSA9IDIKKytzaXplX3Qg c3VmZml4X2xlbmd0aChpbnQgKndvcmQsIHNpemVfdCB3b3JkbGVuLCBzaXplX3QgcG9zKSB7Cisr ICAgIHNpemVfdCBpOworKyAgICAvLyBpbmNyZW1lbnQgc3VmZml4IGxlbmd0aCBpIHRvIHRoZSBm aXJzdCBtaXNtYXRjaCBvciBiZWdpbm5pbmcKKysgICAgLy8gb2YgdGhlIHdvcmQKKysgICAgZm9y IChpID0gMDsgKHdvcmRbcG9zLWldID09IHdvcmRbd29yZGxlbi0xLWldKSAmJiAoaSA8IHBvcyk7 IGkrKyk7CisrICAgIHJldHVybiBpOworK30KKysKKyt2b2lkIG1ha2VfZGVsdGEyKGludCAqZGVs dGEyLCBpbnQgKnBhdCwgc2l6ZV90IHBhdGxlbikgeworKyAgICBzaXplX3QgIHA7CisrICAgIHNp emVfdCAgbGFzdF9wcmVmaXhfaW5kZXggPSBwYXRsZW4tMTsKKysKKysgICAgLy8gZmlyc3QgbG9v cAorKyAgICBmb3IgKHA9cGF0bGVuLTE7IDtwLS0pIHsKKysgICAgICAgIGlmIChpc19wcmVmaXgo cGF0LCBwYXRsZW4sIHArMSkpIHsKKysgICAgICAgICAgICBsYXN0X3ByZWZpeF9pbmRleCA9IHAr MTsKKysgICAgICAgIH0KKysgICAgICAgIGRlbHRhMltwXSA9IChpbnQpIChsYXN0X3ByZWZpeF9p bmRleCArIChwYXRsZW4tMSAtIHApKTsKKysgICAgICAgIGlmIChwID09IDApIGJyZWFrOworKyAg ICB9CisrCisrICAgIC8vIHNlY29uZCBsb29wCisrICAgIGZvciAocD0wOyBwIDwgcGF0bGVuLTE7 IHArKykgeworKyAgICAgICAgaW50IHNsZW4gPSBzdWZmaXhfbGVuZ3RoKHBhdCwgcGF0bGVuLCBw KTsKKysgICAgICAgIGlmIChwYXRbcCAtIHNsZW5dICE9IHBhdFtwYXRsZW4tMSAtIHNsZW5dKSB7 CisrICAgICAgICAgICAgZGVsdGEyW3BhdGxlbi0xIC0gc2xlbl0gPSAoaW50KSAocGF0bGVuLTEg LSBwICsgc2xlbik7CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisgLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAorICAqIERlc2NyaXB0 aW9uOiBzZWFyY2hlcyBmb3IgYSBzZXJpZXMgb2YgZWl0aGVyIGhleCBvciAgKgorICAqCQlhc2Np aSB2YWx1ZXMgb2YgdXB0byAxNiBieXRlcyBsb25nLiAgVGhlKgorICAqCQlmdW5jdGlvbiByZXR1 cm5zIHRoZSBuZXh0IGxvY2F0aW9uIG9mICAgKgorICAqCQl0aGUgc3BlY2lmaWVkIHN0cmluZyBv ciAtMSBpZiBub3QgZm91bmQgKgorKyAqICAgICAgYWxnb3JpdGhtIGJhc2VkIG9uIHRoZSB3aWtp cGVkaWEgZXhhbXBsZSAqCisrICogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Cb3llciVF MiU4MCU5M01vb3JlX3N0cmluZ19zZWFyY2hfYWxnb3JpdGhtICoKKyBcKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistb2ZmX3QgaGV4U2Vh cmNoKEZJTEUgKmZwLCBpbnQgY2hbXSwgb2ZmX3Qgc3RhcnRmcCwgaW50IGxlbmd0aCkKKytvZmZf dCBoZXhTZWFyY2hCTShXSU5ET1cgKncsIEZJTEUgKmZwLCBpbnQgcGF0W10sIG9mZl90IHN0YXJ0 ZnAsIGludCBwYXRsZW4pCisgeworLSAgICBpbnQgbG9vcCwgdG1wLCBjLCBmbGFnPTA7CistICAg IG9mZl90IGN1cnJMb2MsIHN0YXJ0TG9jLCBmb3VuZExvYz0tMTsJCS8qIGluaXQgdmFycyAgICAg ICAgICAqLworLQorLSAgICBmc2Vla28oZnAsIHN0YXJ0ZnAsIFNFRUtfU0VUKTsJCQkvKiBiZWdp biBmcm9tIGxvYyAgICAgKi8KKy0KKy0gICAgYyA9IGdldGMoZnApOwkJCQkJLyogZ2V0IGNoYXIg ZnJvbSBmaWxlICovCistICAgIGN1cnJMb2MgPSBmdGVsbG8oZnApOwkJCQkvKiBnZXQgbG9jYXRp b24gICAgICAgKi8KKy0gICAgaWYgKCh0bXAgPSBzZWFyY2hMaXN0KGhlYWQsIGN1cnJMb2MtMSkp ICE9IC0xKQkvKiBjaGVjayBmb3IgdmFsIGluIGxsKi8KKy0JYyA9IHRtcDsKKy0KKy0gICAgd2hp bGUgKGN1cnJMb2MgIT0gc3RhcnRmcCkgCQkJCS8qIHdoaWxlIG5vdCBiYWNrIHRvICAqLworLSAg ICB7CQkJCQkJCS8qIGJlZ2lubmluZy4uLiAgICAgICAqLworLQlpZiAoYyA9PSBjaFswXSkgCQkJ CS8qIGlmIGNoYXIgd2Ugd2FudC4uLiAqLworLQl7CQkJCQkJCistCSAgICBzdGFydExvYyA9IGZ0 ZWxsbyhmcCk7CQkJLyogZ2V0IGxvY2F0aW9uICAgICAgICovCistCQkJCQkJCS8qIGxvb3AgdG8g ZmluZCByZXN0ICAqLworLQkgICAgZm9yIChsb29wID0gMTsgKGxvb3AgPCBsZW5ndGgpICYmIChj ICE9IEVPRik7IGxvb3ArKykKKy0JICAgIHsKKy0JCWMgPSBmZ2V0YyhmcCk7IAorLSAgICAJCWN1 cnJMb2MgPSBmdGVsbG8oZnApOworLSAgICAJCWlmICgodG1wID0gc2VhcmNoTGlzdChoZWFkLCBj dXJyTG9jLTEpKSAhPSAtMSkKKy0JCSAgICBjID0gdG1wOworLQkJaWYgKGMgIT0gY2hbbG9vcF0p CistCQkgICAgYnJlYWs7CistCQkgICAgCistCSAgICB9CistCQlmc2Vla28oZnAsIHN0YXJ0TG9j LCBTRUVLX1NFVCk7CistCistCSAgICBpZiAoKGxvb3AgPT0gbGVuZ3RoKSAmJiAoZmxhZykpCQkv KiBpZiBmb3VuZCBpdCAgICAgICAgKi8KKy0JCXJldHVybiBzdGFydExvYyAtIDE7CQkJLyogcmV0 dXJuIGxvY2F0aW9uICAgICovCistCSAgICBlbHNlIGlmIChsb29wID09IGxlbmd0aCkKKy0JCWZv dW5kTG9jID0gc3RhcnRMb2MgLTE7CQkJLyogcmV0dXJuIGlmIG5vIG90aGVycyovCistCQkgICAg CQorLQl9CistCWZsYWcgPSAxOyAgICAvKiBpZiBjdXJzb3IgaXMgb24gdGhlIHNlYXJjaCBzdHJp bmcsIGNvbnRpbnVlIHNlYXJjaGluZyAqLworLQkJCisrICAgIGlmICghIChwYXQgJiYgcGF0bGVu ID4gMCkpIHJldHVybiAtMjsKKyAKKy0JaWYgKGMgPT0gRU9GKQkJCQkJLyogaWYgRU9GIHJld2lu ZCAgICAgICovCistCSAgICByZXdpbmQoZnApOworKyAgICBpbnQgICAgICAgICBpLCBtID0gMTsK KysgICAgaW50ICAgICAgICAgaiA9IHBhdGxlbiAtIDE7CisrICAgIGludCAgICAgICAgIGRlbHRh MSBbIEFMUEhBQkVUX0xFTiBdOworKyAgICBpbnQgICAgICAgICAqZGVsdGEyID0gKGludCAqKW1h bGxvYyhwYXRsZW4gKiBzaXplb2YoaW50KSk7CisgCistICAgICAgICBjdXJyTG9jID0gZnRlbGxv KGZwKTsJCQkJLyogY3VycmVudCBsb2NhdGlvbiAgICovCisrICAgIGNoYXIgICAgICAgICpidWY7 ICAgICAgICAgICAvLyBjaXJjdWxhciBidWZmZXIKKysgICAgY2hhciAgICAgICAgKnBhdHQgPSAo Y2hhciAqKSBtYWxsb2MocGF0bGVuKTsKKyAKKy0JaWYgKGN1cnJMb2MgIT0gc3RhcnRmcCkgCQkJ LyogaWYgbm90IGF0IHN0YXJ0Li4uICovCistCXsKKy0JICAgIGMgPSBmZ2V0YyhmcCk7CQkJCS8q IGdldCBhbm90aGVyIGNoYXIgICAqLworLSAgICAJICAgIGN1cnJMb2MgPSBmdGVsbG8oZnApOwor LSAgICAJICAgIGlmICgodG1wID0gc2VhcmNoTGlzdChoZWFkLCBjdXJyTG9jLTEpKSAhPSAtMSkK Ky0JICAgICAgICBjID0gdG1wOworLQl9CistICAgIH0gCisrICAgIGludCAgICAgICAgIG47ICAg ICAgICAgICAgICAvLyBudW1iZXIgb2YgYnl0ZXMgcmVhZCBieSBmcmVhZCgpCisrICAgIGludCAg ICAgICAgIHJlbV9ieXRlcyA9IDA7ICAvLyByZW1haW5pbmcgYnl0ZXMgaW4gdGhlIGJ1ZmZlcgor KyAgICBpbnQgICAgICAgICBieXRlc190b19yZWFkID0gQlVGX0w7CisrICAgIGludCAgICAgICAg IGZ1bGxfbGVuZ3RoOyAgICAvLyBmdWxsIGxlbmd0aCBvZiB0aGUgY3VycmVudCBidWZmZXIKKysg ICAgaW50ICAgICAgICAgY3VyX3BlcmNlbnQsIGxhc3RfcGVyY2VudCA9IC0xOworKworKyAgICBv ZmZfdCAgICAgICBwb3MxLCBwb3MyOyAgICAgLy8gbG93ZXIgYW5kIHVwcGVyIGxpbWl0IG9mIHRo ZSBidWZmZXIKKysgICAgb2ZmX3QgICAgICAgcG9zX21heCA9IC0xOyAgIC8vIEVPRiBwb3NpdGlv bgorKyAgICBvZmZfdCAgICAgICBydiA9IC0xOyAgICAgICAgLy8gcmV0dXJuIHZhbHVlOiBkZWZh dWx0ID0gLTEKKysKKysgICAgaWYgKHBvc2l4X21lbWFsaWduKCh2b2lkICoqKSZidWYsIGdldHBh Z2VzaXplKCksIEJVRl9MKSAhPSAwKQorKyAgICAgICAgcmV0dXJuIC0xOworKworKyAgICBpZiAo ISAoZGVsdGEyICYmIHBhdHQpKSByZXR1cm4gLTE7CisrCisrICAgIG1ha2VfZGVsdGExKGRlbHRh MSwgcGF0LCBwYXRsZW4pOworKyAgICBtYWtlX2RlbHRhMihkZWx0YTIsIHBhdCwgcGF0bGVuKTsK KysgICAgLy8gY29udmVydGluZyBpbnQgdG8gKHVuc2lnbmVkIGNoYXIpIC0+ICh1bnNpZ25lZCBj aGFyKSBpcyBmYXN0ZXIKKysgICAgZm9yIChpID0gMDsgaSA8IHBhdGxlbjsgaSsrKSBwYXR0W2ld ID0gKHVuc2lnbmVkIGNoYXIpIHBhdFtpXTsKKysKKysgICAgLy8gZ2V0IHRoZSBwb3NfbWF4Cisr ICAgIGlmIChmc2Vla28oZnAsIDAsIFNFRUtfRU5EKSA9PSAwKSBwb3NfbWF4ID0gZnRlbGxvKGZw KTsKKysKKysgICAgLy8gd2UgaWdub3JlIHRoZSBjdXJyZW50IGJ5dGUKKysgICAgc3RhcnRmcCsr OworKyAgICBpZiAoZnNlZWtvKGZwLCBzdGFydGZwLCBTRUVLX1NFVCkgIT0gMCkgeworKyAgICAg ICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgLy8gc2V0IHRvIG5vbi1ibG9ja2luZworKyAg ICB3dGltZW91dCh3LCAwKTsKKysgICAgcG9zMSA9IHBvczIgPSBzdGFydGZwOworKworKyAgICB3 aGlsZSAoMSkgeworKyAgICAgICAgbiA9IChpbnQpIGZyZWFkKCZidWZbcmVtX2J5dGVzXSwgMSwg Ynl0ZXNfdG9fcmVhZCwgZnApOworKyAgICAgICAgZnVsbF9sZW5ndGggPSBuICsgcmVtX2J5dGVz OworKyAgICAgICAgaWYgKG4gPT0gMCB8fCBmdWxsX2xlbmd0aCA8IHBhdGxlbikgYnJlYWs7Cisr ICAgICAgICBwb3MyID0gcG9zMSArIChvZmZfdCkgZnVsbF9sZW5ndGg7CisrCisrICAgICAgICAv LyBhcHBseSBjaGFuZ2VzIGJ5IHVzZXIsIGlmIGFueQorKyAgICAgICAgdXBkYXRlQnVmKGhlYWQs IGJ1ZiwgcG9zMSwgcG9zMik7CisrCisrICAgICAgICBpID0gcGF0bGVuIC0gMTsKKysgICAgICAg IHdoaWxlIChpIDwgZnVsbF9sZW5ndGgpIHsKKysgICAgICAgICAgICBqID0gcGF0bGVuIC0gMTsK KysgICAgICAgICAgICB3aGlsZSAoaiA+PSAwICYmIChidWZbaV0gPT0gcGF0dFtqXSkpIHsKKysg ICAgICAgICAgICAgICAgLS1pOworKyAgICAgICAgICAgICAgICAtLWo7CisrICAgICAgICAgICAg fQorKyAgICAgICAgICAgIGlmIChqIDwgMCkgeworKyAgICAgICAgICAgICAgICAvLyBzdWNjZXNz CisrICAgICAgICAgICAgICAgIHJ2ID0gcG9zMSArIGkgKyAxOworKyAgICAgICAgICAgICAgICBn b3RvIGVuZDsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgbSA9IG1heChkZWx0YTFb KHVuc2lnbmVkIGNoYXIpIGJ1ZltpXV0sIGRlbHRhMltqXSk7CisrICAgICAgICAgICAgaSArPSBt OworKyAgICAgICAgfQorKworKyAgICAgICAgcmVtX2J5dGVzID0gZnVsbF9sZW5ndGggKyBtIC0g aSAtIDE7CisrICAgICAgICBpZiAocmVtX2J5dGVzID4gZnVsbF9sZW5ndGgpIHJlbV9ieXRlcyA9 IGZ1bGxfbGVuZ3RoOworKworKyAgICAgICAgYnl0ZXNfdG9fcmVhZCA9IEJVRl9MIC0gcmVtX2J5 dGVzOworKyAgICAgICAgbWVtbW92ZShidWYsICZidWZbZnVsbF9sZW5ndGggLSByZW1fYnl0ZXNd LCByZW1fYnl0ZXMpOworKyAgICAgICAgcG9zMSA9IHBvczIgLSByZW1fYnl0ZXM7CisgCistICAg IHJldHVybiBmb3VuZExvYzsJCQkJCS8qIHJldHVybiBub3QgZm91bmQgICAqLworKyAgICAgICAg aWYgKHdnZXRjaCh3KSA9PSAyNykgeyAvLyBlc2NhcGUKKysgICAgICAgICAgICBydiA9IC0yOwor KyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHBvc19t YXggPiAwKSB7CisrICAgICAgICAgICAgY3VyX3BlcmNlbnQgPSAoaW50KSAoKHBvczIgKiAxMDAp IC8gcG9zX21heCk7CisrICAgICAgICAgICAgaWYgKGN1cl9wZXJjZW50ICE9IGxhc3RfcGVyY2Vu dCkgeworKyAgICAgICAgICAgICAgICBtdndwcmludHcodywgTElORVMgLSAxLCAxLCAiU2VhcmNo aW5nIChoaXQgRXNjIHRvIGNhbmNlbCkgLi4uJWQlJSIsIGN1cl9wZXJjZW50KTsKKysgICAgICAg ICAgICAgICAgd3JlZnJlc2godyk7CisrICAgICAgICAgICAgICAgIGxhc3RfcGVyY2VudCA9IGN1 cl9wZXJjZW50OworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBl bmQ6CisrICAgICAgICAvLyBzZXQgYmFjayB0byBibG9ja2luZworKyAgICAgICAgd3RpbWVvdXQo dywgLTEpOworKyAgICAgICAgZnJlZShidWYpOworKyAgICAgICAgZnJlZShwYXR0KTsKKysgICAg ICAgIGZyZWUoZGVsdGEyKTsKKysKKysgICAgcmV0dXJuIHJ2OworIH0KKyAKKyAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcCitAQCAtNDAy LDE5ICs1NjIsMyBAQCBpbnQgZ2V0TG9jVmFsKG9mZl90IGxvYykKKyAgICAgZnNlZWtvKGZwSU4s IGxvYywgU0VFS19TRVQpOwkJCQkvKiBnb3RvIGxvY2F0aW9uICAgICAgKi8KKyAgICAgcmV0dXJu KGZnZXRjKGZwSU4pKTsKKyB9CistCistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqXAorLSAqIERlc2NyaXB0aW9uOiBjaGVja3MgaWYgYSBs b2MgaXMgaW4gdGhlIGxpbmtlZCBsaXN0ICAgKgorLSAqIFJldHVybnM6ICAgICByZXR1cm5zIFRS VUUgaWYgbG9jIGlzIGluIHRoZSBsbGlzdCAgICAgKgorLVwqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy1ib29sIGluSGV4TGlzdChvZmZf dCBsb2MpCisteworLSAgICBoZXhMaXN0ICp0bXBIZWFkID0gaGVhZDsJCQkJLyogdG1wIGxpbmts aXN0IGhlYWQgICovCistCistICAgIHdoaWxlICh0bXBIZWFkICE9IE5VTEwgJiYgKHRtcEhlYWQt PmxvYyA8IGxvYykpCistCXRtcEhlYWQgPSB0bXBIZWFkLT5uZXh0OworLSAgICBpZiAodG1wSGVh ZCAhPSBOVUxMICYmICh0bXBIZWFkLT5sb2MgPT0gbG9jKSkKKy0JcmV0dXJuKFRSVUUpOworLSAg ICBlbHNlCistCXJldHVybihGQUxTRSk7CistfQorZGlmZiAtLWdpdCBhL3NyYy9oZXhjdXJzZS5j IGIvc3JjL2hleGN1cnNlLmMKK2luZGV4IDlhMjc1ZWUuLjk3MjNjMmYgMTAwNjQ0CistLS0gYS9z cmMvaGV4Y3Vyc2UuYworKysrIGIvc3JjL2hleGN1cnNlLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKipcCisgICogIENvcHlyaWdodCAoQykgMjAwMSB3cml0ZW4gYnkg SmV3ZmlzaCBhbmQgQXJtb3RoICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICBDb3B5 cmlnaHQgKEMpIDIwMjAtMjAyMiBwcnNvIGF0IGdpdGh1YiwgZml4ZXMgYW5kIGltcHJvdmVtZW50 cyAgICAgICAgICAgICoKKyAgKgkJCQkJCQkJCSAgICAgICoKKyAgKiAgRGVzY3JpcHRpb246IHRo aXMgY29kZXMgYWxsb3dzIGEgdXNlciB0byB2aWV3IGFuZCBlZGl0IHRoZSBoZXhhZGVjaW1hbCBh bmQqCisgICoJCSBhbmQgYXNjaWkgdmFsdWVzIG9mIGEgZmlsZS4gIFRoZSBjdXJzZXMgbGlicmFy eSBpcyB1c2VkIHRvICAgKgorQEAgLTI3LDYgKzI4LDggQEAKKyAvKiNkZWZpbmUgREVCVUdfTExJ U1QqLworIC8qI2RlZmluZSBERUJVR19HT1RPKi8KKyAKKytGSUxFICpmcElOOworKworIGludCAg ICAgQkFTRSwgTUFYWSwgcmVzaXplID0gMDsKKyBpbnQgICAgIE1JTl9BRERSX0xFTkdUSDsKKyBo ZXhMaXN0ICpoZWFkOwkJCQkJCS8qIGxpbmtlZCBsaXN0IHN0cnVjdCAqLworQEAgLTM2LDExICsz OSwxNSBAQCBjaGFyICAgIEVCQ0RJQ1syNTZdLAorICAgICAgICAgKmZwT1VUZmlsZW5hbWUgPSBO VUxMOworIGJvb2wgCXByaW50SGV4OwkJCQkJLyogYWRkcmVzcyBmb3JtYXQgICAgICovCisgYm9v bCAgICBVU0VfRUJDRElDOworK2Jvb2wgICAgVEVSTV9DT0xPUlM7CisrYm9vbCAgICBGTlVNQkVS UzsKKyBib29sICAgIElOX0hFTFA7CQkJCQkvKiBpZiBoZWxwIGRpc3BsYXllZCAgKi8KKytib29s ICAgIHNhdmVkID0gVFJVRTsKKyBpbnQgICAgIGhleF93aW5fd2lkdGgsCisgICAgICAgICBhc2Np aV93aW5fd2lkdGgsCisgICAgICAgICBoZXhfb3V0bGluZV93aWR0aCwKKy0gICAgICAgIGFzY2lp X291dGxpbmVfd2lkdGg7CisrICAgICAgICBhc2NpaV9vdXRsaW5lX3dpZHRoLAorKyAgICAgICAg Y29sb3JfbGV2ZWwgPSAyOworIAorIAorICAgICAvKiBwYXJ0aWFsIEVCQ0RJQyB0YWJsZSBjb250 cmlidXRlZCBieSBUZWQgKHRlZEBwaHAubmV0KSAqLworQEAgLTYzLDYgKzcwLDI1IEBAIGludCAg ICAgaGV4X3dpbl93aWR0aCwKKyAgICAgICAnLicsJ1InLCdTJywnVCcsJ1UnLCdWJywnVycsJ1gn LCdZJywnWicsJy4nLCcuJywnLicsJy4nICwnLicsJy4nLCAvKiBFICovCisgICAgICAgJzAnLCcx JywnMicsJzMnLCc0JywnNScsJzYnLCc3JywnOCcsJzknLCcuJywnLicsJy4nLCcuJyAsJy4nLCcu J307LyogRiAqLworIAorK2ludCBBU0NJSV90b19FQkNESUNbXSA9CisreworKyAgTk9ERUYsIE5P REVGLCBOT0RFRiwgTk9ERUYsIE5PREVGLCBOT0RFRiwgTk9ERUYsIE5PREVGLCBOT0RFRiwgTk9E RUYsIE5PREVGLAorKyAgTk9ERUYsIE5PREVGLCBOT0RFRiwgTk9ERUYsIE5PREVGLCBOT0RFRiwg Tk9ERUYsIE5PREVGLCBOT0RFRiwgTk9ERUYsIE5PREVGLAorKyAgTk9ERUYsIE5PREVGLCBOT0RF RiwgTk9ERUYsIE5PREVGLCBOT0RFRiwgTk9ERUYsIE5PREVGLCBOT0RFRiwgTk9ERUYsCisrCisr ICAvKiAzMiAqLyAgMHg0MCwgIDB4NWEsICAweDdmLCAgMHg3YiwgIDB4NWIsICAweDZjLCAgMHg1 MCwgIDB4N2QsICAweDRkLCAgMHg1ZCwKKysgIC8qIDQyICovICAweDVjLCAgMHg0ZSwgIDB4NmIs ICAweDYwLCBOT0RFRiwgIDB4NjEsICAweGYwLCAgMHhmMSwgIDB4ZjIsICAweGYzLAorKyAgLyog NTIgKi8gIDB4ZjQsICAweGY1LCAgMHhmNiwgIDB4ZjcsICAweGY4LCAgMHhmOSwgIDB4N2EsICAw eDVlLCAgMHg0YywgIDB4N2UsCisrICAvKiA2MiAqLyAgMHg2ZSwgIDB4NmYsICAweDdjLCAgMHhj MSwgIDB4YzIsICAweGMzLCAgMHhjNCwgIDB4YzUsICAweGM2LCAgMHhjNywKKysgIC8qIDcyICov ICAweGM4LCAgMHhjOSwgIDB4ZDIsICAweGQzLCAgMHhkNCwgIDB4ZDUsICAweGQ2LCAgMHhkNywg IDB4ZDgsICAweGQ5LAorKyAgLyogODIgKi8gIDB4ZTEsICAweGUyLCAgMHhlMywgIDB4ZTQsICAw eGU1LCAgMHhlNiwgIDB4ZTcsICAweGU4LCAgMHhlOSwgTk9ERUYsCisrICAvKiA5MiAqLyBOT0RF RiwgTk9ERUYsIE5PREVGLCAgMHg2ZCwgIDB4YjksICAweDgxLCAgMHg4MiwgIDB4ODMsICAweDg0 LCAgMHg4NSwKKysgIC8qIDEwMiAqLyAweDg2LCAgMHg4NywgIDB4ODgsICAweDg5LCAgMHg5Miwg IDB4OTMsICAweDk0LCAgMHg5NSwgIDB4OTYsICAweDk3LAorKyAgLyogMTEyICovIDB4OTgsICAw eDk5LCAgMHhhMSwgIDB4YTIsICAweGEzLCAgMHhhNCwgIDB4YTUsICAweGE2LCAgMHhhNywgIDB4 YTgsCisrICAvKiAxMjIgKi8gMHhhOSwgTk9ERUYsICAweDRmLCBOT0RFRiwgTk9ERUYgLyogMTI2 ICovCisrfTsKKysKKysKKyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQkJCS8qIG1h aW4gcHJvZ3JhbSAgICAgICAqLworIHsKKyAKK0BAIC03NSw2ICsxMDEsOCBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQkJCS8qIG1haW4gcHJvZ3JhbSAgICAgICAqLworICAgICBm cE9VVGZpbGVuYW1lID0gTlVMTDsJCQkvKiBvdXQgZmlsZSBuYW1lIHB0cnMgKi8KKyAgICAgcHJp bnRIZXggPSBUUlVFOwkJCQkJCQkvKiBhZGRyZXNzIGZvcm1hdCAgICAgKi8KKyAgICAgVVNFX0VC Q0RJQyA9IEZBTFNFOwkJCQkJCQkvKnVzZSBhc2NpaSBieSBkZWZhdWx0Ki8KKysgICAgVEVSTV9D T0xPUlMgPSBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAvKmRvbid0IHVzZSB0ZXJtIGRlZmlu ZWQgY29sb3JzIGJ5IGRlZmF1bHQgKi8KKysgICAgRk5VTUJFUlMgPSBGQUxTRTsgICAgIC8qIGtl ZXAgb2xkIGJlaGF2aW91ciB3aXRob3V0IGZ1bmN0aW9uIGtleSBudW1iZXJzIGJ5IGRlZmF1bHQg Ki8KKyAKKyAJCQkJCQkJLyogZ2V0IGNtZCBsaW5lIGFyZ3MgICovCisgICAgIGxlbiA9IHBhcnNl QXJncyhhcmdjLCBhcmd2KTsKK0BAIC05Myw3ICsxMjEsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQkJCS8qIG1haW4gcHJvZ3JhbSAgICAgICAqLworIAlleGl0KC0xKTsKKyAg ICAgfQorICAgICAKKy0gICAgc2xrX3NldCg2LCAocHJpbnRIZXgpID8gIkhleCBBZGRyIjoiRGVj IEFkZHIiLCAxKTsKKyAgICAgaW5pdF9ma2V5cygpOwkJCQkJLyogZGVmaW5lIG1lbnUgYmFyICAg ICovCisgICAgIAorIAorQEAgLTE3OSwzMyArMjA2LDQ3IEBAIG9mZl90IHBhcnNlQXJncyhpbnQg YXJnYywgY2hhciAqYXJndltdKQorICAgICBpbnQgdmFsOwkJCQkJCS8qIGNvdW50ZXJzLCBldGMu ICAgICAqLworIAorIAkJCQkJCQkvKiBnZXQgYXJncyAgICAgICAgICAgKi8KKy0gICAgd2hpbGUg KCh2YWwgPSBoZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhOmk6bzpyOmUiKSkgIT0gLTEpIAorKyAgICB3 aGlsZSAoKHZhbCA9IGhnZXRvcHQoYXJnYywgYXJndiwgImM6YWk6bzpyOmV0Zj9oIikpICE9IC0x KQorICAgICB7CisgCXN3aXRjaCAodmFsKQkJCQkJLyogdGVzdCBhcmdzICAgICAgICAgICovCisg ICAgICAgICB7CisrICAgICAgICAgICAgY2FzZSAnYyc6ICAgY29sb3JfbGV2ZWwgPSBhdG9pKG9w dGFyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yX2xldmVsPDAgfHwgY29s b3JfbGV2ZWw+MykKKysgICAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByaW50X3VzYWdlKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV4aXQoLTEpOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKysKKyAgICAgICAgICAgICBjYXNlICdhJzoJcHJpbnRIZXggPSBGQUxT RTsJCS8qIGRlY2ltYWwgYWRkcmVzc2VzICAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOworIAkJCQkJCQkvKiBpbmZpbGUgICAgICAgICAgICAgKi8KKy0JICAgIGNhc2UgJ2knOglm cmVlKGZwSU5maWxlbmFtZSk7CistCQkJZnBJTmZpbGVuYW1lID0gc3RyZHVwKG9wdGFyZyk7Cist CQkJYnJlYWs7CisrICAgICAgICAgICAgY2FzZSAnaSc6CWZyZWUoZnBJTmZpbGVuYW1lKTsKKysg ICAgICAgICAgICAgICAgICAgICAgICBmcElOZmlsZW5hbWUgPSBzdHJkdXAob3B0YXJnKTsKKysg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAJCQkJCQkJLyogb3V0ZmlsZSAgICAgICAg ICAgICovCistCSAgICBjYXNlICdvJzogICBmcmVlKGZwT1VUZmlsZW5hbWUpOworLQkJCWZwT1VU ZmlsZW5hbWUgPSBzdHJkdXAob3B0YXJnKTsKKy0JCQlicmVhazsKKysgICAgICAgICAgICBjYXNl ICdvJzogICBmcmVlKGZwT1VUZmlsZW5hbWUpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZw T1VUZmlsZW5hbWUgPSBzdHJkdXAob3B0YXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKKyAKKyAgICAgICAgICAgICBjYXNlICdyJzogICByZXNpemUgPSBhdG9pKG9wdGFyZyk7 CQkvKiBkb24ndCByZXNpemUgc2NyZWVuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKKyAKKyAgICAgICAgICAgICBjYXNlICdlJzogICBVU0VfRUJDRElDPVRSVUU7CQkvKnVzZSBp bnN0ZWFkIG9mIGFzY2lpKi8KKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysKKysg ICAgICAgICAgICBjYXNlICd0JzogICBURVJNX0NPTE9SUz1UUlVFOyAgICAgICAvKiBrZWVwIHRl cm0gZGVmaW5lZCBjb2xvcnMgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAg ICAgICAgICAgICAgICAvKiBpZiBkZWZpbmVkIGFuZCBub3Qgc2V0IG1heSBsb29rIGJhZCAqLwor KworKyAgICAgICAgICAgIGNhc2UgJ2YnOiAgIEZOVU1CRVJTPVRSVUU7ICAgICAgICAgIC8qIHNo b3cgbnVtYmVycyBpbiBsYWJlbHMgZm9yIGZ1bmN0aW9uIGtleXMgKi8KKyAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAJCQkJCQkJLyogaGVscC9pbnZhbGlkIGFyZ3MgICovCistCQkJ CQkJCS8qIGhlbHAvaW52YWxpZCBhcmdzICAqLworLQkgICAgY2FzZSAnPyc6CXByaW50X3VzYWdl KCk7CQkJLyogb3V0cHV0IGhlbHAgICAgICAgICovCisrICAgICAgICAgICAgY2FzZSAnPyc6Cisr ICAgICAgICAgICAgY2FzZSAnaCc6CXByaW50X3VzYWdlKCk7CQkJLyogb3V0cHV0IGhlbHAgICAg ICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvcHRvcHQgPT0gJ2gnKSB8fCAo b3B0b3B0ID09ICc/JykpCistCQkJICAgIGV4aXQoMCk7CQkJLyogZXhpdCAgICAgICAgICAgICAg ICovCistCQkJZWxzZQkJCQkvKiBpbGxlZ2FsIG9wdGlvbiAgICAgKi8KKy0JCQkgICAgZXhpdCgt MSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgwKTsJCQkvKiBleGl0ICAgICAg ICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCQkJCS8qIGlsbGVnYWwg b3B0aW9uICAgICAqLworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoLTEpOworICAg ICAgICAgfQorICAgICB9CisgICAgIGFyZ2MgLT0gb3B0aW5kOworQEAgLTIxNyw5ICsyNTgsMTMg QEAgb2ZmX3QgcGFyc2VBcmdzKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgICAgICBmcElO ZmlsZW5hbWUgPSBzdHJkdXAoYXJndlswXSk7CisgICAgIH0KKyAKKy0gICAgaWYgKGZwSU5maWxl bmFtZSAmJiBzdHJjbXAoZnBJTmZpbGVuYW1lLCAiIikpCisrICAgIGlmIChmcElOZmlsZW5hbWUg PT0gTlVMTCkgeworKyAgICAgICAgcHJpbnRfdXNhZ2UoKTsKKysgICAgICAgIGV4aXQoLTEpOwor KyAgICB9IGVsc2UgaWYgKGZwSU5maWxlbmFtZSAmJiBzdHJjbXAoZnBJTmZpbGVuYW1lLCAiIikp IHsKKyAgICAgICAgIGlmICgoZnBJTiA9IGZvcGVuKGZwSU5maWxlbmFtZSwgInIiKSkgPT0gTlVM TCkKKyAgICAgICAgICAgICBleGl0X2VycigiQ291bGQgbm90IG9wZW4gZmlsZSIpOworKyAgICB9 CisgCisgICAgIHJldHVybiAoKGZwSU4gIT0gTlVMTCkgPyBtYXhMb2MoZnBJTik6MCk7CQkvKiBy ZXR1cm4gZmlsZSBsZW5ndGggKi8KKyB9CitAQCAtMjMxLDEwICsyNzYsOSBAQCBvZmZfdCBwYXJz ZUFyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyBcKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgaW50IGdldE1pbmltdW1BZGRyZXNz TGVuZ3RoKG9mZl90IGxlbikKKyB7CistICAgICAgICBjaGFyIGJ1ZmZlclsxXTsKKyAgICAgICAg IGludCBtaW5fYWRkcmVzc19sZW5ndGg7CisgICAgICAgICAKKy0gICAgICAgIG1pbl9hZGRyZXNz X2xlbmd0aCA9IHNucHJpbnRmKGJ1ZmZlciwgMSwgIiVqZCIsIChpbnRtYXhfdClsZW4pOworKyAg ICAgICAgbWluX2FkZHJlc3NfbGVuZ3RoID0gc25wcmludGYoTlVMTCwgMCwgIiVqZCIsIChpbnRt YXhfdClsZW4pOworICAgICAgICAgCisgICAgICAgICAvKiBBdCBsZWFzdCA4IGNoYXJhY3RlcnMg d2lkZSAqLworICAgICAgICAgcmV0dXJuIG1pbl9hZGRyZXNzX2xlbmd0aCA+IDggPyBtaW5fYWRk cmVzc19sZW5ndGggOiA4OworZGlmZiAtLWdpdCBhL3NyYy9sbGlzdC5jIGIvc3JjL2xsaXN0LmMK K2luZGV4IDljNjE3ZDguLjlkZTkwMzggMTAwNjQ0CistLS0gYS9zcmMvbGxpc3QuYworKysrIGIv c3JjL2xsaXN0LmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcCisg ICogIENvcHlyaWdodCAoQykgMjAwMSwgaGV4Y3Vyc2UgaXMgd3JpdHRlbiBieSBKZXdmaXNoIGFu ZCBBcm1vdGggICAgICAgICAgICAgKgorKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAsMjAyMSwyMDIz IHByc28gYXQgZ2l0aHViLCBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzICAgICAgICoKKyAgKgkJCQkJ CQkJCSAgICAgICoKKyAgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICAgICAqCisgICogIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAg ICAgKgorQEAgLTQ4LDM3ICs0OSwyNCBAQCBoZXhMaXN0ICpkZWxldGVOb2RlKGhleExpc3QgKmhl YWQsIG9mZl90IGxvYykKKyBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCQorIGhleExpc3QgKmluc2VydEl0ZW0oaGV4TGlzdCAqaGVhZCwg b2ZmX3QgbG9jLCBpbnQgdmFsKQorIHsKKy0gICAgaWYgKGhlYWQgPT0gTlVMTCkJCQkJCS8qIGlm IE5VTEwgY3JlYXRlIGl0ZW0qLworLSAgICB7CistCWhlYWQgPSBsbGFsbG9jKCk7ICAgICAgICAg ICAgICAgICAgIAkJLyogYWxsb2NhdGUgc3BhY2UgICAgICovCistICAgICAgICBoZWFkLT5sb2Mg PSBsb2M7ICAgICAgICAgIAkJCS8qIHN0b3JlIGN1cnJlbnQgbGluZSAqLworLQloZWFkLT52YWwg PSB2YWw7CQkJCS8qIHN0b3JlIHZhbHVlICAgICAgICAqLworLSAgICAgICAgaGVhZC0+bmV4dCA9 IE5VTEw7CQkJCS8qIG1ha2UgbmV4dCA9IE5VTEwgICAqLworLSAgICB9CistICAgIGVsc2UgaWYg KGhlYWQtPiBsb2MgPT0gbG9jKQorLSAgICB7CistCWhleExpc3QgKnRtcEhlYWQ7CQkJCS8qIGNy ZWF0ZSBuZXcgdG1wIGl0ZW0qLworLQl0bXBIZWFkICA9IGxsYWxsb2MoKTsJCQkJLyogYWxsb2Nh dGUgc3BhY2UgICAgICovCistCXRtcEhlYWQtPmxvYyA9IGxvYzsJCQkJLyogc3RvcmUgdGhlIGxv Y2F0aW9uICovCistCXRtcEhlYWQtPnZhbCA9IHZhbDsJCQkJLyogc3RvcmUgdGhlIHZhbHVlICAg ICovCistCXRtcEhlYWQtPm5leHQgPSBoZWFkOwkJCQkvKiBwb2ludCBuZXh0IHRvIGhlYWQgKi8K Ky0JaGVhZCA9IHRtcEhlYWQ7CQkJCQkvKiBwb2ludCBoZWFkIHRvIHRtcCAgKi8KKy0gICAgfQor LSAgICBlbHNlIGlmIChoZWFkLT5sb2MgPCBsb2MgfHwgaGVhZC0+bmV4dCA9PSBOVUxMKSAJLyog cmVjdXJzaXZlbHkgY2FsbCBpdCovCistICAgIAloZWFkLT5uZXh0ID0gaW5zZXJ0SXRlbShoZWFk LT5uZXh0LCBsb2MsIHZhbCk7CistCQkJCQkJCS8qIGluc2VydCBpbnRvIGxpc3QgICovCistICAg IGVsc2UgaWYgKGhlYWQtPm5leHQgIT0gTlVMTCAmJiBoZWFkLT5uZXh0LT5sb2MgPj0gbG9jKQor LSAgICB7CistCWhleExpc3QgKnRtcEhlYWQ7CQkJCS8qIGNyZWF0ZSBuZXcgdG1wIGl0ZW0qLwor LQl0bXBIZWFkICA9IGxsYWxsb2MoKTsJCQkJLyogYWxsb2NhdGUgc3BhY2UgICAgICovCistCXRt cEhlYWQtPmxvYyA9IGxvYzsJCQkJLyogc3RvcmUgdGhlIGxvY2F0aW9uICovCistCXRtcEhlYWQt PnZhbCA9IHZhbDsJCQkJLyogc3RvcmUgdGhlIHZhbHVlICAgICovCistCXRtcEhlYWQtPm5leHQg PSBoZWFkOwkJCQkvKiBwb2ludCBuZXh0IHRvIGhlYWQgKi8KKy0JaGVhZCA9IHRtcEhlYWQ7CQkJ CQkvKiBwb2ludCBoZWFkIHRvIHRtcCAgKi8KKy0gICAgfQorKyAgICBoZXhMaXN0ICpjdXJyID0g aGVhZCwKKysgICAgICAgICAgICAqcHJldiA9IE5VTEwsCisrICAgICAgICAgICAgKm5ld0hlYWQg PSBoZWFkLAorKyAgICAgICAgICAgICpuZXdJdGVtOworIAorLSAgICByZXR1cm4gaGVhZDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkvKiByZXR1cm4gdGhlIGhlYWQgICAgKi8KKy19 ICAgCisrICAgIHdoaWxlIChjdXJyICE9IE5VTEwgJiYgbG9jID4gY3Vyci0+bG9jKSAgLyogaXRl cmF0ZSB1bnRpbCBjb3JyZWN0ICovCisrICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogcG9zaXRpb24gZm9yIGxvYyAgICAgICovCisrICAgICAgICBwcmV2ID0g Y3VycjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3IgZW5kIG9mIGxpc3QgICAgICAgICov CisrICAgICAgICBjdXJyID0gY3Vyci0+bmV4dDsKKysgICAgfQorKyAgICBuZXdJdGVtICA9IGxs YWxsb2MoKTsgICAgICAgICAgICAgICAgICAvKiBhbGxvY2F0ZSBzcGFjZSAgICAgICAgKi8KKysg ICAgaWYgKHByZXYgPT0gTlVMTCkgbmV3SGVhZCA9IG5ld0l0ZW07ICAgLyogbmV3IGhlYWQgb2Yg bGlzdCAgICAgICovCisrICAgIGVsc2UgcHJldi0+bmV4dCA9IG5ld0l0ZW07ICAgICAgICAgICAg IC8qIG9yIHBvaW50IHRvIHByZXZpb3VzICAqLworKyAgICBuZXdJdGVtLT5sb2MgPSBsb2M7ICAg ICAgICAgICAgICAgICAgICAvKiBzdG9yZSB0aGUgbG9jYXRpb24gICAgKi8KKysgICAgbmV3SXRl bS0+dmFsID0gdmFsOyAgICAgICAgICAgICAgICAgICAgLyogc3RvcmUgdGhlIHZhbHVlICAgICAg ICovCisrICAgIG5ld0l0ZW0tPm5leHQgPSBjdXJyOyAgICAgICAgICAgICAgICAgIC8qIHBvaW50 IG5leHQgdG8gY3VycmVudCAqLworKyAgICByZXR1cm4gbmV3SGVhZDsKKyt9CisgCisgLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAorICAq IERlc2NyaXB0aW9uOiBTZWFyY2ggdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgZm9yIHRvICAgKgor QEAgLTEwMCw2ICs4OCw0NyBAQCBpbnQgc2VhcmNoTGlzdChoZXhMaXN0ICpoZWFkLCBvZmZfdCBs b2MpCisgICAgIHJldHVybiAtMTsKKyB9CisgCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAorKyAqIERlc2NyaXB0aW9uOiBDb3VudCB0 aGUgbnVtYmVyIG9mIGl0ZW1zIGZvciBhIGdpdmVuICAgKgorKyAqICAgICAgbG9jIGluIHRoZSBs aXN0IGFuZCByZXR1cm4gaXQgICAgICAgICAgICAgICAgICAgKgorK1wqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKytvZmZfdCBjb3VudExp c3QoaGV4TGlzdCAqaGVhZCwgb2ZmX3QgbG9jKQorK3sKKysgICAgaGV4TGlzdCAqY3VyciA9IGhl YWQ7CisrICAgIG9mZl90IGNvdW50ID0gMDsKKysKKysgICAgd2hpbGUgKGN1cnIgIT0gTlVMTCAm JiBjdXJyLT5sb2MgPCBsb2MpIGN1cnIgPSBjdXJyLT5uZXh0OworKyAgICB3aGlsZSAoY3VyciAh PSBOVUxMICYmIGN1cnItPmxvYyA9PSBsb2MpCisrICAgIHsKKysgICAgICAgIGNvdW50Kys7Cisr ICAgICAgICBjdXJyID0gY3Vyci0+bmV4dDsKKysgICAgfQorKyAgICByZXR1cm4gY291bnQ7Cisr fQorKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKlwKKysgKiBEZXNjcmlwdGlvbjogU2VhcmNoIHRocm91Z2ggdGhlIGxpbmtlZCBsaXN0 IHRvICAgICAqCisrICoJCWZpbmQgaWYgdGhlcmUgYXJlIHZhbHVlcyBmb3IgbG9jYXRpb25zICAg ICAgICAqCisrICoJCWJldHdlZW4gcG9zMSBhbmQgcG9zMi4gSWYgdGhlcmUgYXJlLCBjaGFuZ2Vz ICAqCisrICoJCXRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBpbnNpZGUgdGhlIGJ1ZmZlciAgICAq CisrXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworK3ZvaWQgdXBkYXRlQnVmKGhleExpc3QgKmhlYWQsIGNoYXIgKmJ1Ziwgb2ZmX3QgcG9z MSwgb2ZmX3QgcG9zMikKKyt7CisrICAgIGhleExpc3QgKnRtcEhlYWQ7CQkJCQkvKiBhbGxvY2F0 ZSB0ZW1wIHNwYWNlKi8KKysgICAgb2ZmX3QgICBwcmV2X2xvYyA9IC0xOworKworKyAgICB0bXBI ZWFkID0gaGVhZDsJCQkJCS8qIHRlbXAgcG9pbnRzIHRvIGhlYWQqLworKyAgICB3aGlsZSAodG1w SGVhZCAhPSBOVUxMKQkJCQkvKiB3aGlsZSBub3QgbnVsbCAgICAgKi8KKysgICAgeworKyAgICAg ICAgaWYgKHByZXZfbG9jICE9IHRtcEhlYWQtPmxvYyAmJiB0bXBIZWFkLT5sb2MgPj0gcG9zMSAm JiB0bXBIZWFkLT5sb2MgPCBwb3MyKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGJ1Zlt0bXBI ZWFkLT5sb2MgLSBwb3MxXSA9ICh1bnNpZ25lZCBjaGFyKSB0bXBIZWFkLT52YWw7CisrICAgICAg ICB9CisrICAgICAgICBwcmV2X2xvYyA9IHRtcEhlYWQtPmxvYzsKKysgICAgICAgIHRtcEhlYWQg PSB0bXBIZWFkLT5uZXh0OwkvKiBtb3ZlIHRvIG5leHQgaXRlbSAgKi8KKysgICAgfQorK30KKysK KyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KipcCisgICogRGVzY3JpcHRpb246IHdyaXRlIHRoZSBjaGFuZ2VzIHRvIGVpdGhlciB0aGUgY3Vy cmVudCAqCisgICoJCWZpbGUgb3IgdG8gYSBzcGVjaWZpZWQgb3V0cHV0IGZpbGUJKgorQEAgLTEw OSwyOSArMTM4LDU4IEBAIGludCB3cml0ZUNoYW5nZXMoKQorICAgICBGSUxFICpmcE9VVCA9IE5V TEw7CisgICAgIEZJTEUgKmZwdG1wID0gTlVMTDsKKyAgICAgCistICAgIG9mZl90IGJ1ZmYscHJl dl9sb2M7CQkJCQkvKiBkZWNsYXJlIGxsaXN0IHZhcnMgKi8KKysgICAgb2ZmX3QgcHJldl9sb2M7 CQkJCQkvKiBkZWNsYXJlIGxsaXN0IHZhcnMgKi8KKyAgICAgaGV4TGlzdCAqdG1wSGVhZCA9IGhl YWQ7CisrICAgIGludCBucmVhZCwgZnMsIGZwLCBlcnJmaWxlID0gMDsKKysgICAgY2hhciAqYnVm ZjsKKysgICAgYm9vbCBlcnJmcE9VVCA9IEZBTFNFOworIAorLSAgICBpZiAoZnBPVVRmaWxlbmFt ZSAmJiBmcElOICYmIChmcE9VVCA9IGZvcGVuKGZwT1VUZmlsZW5hbWUsICJ3KyIpKSkKKysgICAg aWYgKGZwT1VUZmlsZW5hbWUgJiYgZnBJTikKKyAgICAgewkJCQkJCQkvKiBvcGVuIHRoZSB3cml0 ZSBmaWxlKi8KKy0JZnB0bXAgPSBmcE9VVDsKKy0gICAgICAgIHJld2luZChmcElOKTsJCQkJCS8q IHNldCBmaWxlIGxvYyB0byAwICAqLworLQlyZXdpbmQoZnBPVVQpOwkJCQkJCistCXdoaWxlICgo YnVmZiA9IGZnZXRjKGZwSU4pKSAhPSBFT0YpCQkvKndyaXRlIHRvIGZpbGUgYnVmZmVyKi8KKy0J CWZwdXRjKGJ1ZmYsIGZwT1VUKTsKKysJaWYgKCAoZnBPVVQgPSBmb3BlbihmcE9VVGZpbGVuYW1l LCAidysiKSkgKQorKwl7CisrCQlyZXdpbmQoZnBJTik7CQkJCS8qIHNldCBmaWxlIGxvYyB0byAw ICAqLworKwkJYnVmZiA9IG1hbGxvYyhGSUxFQlVGRik7CQkvKiBhbGxvY2F0ZSBidWZmZXIgKi8K KysJCXdoaWxlICghZmVvZihmcElOKSkKKysJCXsJCQkgIC8qIGNvcHkgb3JpZ2luYWwgZmlsZSB0 byBuZXcgb25lICovCisrCQkJbnJlYWQgPSBmcmVhZChidWZmLCAxLCBGSUxFQlVGRiwgZnBJTik7 CisrCQkJZndyaXRlKGJ1ZmYsIDEsIG5yZWFkLCBmcE9VVCk7CisrCQkJaWYgKGZlcnJvcihmcE9V VCkgfHwgZmVycm9yKGZwSU4pKQorKwkJCXsKKysJCQkJZmNsb3NlKGZwT1VUKTsKKysJCQkJcmVt b3ZlKGZwT1VUZmlsZW5hbWUpOworKwkJCQllcnJmcE9VVCA9IFRSVUU7CisrCQkJCWJyZWFrOwor KwkJCX0KKysJCX0KKysJCWZyZWUoYnVmZik7CisrCQlpZiAoIWVycmZwT1VUKQorKwkJeworKwkJ CWZwdG1wID0gZnBPVVQ7CisrCQkJcmV3aW5kKGZwdG1wKTsKKysJCX0KKysJCWZjbG9zZShmcElO KTsKKysJCWZyZWUoZnBJTmZpbGVuYW1lKTsKKysJCWZwSU5maWxlbmFtZSA9IHN0cmR1cChmcE9V VGZpbGVuYW1lKTsKKysJCWZyZWUoZnBPVVRmaWxlbmFtZSk7CisrCQlmcE9VVGZpbGVuYW1lID0g TlVMTDsKKysJfQorKwllbHNlIGVycmZwT1VUID0gVFJVRTsKKysJaWYgKGVycmZwT1VUKQorKwl7 CisrCQlwb3B1cFdpbigiRXJyb3Igd3JpdGluZyB0byBmaWxlIiwgLTEpOworKwkJcmV0dXJuIDE7 CisrCX0KKyAgICAgfQorICAgICBlbHNlIGlmIChmcElOKQkJCQkvKiBpZiBubyBvdXRwdXQgZmls ZSAgKi8KKyAgICAgeworLQlmcHRtcCA9IGZwSU47CistCWZwSU4gPSBmb3BlbihmcElOZmlsZW5h bWUsICJyKyIpOworLQlpZiAoIWZwSU4pCisrCWZwdG1wID0gZm9wZW4oZnBJTmZpbGVuYW1lLCAi cisiKTsKKysJaWYgKCFmcHRtcCkKKyAJeworLQkJZnBJTiA9IGZwdG1wOworIAkJcG9wdXBXaW4o IkNhbm5vdCB3cml0ZSB0byBmaWxlOiBiYWQgcGVybWlzc2lvbnMiLCAtMSk7CisgCQlyZXR1cm4g MTsKKyAJfQorLQlmY2xvc2UoZnB0bXApOworLQlmcHRtcCA9IGZwSU47CisrCWZjbG9zZShmcElO KTsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKK0BAIC0xMzksMjggKzE5NywzMiBAQCBpbnQg d3JpdGVDaGFuZ2VzKCkKKyAJcmV0dXJuIDE7CisgICAgIH0KKyAgICAgCistICAgIHJld2luZChm cElOKTsKKy0gICAgcmV3aW5kKGZwdG1wKTsKKyAgICAgcHJldl9sb2MgPSAtMTsKKyAgICAgd2hp bGUgKHRtcEhlYWQgIT0gTlVMTCkJCS8qIHdyaXRlIHRvIGZpbGUgICAgICAqLworICAgICB7Cisg CS8qIG9ubHkgcHJpbnQgdGhlIGxhdGVzdCBjaGFuZ2UgIGZyb20gdGhlIGxpbmtlZCBsaXN0Ki8K KyAJaWYgKHByZXZfbG9jICE9IHRtcEhlYWQtPmxvYykgeyAKKy0JCWZzZWVrbyhmcHRtcCwgdG1w SGVhZC0+bG9jLCBTRUVLX1NFVCk7CistCQlmcHV0Yyh0bXBIZWFkLT52YWwsIGZwdG1wKTsKKysJ CWZzID0gZnNlZWtvKGZwdG1wLCB0bXBIZWFkLT5sb2MsIFNFRUtfU0VUKTsKKysJCWZwID0gZnB1 dGModG1wSGVhZC0+dmFsLCBmcHRtcCk7CisrCQlpZiAoZnMgIT0gMCB8fCBmcCA9PSBFT0YpCisr CQl7CisrCQkJcG9wdXBXaW4oIkVycm9yIHdyaXRpbmcgdG8gZmlsZSIsIC0xKTsKKysJCQllcnJm aWxlID0gMTsKKysJCQlicmVhazsKKysJCX0KKyAJfQorIAlwcmV2X2xvYyA9IHRtcEhlYWQtPmxv YzsKKyAJdG1wSGVhZCA9IHRtcEhlYWQtPm5leHQ7CisgICAgIH0KKy0KKy0gICAgZmZsdXNoKGZw dG1wKTsJCQkJCS8qIGZsdXNoIGJ1ZmZ0byBkaXNrICAqLworLSAgICAKKy0gICAgcmV3aW5kKGZw SU4pOwkJCQkJLyogcmVzZXQgZmlsZSBwb2ludGVyICovCistICAgIGlmIChmcElOICE9IGZwdG1w KQorKyAgICBpZiAoIChmcElOID0gZm9wZW4oZnBJTmZpbGVuYW1lLCAiciIpKSApICAgLyogcmVv cGVuIGZpbGUgcmVhZG9ubHkgKi8KKyAJZmNsb3NlKGZwdG1wKTsKKy0KKy0gICAgcmV0dXJuIDA7 CistCisrICAgIGVsc2UKKysgICAgeworKwlmcElOID0gZnB0bXA7ICAgICAgIC8qIGlmIG5vdCBw b3NzaWJsZSwga2VlcCBpdCByZWFkd3JpdGUgKi8KKysJZmZsdXNoKGZwSU4pOworKwlyZXdpbmQo ZnBJTik7CisrICAgIH0KKysgICAgcmV0dXJuIGVycmZpbGU7CisgfSAKKyAKKyAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcCitkaWZmIC0t Z2l0IGEvc3JjL3NjcmVlbi5jIGIvc3JjL3NjcmVlbi5jCitpbmRleCAyY2VmNjU3Li4yMGY4MDY4 IDEwMDY0NAorLS0tIGEvc3JjL3NjcmVlbi5jCisrKysgYi9zcmMvc2NyZWVuLmMKK0BAIC0xLDUg KzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcCisgICogIENvcHlyaWdodCAoQykgMjAw MSwgaGV4Y3Vyc2UgaXMgd3JpdHRlbiBieSBKZXdmaXNoIGFuZCBBcm1vdGggICAgICAgICAgICAg KgorKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMiBwcnNvIGF0IGdpdGh1YiwgZml4ZXMgYW5k IGltcHJvdmVtZW50cyAgICAgICAgICAgICoKKyAgKgkJCQkJCQkJCSAgICAgICoKKyAgKiAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgICAgICAqCisgICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAgICAgKgorQEAgLTE0MiwxNSArMTQz LDI4IEBAIHZvaWQgc2NyZWVuX2V4aXQoaW50IGV4aXRfdmFsKQorIFwqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIAorIHZvaWQgaW5pdF9ma2V5 cygpCisgeworLSAgICBzbGtfc2V0KDEsICJIZWxwIiwJCTEpOwkJCS8qIGluaXQgbWVudSB0YWJz ICAgICAqLworLSAgICBzbGtfc2V0KDIsICJTYXZlIiwJCTEpOworLSAgICBzbGtfc2V0KDMsICJP cGVuIiwJIAkxKTsKKy0gICAgc2xrX3NldCg0LCAiR290byIsCQkxKTsKKy0gICAgc2xrX3NldCg1 LCAiRmluZCIsIAkJMSk7CistCistICAgIHNsa19zZXQoNywgIkhleCBFZGl0IiwJMSk7CistICAg IHNsa19zZXQoOCwgIlF1aXQiLAkJMSk7CistICAgIHNsa19zZXQoOSwgIlF1aXQiLAkJMSk7Cisr ICAgIGlmIChGTlVNQkVSUykKKysgICAgeworKyAgICAgICAgc2xrX3NldCgxLCAiMTpIZWxwIiwg MSk7CQkJLyogaW5pdCBtZW51IHRhYnMgICAgICovCisrICAgICAgICBzbGtfc2V0KDIsICIyOlNh dmUiLCAxKTsKKysgICAgICAgIHNsa19zZXQoMywgIjM6T3BlbiIsIDEpOworKyAgICAgICAgc2xr X3NldCg0LCAiNDpHb3RvIiwgMSk7CisrICAgICAgICBzbGtfc2V0KDUsICI1OkZpbmQiLCAxKTsK KysgICAgICAgIHNsa19zZXQoNiwgKHByaW50SGV4KSA/ICI2OkhleCBBZCI6IjY6RGVjIEFkIiwg MSk7CisrICAgICAgICBzbGtfc2V0KDcsICI3OkhleCBFZCIsIDEpOworKyAgICAgICAgc2xrX3Nl dCg4LCAiODpRdWl0IiwgMSk7CisrICAgIH0KKysgICAgZWxzZQorKyAgICB7CisrICAgICAgICBz bGtfc2V0KDEsICJIZWxwIiwgMSk7CQkJLyogaW5pdCBtZW51IHRhYnMgICAgICovCisrICAgICAg ICBzbGtfc2V0KDIsICJTYXZlIiwgMSk7CisrICAgICAgICBzbGtfc2V0KDMsICJPcGVuIiwgMSk7 CisrICAgICAgICBzbGtfc2V0KDQsICJHb3RvIiwgMSk7CisrICAgICAgICBzbGtfc2V0KDUsICJG aW5kIiwgMSk7CisrICAgICAgICBzbGtfc2V0KDYsIChwcmludEhleCkgPyAiSGV4IEFkZHIiOiJE ZWMgQWRkciIsIDEpOworKyAgICAgICAgc2xrX3NldCg3LCAiSGV4IEVkaXQiLCAxKTsKKysgICAg ICAgIHNsa19zZXQoOCwgIlF1aXQiLCAxKTsKKysgICAgfQorICAgICBzbGtfbm91dHJlZnJlc2go KTsJCQkJCS8qIHJlZnJlc2ggdGhlIHNjcmVlbiAqLworIH0KKyAKK0BAIC00NTEsMTMgKzQ2NSwx NSBAQCB2b2lkIHBvcHVwV2luKGNoYXIgKm1zZywgaW50IHRpbWUpCisgCisgICAgIGtleXBhZCh0 bXB3aW4sIFRSVUUpOworIAorLSAgICBtdndwcmludHcodG1wd2luLDIsMywgbXNnKTsJCQkJLyog b3V0cHV0IG1lc2cgICAgICAgICovCisrICAgIG12d3ByaW50dyh0bXB3aW4sMiwzLCAiJXMiLCBt c2cpOwkJCS8qIG91dHB1dCBtZXNnICAgICAgICAqLworICAgICB3bW92ZSh0bXB3aW4sMixsZW4r NCk7CisgICAgIHdyZWZyZXNoKHRtcHdpbik7CisgCisgICAgIGlmICh0aW1lID09IC0xKQorICAg ICAgICAgd2dldGNoKHRtcHdpbik7CistICAgIGVsc2UKKysgICAgZWxzZSBpZiAodGltZSA9PSAt MikgICAgICAvKiBqdXN0IHByaW50IHRoZSBwb3B1cCBhbmQgbGVhdmUgaXQgdGhlcmUgKi8KKysg ICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAvKiB3aGVuIHdvcmsgZmluaXNoZWQsIHlvdSBz aG91bGQgY2FsbCAqLworKyAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgIC8qIGFub3RoZXIg cG9wdXAgdG8gaW5mb3JtIGFuZCByZXN0b3JlICovCisgICAgICAgICBzbGVlcCh0aW1lKTsJCQkJ CS8qIHdhaXQgICAgICAgICAgICAgICAqLworIAorICAgICBkZWx3aW4odG1wd2luKTsKK0BAIC00 OTIsNyArNTA4LDcgQEAgc2hvcnQgaW50IHF1ZXN0aW9uV2luKGNoYXIgKm1zZykKKyAKKyAgICAg dG1wd2luID0gZHJhd2JveCh5LCB4LCA1LCBsZW4gKyA2KTsJCQkvKiBjcmVhdGUgd2luZG93ICAg ICAgKi8KKyAKKy0gICAgbXZ3cHJpbnR3KHRtcHdpbiwyLDMsIG1zZyk7CisrICAgIG12d3ByaW50 dyh0bXB3aW4sMiwzLCAiJXMiLCBtc2cpOworICAgICB3bW92ZSh0bXB3aW4sMixsZW4rNCk7Cisg ICAgIHdyZWZyZXNoKHRtcHdpbik7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3N0YWNrLmMgYi9zcmMv c3RhY2suYworaW5kZXggMjQwNGJkOS4uYjUzMGYxYSAxMDA2NDQKKy0tLSBhL3NyYy9zdGFjay5j CisrKysgYi9zcmMvc3RhY2suYworQEAgLTEsNSArMSw2IEBACisgLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKlwKKyAgKiAgQ29weXJpZ2h0IChDKSAyMDAxLCBoZXhjdXJzZSBpcyB3cml0dGVuIGJ5IEpl d2Zpc2ggYW5kIEFybW90aCAgICAgICAgICAgICAqCisrICogIENvcHlyaWdodCAoQykgMjAyMCwy MDIxIHByc28gYXQgZ2l0aHViLCBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzICAgICAgICAgICAgKgor ICAqCQkJCQkJCQkJICAgICAgKgorICAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgICAgICoKKyAgKiAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgICAgICAqCitAQCAtMTgsNDQgKzE5LDMwIEBACisgXCoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKyAjaW5jbHVkZSAiaGV4LmgiCisgCistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKlwKKy0gKiBEZXNjcmlwdGlvbjogdGhlIGp1c3Qgc2V0 cyB0aGUgc3RhY2sgcG9pbnRlciB0byAgICAqCistICogCQlOVUxMOyBpdCByZWFsbHkgaGFzIG5v IGJ1c2luZXNzIGJlaW5nICoKKy0gKgkJZnVuY3Rpb24gYW55d2F5cwkJICAgICAgKgorLVwqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistdm9p ZCBjcmVhdGVTdGFjayhoZXhTdGFjayAqc3RhY2spCisteworLSAgICAvKiBjYWxsb2MoKSBpcyB1 c2VkIGJlY2F1c2UgaXQgTlVMTFMgb3V0IGFsbCByZXR1cm5lZCBtZW1vcnkgKi8KKy0gICAgLyog c3RhY2sgPSAoaGV4U3RhY2sgKikgY2FsbG9jKDEsIHNpemVvZihoZXhTdGFjaykpOworLSAgICBz dGFjay0+bGxpc3QgPSBOVUxMOworLSAgICBzdGFjay0+cHJldiA9IE5VTEw7CistICAgICovCist ICAgIHN0YWNrID0gTlVMTDsKKy0gICAgc3RhY2stPmxsaXN0ID0gTlVMTDsKKy0gICAgc3RhY2st PnByZXYgPSBOVUxMOworLX0KKy0KKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqXAorICAqIERlc2NyaXB0aW9uOiB0aGlzIHB1c2hlcyBhIHN0 cnVjdHVyZSBvZiB0eXBlICAgICAgICoKKyAgKgkJaGV4U3RhY2sgdG8gdGhlIHN0YWNrLiAgTlVM TCBiZWluZyB0aGUqCisgICoJCWluaXRpYWwgc3RhdGUgb2YgdGhlIHN0YWNrICAgICAgICAgICAg KgorIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCistdm9pZCBwdXNoU3RhY2soaGV4U3RhY2sgKipzdGFjaywgaGV4U3RhY2sgKnRtcFN0YWNr KQorK3ZvaWQgcHVzaFN0YWNrKGhleFN0YWNrICoqc3RhY2ssIG9mZl90IGNsLCBpbnQgdmFsKQor IHsKKy0gICAgaGV4U3RhY2sgKm9sZFN0YWNrOworKyAgICBoZXhTdGFjayAqb2xkU3RhY2ssICpu ZXdTdGFjazsKKyAgICAgb2xkU3RhY2sgPSAqc3RhY2s7CisgCisrICAgIC8qIGNhbGxvYygpIGlz IHVzZWQgYmVjYXVzZSBpdCBOVUxMUyBvdXQgYWxsIHJldHVybmVkIG1lbW9yeSAgKi8KKysgICAg bmV3U3RhY2sgPSAoaGV4U3RhY2sgKikgY2FsbG9jKDEsIHNpemVvZihoZXhTdGFjaykpOworKyAg ICBuZXdTdGFjay0+Y3VycmVudExvYyA9IGNsOworKyAgICBuZXdTdGFjay0+c2F2ZWRWYWwgPSB2 YWw7CisrCisgICAgIGlmIChvbGRTdGFjayA9PSBOVUxMKQkJCQkvKiBiZWdpbmluZyBvZiBzdGFj ayAgKi8KKy0gICAgICAgICpzdGFjayA9IHRtcFN0YWNrOworKyAgICAgICAgKnN0YWNrID0gbmV3 U3RhY2s7CisgICAgIGVsc2UgCisgICAgIHsKKy0gICAgICAgIHRtcFN0YWNrLT5wcmV2ID0gb2xk U3RhY2s7CistICAgICAgICAqc3RhY2sgPSB0bXBTdGFjazsKKy0KKysgICAgICAgIG5ld1N0YWNr LT5wcmV2ID0gb2xkU3RhY2s7CisrICAgICAgICAqc3RhY2sgPSBuZXdTdGFjazsKKyAgICAgfQor IH0KKyAKKy0KKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqXAorICAqIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHBvcHMgYSBzdHJ1Y3R1 cmUgb2ZmIG9mICoKKyAgKgkJdGhlIHN0YWNrIGFuZCB0aGVuIGZyZWUncyBpdCdzICAgICAgICAq CmRpZmYgLS1naXQgYS9zcmNwa2dzL2hleGN1cnNlL3RlbXBsYXRlIGIvc3JjcGtncy9oZXhjdXJz ZS90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uZDIz MDc3Mzc3MTBhYzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2hleGN1cnNlL3RlbXBsYXRl CkBAIC0wLDAgKzEsMTMgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2hleGN1cnNlJworcGtnbmFt ZT1oZXhjdXJzZQordmVyc2lvbj0xLjYwLjAKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPWdudS1j b25maWd1cmUKK2hvc3RtYWtlZGVwZW5kcz0iYXV0b2NvbmYgYXV0b21ha2UiCittYWtlZGVwZW5k cz0ibmN1cnNlcy1kZXZlbCIKK3Nob3J0X2Rlc2M9Ik5jdXJzZXMtYmFzZWQgY29uc29sZSBoZXhl ZGl0b3Igd3JpdHRlbiBpbiBDIgorbWFpbnRhaW5lcj0iTWloYWlsIEl2YW5jaGV2IDxjb250YWN0 QGl2YW5jaGV2Lm5ldD4iCitsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgoraG9tZXBhZ2U9Imh0 dHBzOi8vZ2l0aHViLmNvbS9Mb25ueUdvbWVzL2hleGN1cnNlIgorZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vTG9ubnlHb21lcy9oZXhjdXJzZS9hcmNoaXZlL3JlZnMvdGFncy92JHt2ZXJz aW9ufS50YXIuZ3oiCitjaGVja3N1bT1mNjkxOWU0YTgyNGVlMzU0ZjAwM2YwYzQyZTRjNGNlZjk4 YTkzYWE3ZTNhYTQ0OWNhZWRkMTNmOWEyZGI1NTMwCg== --===============6919648188453186657==--