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=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham 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 E83662BB6B for ; Mon, 19 Feb 2024 06:35:08 +0100 (CET) Content-Type: multipart/mixed; boundary="===============7714599502363162173==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_LuaJIT=3A_update_to_2=2E1=2E1706708390=2C_cleanup=2E?= To: ml@inbox.vuxu.org From: yoshiyoshyosh Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 19 Feb 2024 06:35:08 +0100 List-Id: Message-Id: <20240219053508.E83662BB6B@inbox.vuxu.org> GitHub notification mails are now in MIME to allow UTF8. --===============7714599502363162173== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgeW9zaGl5b3NoeW9zaCBhZ2FpbnN0 IG1hc3RlciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5j b20veW9zaGl5b3NoeW9zaC92b2lkLXBhY2thZ2VzIGx1YWppdC0yLjEtcm9sbGluZwpodHRwczov L2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDg0NTMKCkx1YUpJVDog dXBkYXRlIHRvIDIuMS4xNzA2NzA4MzkwLCBjbGVhbnVwLgojIyMjIFRlc3RpbmcgdGhlIGNoYW5n ZXMNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhpcyBQUjogKipicmllZmx5KioNCiAgLSBU aGUgb25seSBsdWEgdGhpbmcgSSByZWFsbHkgcnVuIGlzIGF3ZXNvbWV3bS4gSSBidWlsdCBhd2Vz b21ld20gYWdhaW5zdCBsdWFqaXQgd2l0aCB0aGUgYnVpbGQgb3B0aW9uIGFuZCBldmVyeXRoaW5n IHNlZW1zIGdvb2QsIGJ1dCBvZiBjb3Vyc2UgYW55IGZ1cnRoZXIgdGVzdGluZyBpcyBlbmNvdXJh Z2VkLg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2Fs bHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsIChgeDg2XzY0LWdsaWJjYCkNCi0gSSBidWls dCB0aGlzIFBSIGxvY2FsbHkgZm9yIHRoZXNlIGFyY2hpdGVjdHVyZXMgKGlmIHN1cHBvcnRlZC4g bWFyayBjcm9zc2J1aWxkcyk6DQogIC0gYHg4Nl82NC1tdXNsYA0KICAtIGBpNjg2LWdsaWJjYCAo Ym90aCBjcm9zc2J1aWxkIGFuZCBtYXN0ZXJkaXIpDQogIC0gYGFhcmNoNjQtZ2xpYmNgIChjcm9z c2J1aWxkKQ0KICAtIGBhYXJjaDY0LW11c2xgIChjcm9zc2J1aWxkKQ0KICAtIGBhcm12N2wtZ2xp YmNgIChjcm9zc2J1aWxkKQ0KDQpUaGlzIGFkZHJlc3NlcyAjNDgzNDkuDQoNCkx1YUpJVCBoYXMg bW92ZWQgdG8gInJvbGxpbmcgcmVsZWFzZXMiIG9uIGJyYW5jaGVzIGluIHRoZWlyIGdpdCByZXBv LCB3aGljaCBiYXNpY2FsbHkgbWVhbnMgcmVsZWFzZXMgYXJlIGdpdCBjb21taXRzIHRvIGEgYHYy LjFgIGJyYW5jaC4gT2YgY291cnNlLCB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoIHZvaWQncyBw YWNrYWdpbmcgcGhpbG9zb3BoeS4gSG93ZXZlciwgdGhlcmUgYWxzbyBzZWVtcyB0byBiZSBhIGB2 Mi4xYCAqdGFnKiB0aGF0IHdhcyBjcmVhdGVkIGR1cmluZyB0aGUgbW92ZSBhbmQgbm90IHVwZGF0 ZWQgc2luY2UuIEknbSB1bnN1cmUgb24gd2hldGhlciB0aGlzIHRhZyBpcyBzaW1wbHkgbWVhbnQg dG8gYmUgYSBtYXJrZXIgZm9yIHRoZSBzdGFydCBvZiB2Mi4xIGluIHRoZSBuZXcgcm9sbGluZyBy ZWxlYXNlIGVyYSwgb3IgaWYgdGhleSBpbnRlbmQgZm9yIGl0IHRvIGJlIGEgc3RhYmxlIHRhZyB0 aGF0ICJyZWxlYXNlcyIgbWlnaHQgb2NjYXNpb25hbGx5IGdldCBwdXNoZWQgdG8gZXZlcnkgbm93 IGFuZCB0aGVuLg0KV2hhdGV2ZXIgdGhlIGNhc2UsIHRoaXMgaXMgYSB0YWcgdGhhdCB3YXMgInJl bGVhc2VkIiBpbiBhIGZvcm0gdGhleSBzZWVtaW5nbHkgZGVlbSBzdGFibGUgZW5vdWdoLCB3aGlj aCBpcyB3aHkgSSB0aGluayBvZiBpdCBhcyBlbm91Z2ggdG8gdXBkYXRlIHRvIChlc3BlY2lhbGx5 IHNpbmNlIHdlJ2QgYmUgZ2V0dGluZyBvZmYgYSA2IHllYXIgb2xkIHZlcnNpb24gdG8gYSA1IG1v bnRoIG9sZCB2ZXJzaW9uIG5vdykuDQoNClJlZ2FyZGluZyB0aGUgdmVyc2lvbiBudW1iZXI6IElu IHRoZSBtYWtlZmlsZXMsIHRoZXJlIGV4aXN0cyBhIGBSRUxWRVJgIG1hY3JvIFt0aGF0IGdldHMg c2V0IGJ5IGEgYGdpdCBzaG93YCBjb21tYW5kXShodHRwczovL3JlcG8ub3IuY3ovbHVhaml0LTIu MC5naXQvYmxvYi8yMDkwODQyNDEwZTBiYTZmODFmYWQzMTBhNzdiZjU0MzI0ODgyNDlhOi9zcmMv TWFrZWZpbGUjbDQ3OCkuIFRoZSAiY2Fub25pY2FsIiB2ZXJzaW9uIG51bWJlciBpbiB0aGUgbWFr ZWZpbGVzIHRoZW4gYmVjb21lcyBgbWFqb3IubWlub3IucmVsdmVyYCBhbmQgdGhlIGJpbmFyeS9s aWJyYXJ5IHZlcnNpb24gaXMgaW5zdGFsbGVkIHdpdGggdGhpcyB2ZXJzaW9uIG51bWJlci4gVGhp cyBpcyB0aGUgb25seSByZWFsIHBhdGNoIHZlcnNpb24gbnVtYmVyIHRoYXQgd2UgaGF2ZSwgc28g aXQncyB3aGF0IEkgYmVsaWV2ZSBzaG91bGQgZ28gaW4gdGhlIHZlcnNpb24gbnVtYmVyLiBJIGp1 c3QgdXNlZCB0aGUgc2FtZSBgZ2l0IHNob3dgIHRoYXQgdGhleSB1c2UgYW5kIGJha2VkIGl0IGlu dG8gYHZlcnNpb25gDQoNCkkgcmVtb3ZlZCBhbGwgYnV0IHR3byBvZiB0aGUgcGF0Y2hlcywgYXMg dGhleSBoYXZlIGVpdGhlciBiZWVuIHVwc3RyZWFtZWQgaW50byB0aGUgYHYyLjFgIHRhZyBvciB3 ZXJlIGZvciBwb3dlcnBjLCB3aGljaCB2b2lkIGRvZXNuJ3Qgc3VwcG9ydCBhbnltb3JlLiBTaG91 bGQgd2UgZXZlbiBoYXZlIHRoZSAiZW5hYmxlIGRlYnVnIHN5bWJvbHMiIHBhdGNoIGZvciBtYWlu IHJlcG8gYnVpbGRzIGluc3RlYWQgb2YgbGVhdmluZyBpdCB0byBgLWRiZ2A/IEknbSBvbmx5IGtl ZXBpbmcgaXQgYmVjYXVzZSBldmVyeSBvdGhlciBkaXN0cmlidXRpb24ga2VlcHMgaXQuDQoNCkkg YWxzbyBqdXN0IGNsZWFuZWQgdXAgdGhlIHRlbXBsYXRlIGluIGdlbmVyYWw7IGl0J3MgbW9yZSBj b25jaXNlIGFuZCBvcmdhbml6ZWQgSU1PIHdoaWxlIGFjaGlldmluZyB0aGUgc2FtZSB0aGluZy4K CkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFj a2FnZXMvcHVsbC80ODQ1My5wYXRjaCBpcyBhdHRhY2hlZA== --===============7714599502363162173== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-luajit-2.1-rolling-48453.patch" RnJvbSA0OTM5Y2ZjMTYwYzBlNDA5MzAyOTE4NmYwOGQwNzVmNWM3NmFhZDFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB5b3NoIDx5b3NoLWdpdEByaXNldXAubmV0PgpEYXRlOiBXZWQs IDMxIEphbiAyMDI0IDAyOjU0OjA5IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gTHVhSklUOiB1cGRh dGUgdG8gMi4xLjE3MDY3MDgzOTAsIGNsZWFudXAuCgotLS0KIC4uLi9wYXRjaGVzL3BwYy9tdXNs LXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAgOTMgLQogLi4uL3BhdGNoZXMvcHBjNjQvYWRk LXBwYzY0LXN1cHBvcnQucGF0Y2ggICAgIHwgMzUyMSAtLS0tLS0tLS0tLS0tLS0tLQogLi4uL3Bh dGNoZXMvcHBjNjQvZml4LXZtLWppdC1wcGM2NC5wYXRjaCAgICAgIHwgICAxMSAtCiAuLi4vYWFy Y2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5nLnBhdGNoICAgICAgfCAgMjMxIC0tCiAuLi4vYWFy Y2g2NC1yZWdpc3Rlci1hbGxvY2F0aW9uLWJ1Zy1maXgucGF0Y2ggfCAgIDI5IC0KIC4uLjFhYmVj NTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRjaCB8ICA1NjIgLS0tCiAuLi4vTHVh SklUL3BhdGNoZXMvZW5hYmxlLWRlYnVnLXN5bWJvbHMucGF0Y2ggfCAgIDI0IC0KIHNyY3BrZ3Mv THVhSklUL3BhdGNoZXMvZml4LWJjc2F2ZS1wcGM2NC5wYXRjaCB8ICAgMzMgLQogLi4uL2dldC1y aWQtb2YtbHVhaml0LXZlcnNpb24tc3ltLnBhdGNoICAgICAgIHwgICA0MCArLQogLi4uL3BhdGNo ZXMvdW5wb2xsdXRlLWdsb2JhbC1uYW1lc3BhY2UucGF0Y2ggIHwgICAyMSAtCiBzcmNwa2dzL0x1 YUpJVC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc1ICstCiBzcmNwa2dzL0x1 YUpJVC91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiAxMiBmaWxlcyBj aGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCA0NTk2IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjL211c2wtcHBjLXNlY3VyZXBs dC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMv cHBjNjQvYWRkLXBwYzY0LXN1cHBvcnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L0x1YUpJVC9maWxlcy9wYXRjaGVzL3BwYzY0L2ZpeC12bS1qaXQtcHBjNjQucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNoNjQtRml4LWV4aXQtc3R1 Yi1wYXRjaGluZy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvTHVhSklUL3BhdGNo ZXMvYWFyY2g2NC1yZWdpc3Rlci1hbGxvY2F0aW9uLWJ1Zy1maXgucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2U5YWYxYWJlYzU0MmU2Zjk4NTFmZjIzNjhl N2YxOTZiNjM4MmE0NGMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL0x1YUpJVC9w YXRjaGVzL2VuYWJsZS1kZWJ1Zy1zeW1ib2xzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9MdWFKSVQvcGF0Y2hlcy9maXgtYmNzYXZlLXBwYzY0LnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy91bnBvbGx1dGUtZ2xvYmFsLW5hbWVzcGFjZS5w YXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjL211c2wt cHBjLXNlY3VyZXBsdC5wYXRjaCBiL3NyY3BrZ3MvTHVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjL211 c2wtcHBjLXNlY3VyZXBsdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAw MGNhMGVkM2Q1My4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL0x1YUpJVC9maWxlcy9wYXRj aGVzL3BwYy9tdXNsLXBwYy1zZWN1cmVwbHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MyAr MCwwIEBACi1JbXBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9MdWFKSVQvTHVhSklUL3B1 bGwvNDg2LgotCi1UaGlzIGZpeGVzIGNyYXNoZXMgb24gcHBjLW11c2wsIGFzIG11c2wgb25seSBz dXBwb3J0cyBzZWN1cmVwbHQuCi0KLS0tLSBhL3NyYy9sal9kaXNwYXRjaC5jCi0rKysgYi9zcmMv bGpfZGlzcGF0Y2guYwotQEAgLTU2LDYgKzU2LDE4IEBAIHN0YXRpYyBjb25zdCBBU01GdW5jdGlv biBkaXNwYXRjaF9nb3RbXSA9IHsKLSAjdW5kZWYgR09URlVOQwotICNlbmRpZgotIAotKyNpZiBM Sl9UQVJHRVRfUFBDICYmIChMSl9BUkNIX0JJVFMgPT0gMzIpCi0rI2luY2x1ZGUgPG1hdGguaD4K LStMSl9GVU5DQV9OT1JFVCB2b2lkIExKX0ZBU1RDQUxMIGxqX2ZmaF9jb3JvdXRpbmVfd3JhcF9l cnIobHVhX1N0YXRlICpMLAotKwkJCQkJCQkgIGx1YV9TdGF0ZSAqY28pOwotKwotKyNkZWZpbmUg R09URlVOQyhuYW1lKQkoQVNNRnVuY3Rpb24pbmFtZSwKLStzdGF0aWMgY29uc3QgQVNNRnVuY3Rp b24gZGlzcGF0Y2hfZ290W10gPSB7Ci0rICBHT1RERUYoR09URlVOQykKLSt9OwotKyN1bmRlZiBH T1RGVU5DCi0rI2VuZGlmCi0rCi0gLyogSW5pdGlhbGl6ZSBpbnN0cnVjdGlvbiBkaXNwYXRjaCB0 YWJsZSBhbmQgaG90IGNvdW50ZXJzLiAqLwotIHZvaWQgbGpfZGlzcGF0Y2hfaW5pdChHR19TdGF0 ZSAqR0cpCi0gewotQEAgLTc3LDYgKzg5LDkgQEAgdm9pZCBsal9kaXNwYXRjaF9pbml0KEdHX1N0 YXRlICpHRykKLSAjaWYgTEpfVEFSR0VUX01JUFMKLSAgIG1lbWNweShHRy0+Z290LCBkaXNwYXRj aF9nb3QsIExKX0dPVF9fTUFYKnNpemVvZihBU01GdW5jdGlvbiAqKSk7Ci0gI2VuZGlmCi0rI2lm IExKX1RBUkdFVF9QUEMgJiYgKExKX0FSQ0hfQklUUyA9PSAzMikKLSsgIG1lbWNweShHRy0+Z290 LCBkaXNwYXRjaF9nb3QsIExKX0dPVF9fTUFYKjQpOwotKyNlbmRpZgotIH0KLSAKLSAjaWYgTEpf SEFTSklUCi0tLS0gYS9zcmMvbGpfZGlzcGF0Y2guaAotKysrIGIvc3JjL2xqX2Rpc3BhdGNoLmgK LUBAIC02Niw2ICs2NiwyMSBAQCBHT1RERUYoR09URU5VTSkKLSB9OwotICNlbmRpZgotIAotKyNp ZiBMSl9UQVJHRVRfUFBDICYmIChMSl9BUkNIX0JJVFMgPT0gMzIpCi0rLyogTmVlZCBvdXIgb3du IGdsb2JhbCBvZmZzZXQgdGFibGUgZm9yIHRoZSBkcmVhZGVkIE1JUFMgY2FsbGluZyBjb252ZW50 aW9ucy4gKi8KLSsjZGVmaW5lIEdPVERFRihfKSBcCi0rICBfKGZsb29yKSBfKGNlaWwpIF8odHJ1 bmMpIF8obG9nKSBfKGxvZzEwKSBfKGV4cCkgXyhzaW4pIF8oY29zKSBfKHRhbikgXAotKyAgXyhh c2luKSBfKGFjb3MpIF8oYXRhbikgXyhzaW5oKSBfKGNvc2gpIF8odGFuaCkgXyhmcmV4cCkgXyht b2RmKSBfKGF0YW4yKSBcCi0rICBfKHBvdykgXyhmbW9kKSBfKGxkZXhwKSBfKHNxcnQpCi0rCi0r ZW51bSB7Ci0rI2RlZmluZSBHT1RFTlVNKG5hbWUpIExKX0dPVF8jI25hbWUsCi0rR09UREVGKEdP VEVOVU0pCi0rI3VuZGVmIEdPVEVOVU0KLSsgIExKX0dPVF9fTUFYCi0rfTsKLSsjZW5kaWYKLSsK LSAvKiBUeXBlIG9mIGhvdCBjb3VudGVyLiBNdXN0IG1hdGNoIHRoZSBjb2RlIGluIHRoZSBhc3Nl bWJsZXIgVk0uICovCi0gLyogMTYgYml0cyBhcmUgc3VmZmljaWVudC4gT25seSAwLjAwMTUlIG92 ZXJoZWFkIHdpdGggbWF4aW11bSBzbG90IHBlbmFsdHkuICovCi0gdHlwZWRlZiB1aW50MTZfdCBI b3RDb3VudDsKLUBAIC04OSw3ICsxMDQsNyBAQCB0eXBlZGVmIHVpbnQxNl90IEhvdENvdW50Owot IHR5cGVkZWYgc3RydWN0IEdHX1N0YXRlIHsKLSAgIGx1YV9TdGF0ZSBMOwkJCQkvKiBNYWluIHRo cmVhZC4gKi8KLSAgIGdsb2JhbF9TdGF0ZSBnOwkJCS8qIEdsb2JhbCBzdGF0ZS4gKi8KLS0jaWYg TEpfVEFSR0VUX01JUFMKLSsjaWYgTEpfVEFSR0VUX01JUFMgfHwgKExKX1RBUkdFVF9QUEMgJiYg KExKX0FSQ0hfQklUUyA9PSAzMikpCi0gICBBU01GdW5jdGlvbiBnb3RbTEpfR09UX19NQVhdOwkJ LyogR2xvYmFsIG9mZnNldCB0YWJsZS4gKi8KLSAjZW5kaWYKLSAjaWYgTEpfSEFTSklUCi0tLS0g YS9zcmMvdm1fcHBjLmRhc2MKLSsrKyBiL3NyYy92bV9wcGMuZGFzYwotQEAgLTU5LDcgKzU5LDEy IEBACi0gfC5kZWZpbmUgRU5WX09GUywJOAotIHwuZW5kaWYKLSB8LmVsc2UgIC8vIE5vIFRPQy4K LS18Lm1hY3JvIGJsZXgsIHRhcmdldDsgYmwgZXh0ZXJuIHRhcmdldEBwbHQ7IC5lbmRtYWNybwot K3wubWFjcm8gYmxleCwgdGFyZ2V0Ci0rfCAgbHd6IFRNUDAsIERJU1BBVENIX0dPVCh0YXJnZXQp KERJU1BBVENIKQotK3wgIG10Y3RyIFRNUDAKLSt8ICBiY3RybAotK3wgIC8vYmwgZXh0ZXJuIHRh cmdldEBwbHQKLSt8LmVuZG1hY3JvCi0gfC5tYWNybyAudG9jLCBhLCBiOyAuZW5kbWFjcm8KLSB8 LmVuZGlmCi0gfC5tYWNybyAudG9jZW52LCBhLCBiOyAuaWYgVE9DRU5WOyBhLCBiOyAuZW5kaWY7 IC5lbmRtYWNybwotQEAgLTQ0OCw2ICs0NTMsOCBAQAotIHwvLyBBc3N1bWVzIERJU1BBVENIIGlz IHJlbGF0aXZlIHRvIEdMLgotICNkZWZpbmUgRElTUEFUQ0hfR0woZmllbGQpCShHR19ESVNQMkcg KyAoaW50KW9mZnNldG9mKGdsb2JhbF9TdGF0ZSwgZmllbGQpKQotICNkZWZpbmUgRElTUEFUQ0hf SihmaWVsZCkJKEdHX0RJU1AySiArIChpbnQpb2Zmc2V0b2Yoaml0X1N0YXRlLCBmaWVsZCkpCi0r I2RlZmluZSBHR19ESVNQMkdPVAkJKEdHX09GUyhnb3QpIC0gR0dfT0ZTKGRpc3BhdGNoKSkKLSsj ZGVmaW5lIERJU1BBVENIX0dPVChuYW1lKQkoR0dfRElTUDJHT1QgKyA0KkxKX0dPVF8jI25hbWUp Ci0gfAotICNkZWZpbmUgUEMyUFJPVE8oZmllbGQpICAoKGludClvZmZzZXRvZihHQ3Byb3RvLCBm aWVsZCktKGludClzaXplb2YoR0Nwcm90bykpCi0gfApkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFK SVQvZmlsZXMvcGF0Y2hlcy9wcGM2NC9hZGQtcHBjNjQtc3VwcG9ydC5wYXRjaCBiL3NyY3BrZ3Mv THVhSklUL2ZpbGVzL3BhdGNoZXMvcHBjNjQvYWRkLXBwYzY0LXN1cHBvcnQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjODY1ODU5ZGE5MjMuLjAwMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9MdWFKSVQvZmlsZXMvcGF0Y2hlcy9wcGM2NC9hZGQtcHBjNjQtc3VwcG9ydC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1MjEgKzAsMCBAQAotRnJvbTogIlJvZHJpZ28gUi4g R2FsdmFvIiA8cm9zYXR0aWdAYnIuaWJtLmNvbT4KLURhdGU6IFdlZCwgMTEgT2N0IDIwMTcgMDg6 NDE6NDcgKzAwMDAKLVN1YmplY3Q6IE5ldyBwYXRjaCBwcm9wb3NhbCBmb3IgUFBDNjQgc3VwcG9y dAotCi0gQ3JlYXRlIGEgcGF0Y2ggZm9yIFBQQzY0IHN1cHBvcnQgYmFzZWQgb24gCi1odHRwczov L2dpdGh1Yi5jb20vTHVhSklUL0x1YUpJVC9wdWxsLzE0MC4KLSBJdCByZXBsYWNlcyB0aGUgb2xk IHBhdGNoIHNpbmNlIHRoaXMgbmV3IG9uZSBpcyBtb3JlIGxpa2VseSB0byBiZSBtZXJnZWQgCi13 aXRoIGx1YWppdCB1cHN0cmVhbS4KLQotCi1BdXRob3I6IFJvZHJpZ28gUi4gR2FsdmFvIDxyb3Nh dHRpZ0Bici5pYm0uY29tPgotLS0tCi0gZHluYXNtL2Rhc21fcHBjLmx1YSAgICB8ICAgIDUgKwot IHNyYy9NYWtlZmlsZSAgICAgICAgICAgfCAgIDExICstCi0gc3JjL2hvc3QvYnVpbGR2bV9hc20u YyB8ICAgMTYgKy0KLSBzcmMvbGpfYXJjaC5oICAgICAgICAgIHwgICAxOCArLQotIHNyYy9sal9j Y2FsbC5jICAgICAgICAgfCAgMTY2ICsrKysrKy0KLSBzcmMvbGpfY2NhbGwuaCAgICAgICAgIHwg ICAxMyArCi0gc3JjL2xqX2NjYWxsYmFjay5jICAgICB8ICAgNjggKystCi0gc3JjL2xqX2N0eXBl LmggICAgICAgICB8ICAgIDIgKy0KLSBzcmMvbGpfZGVmLmggICAgICAgICAgIHwgICAgNCArCi0g c3JjL2xqX2ZyYW1lLmggICAgICAgICB8ICAgIDkgKwotIHNyYy9sal90YXJnZXRfcHBjLmggICAg fCAgIDE0ICsKLSBzcmMvdm1fcHBjLmRhc2MgICAgICAgIHwgMTI5MCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxMTYy IGluc2VydGlvbnMoKyksIDQ1NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBkeW5hc20vZGFz bV9wcGMubHVhIGR5bmFzbS9kYXNtX3BwYy5sdWEKLWluZGV4IGY3Mzk3NGQuLmE0YWQ3MGIgMTAw NjQ0Ci0tLS0gYS9keW5hc20vZGFzbV9wcGMubHVhCi0rKysgYi9keW5hc20vZGFzbV9wcGMubHVh Ci1AQCAtMjU3LDkgKzI1NywxMSBAQCBtYXBfb3AgPSB7Ci0gICBhZGRpY18zID0JIjMwMDAwMDAw UlJJIiwKLSAgIFsiYWRkaWMuXzMiXSA9ICIzNDAwMDAwMFJSSSIsCi0gICBhZGRpXzMgPQkiMzgw MDAwMDBSUjBJIiwKLSsgIGFkZGlsXzMgPQkiMzgwMDAwMDBSUjBKIiwKLSAgIGxpXzIgPQkiMzgw MDAwMDBSSSIsCi0gICBsYV8yID0JIjM4MDAwMDAwUkQiLAotICAgYWRkaXNfMyA9CSIzYzAwMDAw MFJSMEkiLAotKyAgYWRkaXNsXzMgPQkiM2MwMDAwMDBSUjBKIiwKLSAgIGxpc18yID0JIjNjMDAw MDAwUkkiLAotICAgbHVzXzIgPQkiM2MwMDAwMDBSVSIsCi0gICBiY18zID0JIjQwMDAwMDAwQUFL IiwKLUBAIC04NDIsNiArODQ0LDkgQEAgbWFwX29wID0gewotICAgc3JkaV8zID0Jb3BfYWxpYXMo InJsZGljbF80IiwgZnVuY3Rpb24ocCkKLSAgICAgcFs0XSA9IHBbM107IHBbM10gPSAiNjQtKCIu LnBbM10uLiIpIgotICAgZW5kKSwKLSsgIFsic3JkaS5fMyJdID0Jb3BfYWxpYXMoInJsZGljbC5f NCIsIGZ1bmN0aW9uKHApCi0rICAgIHBbNF0gPSBwWzNdOyBwWzNdID0gIjY0LSgiLi5wWzNdLi4i KSIKLSsgIGVuZCksCi0gICBjbHJsZGlfMyA9CW9wX2FsaWFzKCJybGRpY2xfNCIsIGZ1bmN0aW9u KHApCi0gICAgIHBbNF0gPSBwWzNdOyBwWzNdID0gIjAiCi0gICBlbmQpLAotZGlmZiAtLWdpdCBz cmMvTWFrZWZpbGUgc3JjL01ha2VmaWxlCi1pbmRleCA2YjczYTg5Li5jYzUwYmFlIDEwMDY0NAot LS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC00NTMsNyArNDUzLDE2 IEBAIGlmZXEgKHBwYywkKFRBUkdFVF9MSkFSQ0gpKQotICAgICBEQVNNX0FGTEFHUys9IC1EIEdQ UjY0Ci0gICBlbmRpZgotICAgaWZlcSAoUFMzLCQoVEFSR0VUX1NZUykpCi0tICAgIERBU01fQUZM QUdTKz0gLUQgUFBFIC1EIFRPQwotKyAgICBEQVNNX0FGTEFHUys9IC1EIFBQRQotKyAgZW5kaWYK LSsgIGlmbmVxICgsJChmaW5kc3RyaW5nIExKX0FSQ0hfUFBDX09QRCAxLCQoVEFSR0VUX1RFU1RB UkNIKSkpCi0rICAgIERBU01fQUZMQUdTKz0gLUQgT1BECi0rICBlbmRpZgotKyAgaWZuZXEgKCwk KGZpbmRzdHJpbmcgTEpfQVJDSF9QUENfT1BERU5WIDEsJChUQVJHRVRfVEVTVEFSQ0gpKSkKLSsg ICAgREFTTV9BRkxBR1MrPSAtRCBPUERFTlYKLSsgIGVuZGlmCi0rICBpZm5lcSAoLCQoZmluZHN0 cmluZyBMSl9BUkNIX1BQQ19FTEZWMiAxLCQoVEFSR0VUX1RFU1RBUkNIKSkpCi0rICAgIERBU01f QUZMQUdTKz0gLUQgRUxGVjIKLSAgIGVuZGlmCi0gICBpZm5lcSAoLCQoZmluZHN0cmluZyBMSl9B UkNIX1BQQzY0ICwkKFRBUkdFVF9URVNUQVJDSCkpKQotICAgICBEQVNNX0FSQ0g9IHBwYzY0Ci1k aWZmIC0tZ2l0IHNyYy9ob3N0L2J1aWxkdm1fYXNtLmMgc3JjL2hvc3QvYnVpbGR2bV9hc20uYwot aW5kZXggZmZkMTQ5MC4uNmJiOTk1ZSAxMDA2NDQKLS0tLSBhL3NyYy9ob3N0L2J1aWxkdm1fYXNt LmMKLSsrKyBiL3NyYy9ob3N0L2J1aWxkdm1fYXNtLmMKLUBAIC0xNDAsMTggKzE0MCwxNCBAQCBz dGF0aWMgdm9pZCBlbWl0X2FzbV93b3JkcmVsb2MoQnVpbGRDdHggKmN0eCwgdWludDhfdCAqcCwg aW50IG4sCi0gI2Vsc2UKLSAjZGVmaW5lIFRPQ1BSRUZJWCAiIgotICNlbmRpZgotLSAgaWYgKChp bnMgPj4gMjYpID09IDE2KSB7Ci0rICBpZiAoKGlucyA+PiAyNikgPT0gMTQpIHsKLSsgICAgZnBy aW50ZihjdHgtPmZwLCAiXHRhZGRpICVkLCVkLCVzXG4iLCAoaW5zID4+IDIxKSAmIDMxLCAoaW5z ID4+IDE2KSAmIDMxLCBzeW0pOwotKyAgfSBlbHNlIGlmICgoaW5zID4+IDI2KSA9PSAxNSkgewot KyAgICBmcHJpbnRmKGN0eC0+ZnAsICJcdGFkZGlzICVkLCVkLCVzXG4iLCAoaW5zID4+IDIxKSAm IDMxLCAoaW5zID4+IDE2KSAmIDMxLCBzeW0pOwotKyAgfSBlbHNlIGlmICgoaW5zID4+IDI2KSA9 PSAxNikgewotICAgICBmcHJpbnRmKGN0eC0+ZnAsICJcdCVzICVkLCAlZCwgIiBUT0NQUkVGSVgg IiVzXG4iLAotIAkgICAgKGlucyAmIDEpID8gImJjbCIgOiAiYmMiLCAoaW5zID4+IDIxKSAmIDMx LCAoaW5zID4+IDE2KSAmIDMxLCBzeW0pOwotICAgfSBlbHNlIGlmICgoaW5zID4+IDI2KSA9PSAx OCkgewotLSNpZiBMSl9BUkNIX1BQQzY0Ci0tICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCA9IHN0cmNo cihzeW0sICdAJyk7Ci0tICAgIGlmIChzdWZmaXggJiYgc3VmZml4WzFdID09ICdoJykgewotLSAg ICAgIGZwcmludGYoY3R4LT5mcCwgIlx0YWRkaXMgMTEsIDIsICVzXG4iLCBzeW0pOwotLSAgICB9 IGVsc2UgaWYgKHN1ZmZpeCAmJiBzdWZmaXhbMV0gPT0gJ2wnKSB7Ci0tICAgICAgZnByaW50Zihj dHgtPmZwLCAiXHRsZCAxMiwgJXNcbiIsIHN5bSk7Ci0tICAgIH0gZWxzZQotLSNlbmRpZgotICAg ICBmcHJpbnRmKGN0eC0+ZnAsICJcdCVzICIgVE9DUFJFRklYICIlc1xuIiwgKGlucyAmIDEpID8g ImJsIiA6ICJiIiwgc3ltKTsKLSAgIH0gZWxzZSB7Ci0gICAgIGZwcmludGYoc3RkZXJyLAotQEAg LTI1MCw3ICsyNDYsNyBAQCB2b2lkIGVtaXRfYXNtKEJ1aWxkQ3R4ICpjdHgpCi0gICBpbnQgaSwg cmVsOwotIAotICAgZnByaW50ZihjdHgtPmZwLCAiXHQuZmlsZSBcImJ1aWxkdm1fJXMuZGFzY1wi XG4iLCBjdHgtPmRhc21fYXJjaCk7Ci0tI2lmIExKX0FSQ0hfUFBDNjQKLSsjaWYgTEpfQVJDSF9Q UENfRUxGVjIKLSAgIGZwcmludGYoY3R4LT5mcCwgIlx0LmFiaXZlcnNpb24gMlxuIik7Ci0gI2Vu ZGlmCi0gICBmcHJpbnRmKGN0eC0+ZnAsICJcdC50ZXh0XG4iKTsKLWRpZmYgLS1naXQgc3JjL2xq X2FyY2guaCBzcmMvbGpfYXJjaC5oCi1pbmRleCBkNjA5YjM3Li41M2JjNjUxIDEwMDY0NAotLS0t IGEvc3JjL2xqX2FyY2guaAotKysrIGIvc3JjL2xqX2FyY2guaAotQEAgLTI2OSwxMCArMjY5LDE4 IEBACi0gI2lmIExKX1RBUkdFVF9DT05TT0xFCi0gI2RlZmluZSBMSl9BUkNIX1BQQzMyT042NAkx Ci0gI2RlZmluZSBMSl9BUkNIX05PRkZJCQkxCi0rI2lmIExKX1RBUkdFVF9QUzMKLSsjZGVmaW5l IExKX0FSQ0hfUFBDX09QRAkJMQotKyNlbmRpZgotICNlbGlmIExKX0FSQ0hfQklUUyA9PSA2NAot LSNkZWZpbmUgTEpfQVJDSF9QUEM2NAkJMQotLSNkZWZpbmUgTEpfVEFSR0VUX0dDNjQJCTEKLSsj ZGVmaW5lIExKX0FSQ0hfUFBDMzJPTjY0CTEKLSAjZGVmaW5lIExKX0FSQ0hfTk9KSVQJCTEJLyog TllJICovCi0rI2lmIF9DQUxMX0VMRiA9PSAyCi0rI2RlZmluZSBMSl9BUkNIX1BQQ19FTEZWMgkx Ci0rI2Vsc2UKLSsjZGVmaW5lIExKX0FSQ0hfUFBDX09QRAkJMQotKyNkZWZpbmUgTEpfQVJDSF9Q UENfT1BERU5WCTEKLSsjZW5kaWYKLSAjZW5kaWYKLSAKLSAjaWYgX0FSQ0hfUFdSNwotQEAgLTQy MywxMiArNDMxLDYgQEAKLSAjaWYgZGVmaW5lZChfU09GVF9GTE9BVCkgfHwgZGVmaW5lZChfU09G VF9ET1VCTEUpCi0gI2Vycm9yICJObyBzdXBwb3J0IGZvciBQb3dlclBDIENQVXMgd2l0aG91dCBk b3VibGUtcHJlY2lzaW9uIEZQVSIKLSAjZW5kaWYKLS0jaWYgIUxKX0FSQ0hfUFBDNjQgJiYgTEpf QVJDSF9FTkRJQU4gPT0gTFVBSklUX0xFCi0tI2Vycm9yICJObyBzdXBwb3J0IGZvciBsaXR0bGUt ZW5kaWFuIFBQQzMyIgotLSNlbmRpZgotLSNpZiBMSl9BUkNIX1BQQzY0Ci0tI2Vycm9yICJObyBz dXBwb3J0IGZvciBQb3dlclBDIDY0IGJpdCBtb2RlICh5ZXQpIgotLSNlbmRpZgotICNpZmRlZiBf X05PX0ZQUlNfXwotICNlcnJvciAiTm8gc3VwcG9ydCBmb3IgUFBDL2U1MDAgYW55bW9yZSAodXNl IEx1YUpJVCAyLjApIgotICNlbmRpZgotZGlmZiAtLWdpdCBzcmMvbGpfY2NhbGwuYyBzcmMvbGpf Y2NhbGwuYwotaW5kZXggNWMyNTJlNS4uYjg5MTU5MSAxMDA2NDQKLS0tLSBhL3NyYy9sal9jY2Fs bC5jCi0rKysgYi9zcmMvbGpfY2NhbGwuYwotQEAgLTM2OSwyMSArMzY5LDk3IEBACi0gI2VsaWYg TEpfVEFSR0VUX1BQQwotIC8qIC0tIFBQQyBjYWxsaW5nIGNvbnZlbnRpb25zIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotIAotKyNpZiBMSl9BUkNIX0JJ VFMgPT0gNjQKLSsKLSsjaWYgTEpfQVJDSF9QUENfRUxGVjIKLSsKLSsjZGVmaW5lIENDQUxMX0hB TkRMRV9TVFJVQ1RSRVQgXAotKyAgaWYgKHN6ID4gMTYgJiYgY2NhbGxfY2xhc3NpZnlfZnAoY3Rz LCBjdHIpIDw9IDApIHsgXAotKyAgICBjYy0+cmV0cmVmID0gMTsgIC8qIFJldHVybiBieSByZWZl cmVuY2UuICovIFwKLSsgICAgY2MtPmdwcltuZ3ByKytdID0gKEdQUkFyZylkcDsgXAotKyAgfQot KwotKyNkZWZpbmUgQ0NBTExfSEFORExFX1NUUlVDVFJFVDIgXAotKyAgaW50IGlzZnAgPSBjY2Fs bF9jbGFzc2lmeV9mcChjdHMsIGN0cik7IFwKLSsgIGludCBpOyBcCi0rICBpZiAoaXNmcCA9PSBG VFlQRV9GTE9BVCkgeyBcCi0rICAgIGZvciAoaSA9IDA7IGkgPCBjdHItPnNpemUgLyA0OyBpKysp IFwKLSsgICAgICAoKGZsb2F0ICopZHApW2ldID0gY2MtPmZwcltpXTsgXAotKyAgfSBlbHNlIGlm IChpc2ZwID09IEZUWVBFX0RPVUJMRSkgeyBcCi0rICAgIGZvciAoaSA9IDA7IGkgPCBjdHItPnNp emUgLyA4OyBpKyspIFwKLSsgICAgICAoKGRvdWJsZSAqKWRwKVtpXSA9IGNjLT5mcHJbaV07IFwK LSsgIH0gZWxzZSB7IFwKLSsgICAgaWYgKGN0ci0+c2l6ZSA8IDggJiYgTEpfQkUpIHsgXAotKyAg ICAgIHNwICs9IDggLSBjdHItPnNpemU7IFwKLSsgICAgfSBcCi0rICAgIG1lbWNweShkcCwgc3As IGN0ci0+c2l6ZSk7IFwKLSsgIH0KLSsKLSsjZWxzZQotKwotICNkZWZpbmUgQ0NBTExfSEFORExF X1NUUlVDVFJFVCBcCi0gICBjYy0+cmV0cmVmID0gMTsgIC8qIFJldHVybiBhbGwgc3RydWN0cyBi eSByZWZlcmVuY2UuICovIFwKLSAgIGNjLT5ncHJbbmdwcisrXSA9IChHUFJBcmcpZHA7Ci0gCi0r I2VuZGlmCi0rCi0gI2RlZmluZSBDQ0FMTF9IQU5ETEVfQ09NUExFWFJFVCBcCi0gICAvKiBDb21w bGV4IHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gMiBvciA0IEdQUnMuICovIFwKLSAgIGNjLT5yZXRy ZWYgPSAwOwotIAotKyNkZWZpbmUgQ0NBTExfSEFORExFX1NUUlVDVEFSRwotKwotICNkZWZpbmUg Q0NBTExfSEFORExFX0NPTVBMRVhSRVQyIFwKLS0gIG1lbWNweShkcCwgc3AsIGN0ci0+c2l6ZSk7 ICAvKiBDb3B5IGNvbXBsZXggZnJvbSBHUFJzLiAqLwotKyAgaWYgKGN0ci0+c2l6ZSA9PSAyKnNp emVvZihmbG9hdCkpIHsgIC8qIENvcHkgY29tcGxleCBmbG9hdCBmcm9tIEZQUnMuICovIFwKLSsg ICAgKChmbG9hdCAqKWRwKVswXSA9IGNjLT5mcHJbMF07IFwKLSsgICAgKChmbG9hdCAqKWRwKVsx XSA9IGNjLT5mcHJbMV07IFwKLSsgIH0gZWxzZSB7ICAvKiBDb3B5IGNvbXBsZXggZG91YmxlIGZy b20gRlBScy4gKi8gXAotKyAgICAoKGRvdWJsZSAqKWRwKVswXSA9IGNjLT5mcHJbMF07IFwKLSsg ICAgKChkb3VibGUgKilkcClbMV0gPSBjYy0+ZnByWzFdOyBcCi0rICB9Ci0rCi0rI2RlZmluZSBD Q0FMTF9IQU5ETEVfQ09NUExFWEFSRyBcCi0rICBpc2ZwID0gMTsgXAotKyAgaWYgKGQtPnNpemUg PT0gc2l6ZW9mKGZsb2F0KSAqIDIpIHsgXAotKyAgICBkID0gY3R5cGVfZ2V0KGN0cywgQ1RJRF9D T01QTEVYX0RPVUJMRSk7IFwKLSsgICAgaXNmMzIgPSAxOyBcCi0rICB9Ci0rCi0rI2RlZmluZSBD Q0FMTF9IQU5ETEVfUkVHQVJHIFwKLSsgIGlmIChpc2ZwICYmIGQtPnNpemUgPT0gc2l6ZW9mKGZs b2F0KSkgeyBcCi0rICAgIGQgPSBjdHlwZV9nZXQoY3RzLCBDVElEX0RPVUJMRSk7IFwKLSsgICAg aXNmMzIgPSAxOyBcCi0rICB9IFwKLSsgIGlmIChuZ3ByIDwgbWF4Z3ByKSB7IFwKLSsgICBkcCA9 ICZjYy0+Z3ByW25ncHJdOyBcCi0rICAgbmdwciArPSBuOyBcCi0rICAgaWYgKG5ncHIgPiBtYXhn cHIpIHsgXAotKyAgICAgbnNwICs9IG5ncHIgLSA4OyBcCi0rICAgICBuZ3ByID0gODsgXAotKyAg ICAgaWYgKG5zcCA+IENDQUxMX01BWFNUQUNLKSB7IFwKLSsgICAgICAgZ290byBlcnJfbnlpOyBc Ci0rICAgICB9IFwKLSsgICB9IFwKLSsgICBnb3RvIGRvbmU7IFwKLSsgIH0KLSsKLSsjZWxzZQot KwotKyNkZWZpbmUgQ0NBTExfSEFORExFX1NUUlVDVFJFVCBcCi0rICBjYy0+cmV0cmVmID0gMTsg IC8qIFJldHVybiBhbGwgc3RydWN0cyBieSByZWZlcmVuY2UuICovIFwKLSsgIGNjLT5ncHJbbmdw cisrXSA9IChHUFJBcmcpZHA7Ci0rCi0rI2RlZmluZSBDQ0FMTF9IQU5ETEVfQ09NUExFWFJFVCBc Ci0rICAvKiBDb21wbGV4IHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gMiBvciA0IEdQUnMuICovIFwK LSsgIGNjLT5yZXRyZWYgPSAwOwotIAotICNkZWZpbmUgQ0NBTExfSEFORExFX1NUUlVDVEFSRyBc Ci0gICBycCA9IGNkYXRhcHRyKGxqX2NkYXRhX25ldyhjdHMsIGRpZCwgc3opKTsgXAotICAgc3og PSBDVFNJWkVfUFRSOyAgLyogUGFzcyBhbGwgc3RydWN0cyBieSByZWZlcmVuY2UuICovCi0gCi0r I2RlZmluZSBDQ0FMTF9IQU5ETEVfQ09NUExFWFJFVDIgXAotKyAgbWVtY3B5KGRwLCBzcCwgY3Ry LT5zaXplKTsgIC8qIENvcHkgY29tcGxleCBmcm9tIEdQUnMuICovCi0rCi0gI2RlZmluZSBDQ0FM TF9IQU5ETEVfQ09NUExFWEFSRyBcCi0gICAvKiBQYXNzIGNvbXBsZXggYnkgdmFsdWUgaW4gMiBv ciA0IEdQUnMuICovCi0gCi1AQCAtNDEwLDYgKzQ4Niw4IEBACi0gICAgIH0gXAotICAgfQotIAot KyNlbmRpZgotKwotICNkZWZpbmUgQ0NBTExfSEFORExFX1JFVCBcCi0gICBpZiAoY3R5cGVfaXNm cChjdHItPmluZm8pICYmIGN0ci0+c2l6ZSA9PSBzaXplb2YoZmxvYXQpKSBcCi0gICAgIGN0ciA9 IGN0eXBlX2dldChjdHMsIENUSURfRE9VQkxFKTsgIC8qIEZQUnMgYWx3YXlzIGhvbGQgZG91Ymxl cy4gKi8KLUBAIC04MDEsNiArODc5LDUwIEBAIG5vdGg6ICAvKiBOb3QgYSBob21vZ2VuZW91cyBm bG9hdC9kb3VibGUgYWdncmVnYXRlLiAqLwotIAotICNlbmRpZgotIAotKy8qIC0tIFBvd2VyUEM2 NCBFTEZ2MiBBQkkgc3RydWN0IGNsYXNzaWZpY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K LSsKLSsjaWYgTEpfQVJDSF9QUENfRUxGVjIKLSsKLSsjZGVmaW5lIEZUWVBFX0ZMT0FUCTEKLSsj ZGVmaW5lIEZUWVBFX0RPVUJMRQkyCi0rCi0rc3RhdGljIHVuc2lnbmVkIGludCBjY2FsbF9jbGFz c2lmeV9mcChDVFN0YXRlICpjdHMsIENUeXBlICpjdCkgewotKyAgaWYgKGN0eXBlX2lzZnAoY3Qt PmluZm8pKSB7Ci0rICAgIGlmIChjdC0+c2l6ZSA9PSBzaXplb2YoZmxvYXQpKQotKyAgICAgIHJl dHVybiBGVFlQRV9GTE9BVDsKLSsgICAgZWxzZQotKyAgICAgIHJldHVybiBGVFlQRV9ET1VCTEU7 Ci0rICB9IGVsc2UgaWYgKGN0eXBlX2lzY29tcGxleChjdC0+aW5mbykpIHsKLSsgICAgaWYgKGN0 LT5zaXplID09IHNpemVvZihmbG9hdCkgKiAyKQotKyAgICAgIHJldHVybiBGVFlQRV9GTE9BVDsK LSsgICAgZWxzZQotKyAgICAgIHJldHVybiBGVFlQRV9ET1VCTEU7Ci0rICB9IGVsc2UgaWYgKGN0 eXBlX2lzc3RydWN0KGN0LT5pbmZvKSkgewotKyAgICBpbnQgcmVzID0gLTE7Ci0rICAgIGludCBz eiA9IGN0LT5zaXplOwotKyAgICB3aGlsZSAoY3QtPnNpYikgewotKyAgICAgIGN0ID0gY3R5cGVf Z2V0KGN0cywgY3QtPnNpYik7Ci0rICAgICAgaWYgKGN0eXBlX2lzZmllbGQoY3QtPmluZm8pKSB7 Ci0rICAgICAgICBpbnQgc3ViID0gY2NhbGxfY2xhc3NpZnlfZnAoY3RzLCBjdHlwZV9yYXdjaGls ZChjdHMsIGN0KSk7Ci0rICAgICAgICBpZiAocmVzID09IC0xKQotKyAgICAgICAgICByZXMgPSBz dWI7Ci0rICAgICAgICBpZiAoc3ViICE9IC0xICYmIHN1YiAhPSByZXMpCi0rICAgICAgICAgIHJl dHVybiAwOwotKyAgICAgIH0gZWxzZSBpZiAoY3R5cGVfaXNiaXRmaWVsZChjdC0+aW5mbykgfHwK LSsgICAgICAgIGN0eXBlX2lzeGF0dHJpYihjdC0+aW5mbywgQ1RBX1NVQlRZUEUpKSB7Ci0rICAg ICAgICByZXR1cm4gMDsKLSsgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKHJlcyA+IDAgJiYgc3og PiByZXMgKiA0ICogOCkKLSsgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIHJlczsKLSsgIH0g ZWxzZSB7Ci0rICAgIHJldHVybiAwOwotKyAgfQotK30KLSsKLSsjZW5kaWYKLSsKLSAvKiAtLSBN SVBTNjQgQUJJIHN0cnVjdCBjbGFzc2lmaWNhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovCi0gCi0gI2lmIExKX1RBUkdFVF9NSVBTNjQKLUBAIC05NzQsNiArMTA5Niw5IEBAIHN0 YXRpYyBpbnQgY2NhbGxfc2V0X2FyZ3MobHVhX1N0YXRlICpMLCBDVFN0YXRlICpjdHMsIENUeXBl ICpjdCwKLSAgICAgQ1RTaXplIHN6OwotICAgICBNU2l6ZSBuLCBpc2ZwID0gMCwgaXN2YSA9IDA7 Ci0gICAgIHZvaWQgKmRwLCAqcnAgPSBOVUxMOwotKyNpZiBMSl9UQVJHRVRfUFBDICYmIExKX0FS Q0hfQklUUyA9PSA2NAotKyAgICBpbnQgaXNmMzIgPSAwOwotKyNlbmRpZgotIAotICAgICBpZiAo ZmlkKSB7ICAvKiBHZXQgYXJndW1lbnQgdHlwZSBmcm9tIGZpZWxkLiAqLwotICAgICAgIENUeXBl ICpjdGYgPSBjdHlwZV9nZXQoY3RzLCBmaWQpOwotQEAgLTEwMzAsNyArMTE1NSwzNyBAQCBzdGF0 aWMgaW50IGNjYWxsX3NldF9hcmdzKGx1YV9TdGF0ZSAqTCwgQ1RTdGF0ZSAqY3RzLCBDVHlwZSAq Y3QsCi0gICAgICAgKih2b2lkICoqKWRwID0gcnA7Ci0gICAgICAgZHAgPSBycDsKLSAgICAgfQot KyNpZiBMSl9UQVJHRVRfUFBDICYmIExKX0FSQ0hfQklUUyA9PSA2NCAmJiBMSl9CRQotKyAgICBp ZiAoY3R5cGVfaXNzdHJ1Y3QoZC0+aW5mbykgJiYgc3ogPCBDVFNJWkVfUFRSKSB7Ci0rICAgICAg ZHAgPSAoY2hhciAqKWRwICsgKENUU0laRV9QVFIgLSBzeik7Ci0rICAgIH0KLSsjZW5kaWYKLSAg ICAgbGpfY2NvbnZfY3RfdHYoY3RzLCBkLCAodWludDhfdCAqKWRwLCBvLCBDQ0ZfQVJHKG5hcmcp KTsKLSsjaWYgTEpfVEFSR0VUX1BQQyAmJiBMSl9BUkNIX0JJVFMgPT0gNjQKLSsgICAgaWYgKGlz ZnApIHsKLSsgICAgICBpbnQgaTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgZC0+c2l6ZSAvIDgg JiYgbmZwciA8IENDQUxMX05BUkdfRlBSOyBpKyspCi0rICAgICAgICBjYy0+ZnByW25mcHIrK10g PSAoKGRvdWJsZSAqKWRwKVtpXTsKLSsgICAgfQotKyAgICBpZiAoaXNmMzIpIHsKLSsgICAgICBp bnQgaTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgZC0+c2l6ZSAvIDg7IGkrKykKLSsgICAgICAg ICgoZmxvYXQgKilkcClbaSoyXSA9ICgoZG91YmxlICopZHApW2ldOwotKyAgICB9Ci0rI2VuZGlm Ci0rI2lmIExKX0FSQ0hfUFBDX0VMRlYyCi0rICAgIGlmIChjdHlwZV9pc3N0cnVjdChkLT5pbmZv KSkgewotKyAgICAgIGlzZnAgPSBjY2FsbF9jbGFzc2lmeV9mcChjdHMsIGQpOwotKyAgICAgIGlu dCBpOwotKyAgICAgIGlmIChpc2ZwID09IEZUWVBFX0ZMT0FUKSB7Ci0rICAgICAgICBmb3IgKGkg PSAwOyBpIDwgZC0+c2l6ZSAvIDQgJiYgbmZwciA8IENDQUxMX05BUkdfRlBSOyBpKyspCi0rICAg ICAgICAgIGNjLT5mcHJbbmZwcisrXSA9ICgoZmxvYXQgKilkcClbaV07Ci0rICAgICAgfSBlbHNl IGlmIChpc2ZwID09IEZUWVBFX0RPVUJMRSkgewotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGQt PnNpemUgLyA4ICYmIG5mcHIgPCBDQ0FMTF9OQVJHX0ZQUjsgaSsrKQotKyAgICAgICAgICBjYy0+ ZnByW25mcHIrK10gPSAoKGRvdWJsZSAqKWRwKVtpXTsKLSsgICAgICB9Ci0rICAgIH0KLSsjZW5k aWYKLSAgICAgLyogRXh0ZW5kIHBhc3NlZCBpbnRlZ2VycyB0byAzMiBiaXRzIGF0IGxlYXN0LiAq LwotICAgICBpZiAoY3R5cGVfaXNpbnRlZ2VyX29yX2Jvb2woZC0+aW5mbykgJiYgZC0+c2l6ZSA8 IDQpIHsKLSAgICAgICBpZiAoZC0+aW5mbyAmIENURl9VTlNJR05FRCkKLUBAIC0xMDQ0LDYgKzEx OTksMTUgQEAgc3RhdGljIGludCBjY2FsbF9zZXRfYXJncyhsdWFfU3RhdGUgKkwsIENUU3RhdGUg KmN0cywgQ1R5cGUgKmN0LAotICAgICBpZiAoaXNmcCAmJiBkLT5zaXplID09IHNpemVvZihmbG9h dCkpCi0gICAgICAgKChmbG9hdCAqKWRwKVsxXSA9ICgoZmxvYXQgKilkcClbMF07ICAvKiBGbG9h dHMgb2NjdXB5IGhpZ2ggc2xvdC4gKi8KLSAjZW5kaWYKLSsjaWYgTEpfVEFSR0VUX1BQQyAmJiBM Sl9BUkNIX0JJVFMgPT0gNjQKLSsgICAgaWYgKChjdHlwZV9pc2ludGVnZXJfb3JfYm9vbChkLT5p bmZvKSB8fCBjdHlwZV9pc2VudW0oZC0+aW5mbykpCi0rCSYmIGQtPnNpemUgPD0gNCkgewotKyAg ICAgIGlmIChkLT5pbmZvICYgQ1RGX1VOU0lHTkVEKQotKwkqKHVpbnQ2NF90ICopZHAgPSAodWlu dDY0X3QpKih1aW50MzJfdCAqKWRwOwotKyAgICAgIGVsc2UKLSsgICAgICAgICooaW50NjRfdCAq KWRwID0gKGludDY0X3QpKihpbnQzMl90ICopZHA7Ci0rICAgIH0KLSsjZW5kaWYKLSAjaWYgTEpf VEFSR0VUX01JUFM2NCB8fCAoTEpfVEFSR0VUX0FSTTY0ICYmIExKX0JFKQotICAgICBpZiAoKGN0 eXBlX2lzaW50ZWdlcl9vcl9ib29sKGQtPmluZm8pIHx8IGN0eXBlX2lzZW51bShkLT5pbmZvKQot ICNpZiBMSl9UQVJHRVRfTUlQUzY0Ci1kaWZmIC0tZ2l0IHNyYy9sal9jY2FsbC5oIHNyYy9sal9j Y2FsbC5oCi1pbmRleCA1OWY2NjQ4Li5iYmYzMDlmIDEwMDY0NAotLS0tIGEvc3JjL2xqX2NjYWxs LmgKLSsrKyBiL3NyYy9sal9jY2FsbC5oCi1AQCAtODYsMTAgKzg2LDIzIEBAIHR5cGVkZWYgdW5p b24gRlBSQXJnIHsKLSAjZWxpZiBMSl9UQVJHRVRfUFBDCi0gCi0gI2RlZmluZSBDQ0FMTF9OQVJH X0dQUgkJOAotKyNpZiBMSl9BUkNIX0JJVFMgPT0gNjQKLSsjZGVmaW5lIENDQUxMX05BUkdfRlBS CQkxMwotKyNpZiBMSl9BUkNIX1BQQ19FTEZWMgotKyNkZWZpbmUgQ0NBTExfTlJFVF9HUFIJCTIK LSsjZGVmaW5lIENDQUxMX05SRVRfRlBSCQk4Ci0rI2RlZmluZSBDQ0FMTF9TUFNfRVhUUkEJCTE0 Ci0rI2Vsc2UKLSsjZGVmaW5lIENDQUxMX05SRVRfR1BSCQkxCi0rI2RlZmluZSBDQ0FMTF9OUkVU X0ZQUgkJMgotKyNkZWZpbmUgQ0NBTExfU1BTX0VYVFJBCQkxNgotKyNlbmRpZgotKyNlbHNlCi0g I2RlZmluZSBDQ0FMTF9OQVJHX0ZQUgkJOAotICNkZWZpbmUgQ0NBTExfTlJFVF9HUFIJCTQJLyog Rm9yIGNvbXBsZXggZG91YmxlLiAqLwotICNkZWZpbmUgQ0NBTExfTlJFVF9GUFIJCTEKLSAjZGVm aW5lIENDQUxMX1NQU19FWFRSQQkJNAotKyNlbmRpZgotICNkZWZpbmUgQ0NBTExfU1BTX0ZSRUUJ CTAKLSAKLSB0eXBlZGVmIGludHB0cl90IEdQUkFyZzsKLWRpZmYgLS1naXQgc3JjL2xqX2NjYWxs YmFjay5jIHNyYy9sal9jY2FsbGJhY2suYwotaW5kZXggODQ2ODI3Yi4uZWI3ZjQ0NSAxMDA2NDQK LS0tLSBhL3NyYy9sal9jY2FsbGJhY2suYwotKysrIGIvc3JjL2xqX2NjYWxsYmFjay5jCi1AQCAt NjEsOCArNjEsMjQgQEAgc3RhdGljIE1TaXplIENBTExCQUNLX09GUzJTTE9UKE1TaXplIG9mcykK LSAKLSAjZWxpZiBMSl9UQVJHRVRfUFBDCi0gCi0rI2lmIExKX0FSQ0hfUFBDX09QRAotKwotKyNk ZWZpbmUgQ0FMTEJBQ0tfU0xPVDJPRlMoc2xvdCkJCSgyNCooc2xvdCkpCi0rI2RlZmluZSBDQUxM QkFDS19PRlMyU0xPVChvZnMpCQkoKG9mcykvMjQpCi0rI2RlZmluZSBDQUxMQkFDS19NQVhfU0xP VAkJKENBTExCQUNLX09GUzJTTE9UKENBTExCQUNLX01DT0RFX1NJWkUpKQotKwotKyNlbGlmIExK X0FSQ0hfUFBDX0VMRlYyCi0rCi0rI2RlZmluZSBDQUxMQkFDS19TTE9UMk9GUyhzbG90KQkJKDQq KHNsb3QpKQotKyNkZWZpbmUgQ0FMTEJBQ0tfT0ZTMlNMT1Qob2ZzKQkJKChvZnMpLzQpCi0rI2Rl ZmluZSBDQUxMQkFDS19NQVhfU0xPVAkJKENBTExCQUNLX01DT0RFX1NJWkUvNCAtIDEwKQotKwot KyNlbHNlCi0rCi0gI2RlZmluZSBDQUxMQkFDS19NQ09ERV9IRUFECQkyNAotIAotKyNlbmRpZgot KwotICNlbGlmIExKX1RBUkdFVF9NSVBTMzIKLSAKLSAjZGVmaW5lIENBTExCQUNLX01DT0RFX0hF QUQJCTIwCi1AQCAtMTg4LDI0ICsyMDQsNTkgQEAgc3RhdGljIHZvaWQgY2FsbGJhY2tfbWNvZGVf aW5pdChnbG9iYWxfU3RhdGUgKmcsIHVpbnQzMl90ICpwYWdlKQotICAgbHVhX2Fzc2VydChwIC0g cGFnZSA8PSBDQUxMQkFDS19NQ09ERV9TSVpFKTsKLSB9Ci0gI2VsaWYgTEpfVEFSR0VUX1BQQwot KyNpZiBMSl9BUkNIX1BQQ19PUEQKLStyZWdpc3RlciB2b2lkICp2bV90b2MgX19hc21fXygicjIi KTsKLStzdGF0aWMgdm9pZCBjYWxsYmFja19tY29kZV9pbml0KGdsb2JhbF9TdGF0ZSAqZywgdWlu dDY0X3QgKnBhZ2UpCi0rewotKyAgdWludDY0X3QgKnAgPSBwYWdlOwotKyAgdm9pZCAqdGFyZ2V0 ID0gKHZvaWQgKilsal92bV9mZmlfY2FsbGJhY2s7Ci0rICBNU2l6ZSBzbG90OwotKyAgZm9yIChz bG90ID0gMDsgc2xvdCA8IENBTExCQUNLX01BWF9TTE9UOyBzbG90KyspIHsKLSsgICAgKnArKyA9 ICh1aW50NjRfdCl0YXJnZXQ7Ci0rICAgICpwKysgPSAodWludDY0X3Qpdm1fdG9jOwotKyAgICAq cCsrID0gKHVpbnQ2NF90KWcgfCAoKHVpbnQ2NF90KXNsb3QgPDwgNDcpOwotKyAgfQotKyAgbHVh X2Fzc2VydChwIC0gcGFnZSA8PSBDQUxMQkFDS19NQ09ERV9TSVpFIC8gOCk7Ci0rfQotKyNlbHNl Ci0gc3RhdGljIHZvaWQgY2FsbGJhY2tfbWNvZGVfaW5pdChnbG9iYWxfU3RhdGUgKmcsIHVpbnQz Ml90ICpwYWdlKQotIHsKLSAgIHVpbnQzMl90ICpwID0gcGFnZTsKLSAgIHZvaWQgKnRhcmdldCA9 ICh2b2lkICopbGpfdm1fZmZpX2NhbGxiYWNrOwotICAgTVNpemUgc2xvdDsKLSsjaWYgTEpfQVJD SF9QUENfRUxGVjIKLSsgIC8vIE5lZWRzIHRvIGJlIGluIHN5bmMgd2l0aCBsal92bV9mZmlfY2Fs bGJhY2suCi0rICBsdWFfYXNzZXJ0KENBTExCQUNLX01DT0RFX1NJWkUgPT0gNDA5Nik7Ci0rICBm b3IgKHNsb3QgPSAwOyBzbG90IDwgQ0FMTEJBQ0tfTUFYX1NMT1Q7IHNsb3QrKykgewotKyAgICAq cCA9IFBQQ0lfQiB8ICgoKHBhZ2UrQ0FMTEJBQ0tfTUFYX1NMT1QtcCkgJiAweDAwZmZmZmZmdSkg PDwgMik7Ci0rICAgIHArKzsKLSsgIH0KLSsgICpwKysgPSBQUENJX0xJIHwgUFBDRl9UKFJJRF9T WVMxKSB8ICgoKChpbnRwdHJfdCl0YXJnZXQpID4+IDMyKSAmIDB4ZmZmZik7Ci0rICAqcCsrID0g UFBDSV9MSSB8IFBQQ0ZfVChSSURfUjExKSB8ICgoKChpbnRwdHJfdClnKSA+PiAzMikgJiAweGZm ZmYpOwotKyAgKnArKyA9IFBQQ0lfUkxESUNSIHwgUFBDRl9UKFJJRF9TWVMxKSB8IFBQQ0ZfQShS SURfU1lTMSkgfCBQUENGX1NIKDMyKSB8IFBQQ0ZfTTYoNjMtMzIpOyAgLyogc2xkaSAqLwotKyAg KnArKyA9IFBQQ0lfUkxESUNSIHwgUFBDRl9UKFJJRF9SMTEpIHwgUFBDRl9BKFJJRF9SMTEpIHwg UFBDRl9TSCgzMikgfCBQUENGX002KDYzLTMyKTsgIC8qIHNsZGkgKi8KLSsgICpwKysgPSBQUENJ X09SSVMgfCBQUENGX0EoUklEX1NZUzEpIHwgUFBDRl9UKFJJRF9TWVMxKSB8ICgoKChpbnRwdHJf dCl0YXJnZXQpID4+IDE2KSAmIDB4ZmZmZik7Ci0rICAqcCsrID0gUFBDSV9PUklTIHwgUFBDRl9B KFJJRF9SMTEpIHwgUFBDRl9UKFJJRF9SMTEpIHwgKCgoKGludHB0cl90KWcpID4+IDE2KSAmIDB4 ZmZmZik7Ci0rICAqcCsrID0gUFBDSV9PUkkgfCBQUENGX0EoUklEX1NZUzEpIHwgUFBDRl9UKFJJ RF9TWVMxKSB8ICgoKGludHB0cl90KXRhcmdldCkgJiAweGZmZmYpOwotKyAgKnArKyA9IFBQQ0lf T1JJIHwgUFBDRl9BKFJJRF9SMTEpIHwgUFBDRl9UKFJJRF9SMTEpIHwgKCgoaW50cHRyX3QpZykg JiAweGZmZmYpOwotKyAgKnArKyA9IFBQQ0lfTVRDVFIgfCBQUENGX1QoUklEX1NZUzEpOwotKyAg KnArKyA9IFBQQ0lfQkNUUjsKLSsjZWxzZQotICAgKnArKyA9IFBQQ0lfTElTIHwgUFBDRl9UKFJJ RF9UTVApIHwgKHUzMnB0cih0YXJnZXQpID4+IDE2KTsKLS0gICpwKysgPSBQUENJX0xJUyB8IFBQ Q0ZfVChSSURfUjEyKSB8ICh1MzJwdHIoZykgPj4gMTYpOwotKyAgKnArKyA9IFBQQ0lfTElTIHwg UFBDRl9UKFJJRF9SMTEpIHwgKHUzMnB0cihnKSA+PiAxNik7Ci0gICAqcCsrID0gUFBDSV9PUkkg fCBQUENGX0EoUklEX1RNUCl8UFBDRl9UKFJJRF9UTVApIHwgKHUzMnB0cih0YXJnZXQpICYgMHhm ZmZmKTsKLS0gICpwKysgPSBQUENJX09SSSB8IFBQQ0ZfQShSSURfUjEyKXxQUENGX1QoUklEX1Ix MikgfCAodTMycHRyKGcpICYgMHhmZmZmKTsKLSsgICpwKysgPSBQUENJX09SSSB8IFBQQ0ZfQShS SURfUjExKXxQUENGX1QoUklEX1IxMSkgfCAodTMycHRyKGcpICYgMHhmZmZmKTsKLSAgICpwKysg PSBQUENJX01UQ1RSIHwgUFBDRl9UKFJJRF9UTVApOwotICAgKnArKyA9IFBQQ0lfQkNUUjsKLSAg IGZvciAoc2xvdCA9IDA7IHNsb3QgPCBDQUxMQkFDS19NQVhfU0xPVDsgc2xvdCsrKSB7Ci0tICAg ICpwKysgPSBQUENJX0xJIHwgUFBDRl9UKFJJRF9SMTEpIHwgc2xvdDsKLSsgICAgKnArKyA9IFBQ Q0lfTEkgfCBQUENGX1QoUklEX1IxMikgfCBzbG90OwotICAgICAqcCA9IFBQQ0lfQiB8ICgoKHBh Z2UtcCkgJiAweDAwZmZmZmZmdSkgPDwgMik7Ci0gICAgIHArKzsKLSAgIH0KLS0gIGx1YV9hc3Nl cnQocCAtIHBhZ2UgPD0gQ0FMTEJBQ0tfTUNPREVfU0laRSk7Ci0rI2VuZGlmCi0rICBsdWFfYXNz ZXJ0KHAgLSBwYWdlIDw9IENBTExCQUNLX01DT0RFX1NJWkUgLyA0KTsKLSB9Ci0rI2VuZGlmCi0g I2VsaWYgTEpfVEFSR0VUX01JUFMKLSBzdGF0aWMgdm9pZCBjYWxsYmFja19tY29kZV9pbml0KGds b2JhbF9TdGF0ZSAqZywgdWludDMyX3QgKnBhZ2UpCi0gewotQEAgLTY0MSw2ICs2OTIsMTUgQEAg c3RhdGljIHZvaWQgY2FsbGJhY2tfY29udl9yZXN1bHQoQ1RTdGF0ZSAqY3RzLCBsdWFfU3RhdGUg KkwsIFRWYWx1ZSAqbykKLSAJKihpbnQzMl90ICopZHAgPSBjdHItPnNpemUgPT0gMSA/IChpbnQz Ml90KSooaW50OF90ICopZHAgOgotIAkJCQkJICAoaW50MzJfdCkqKGludDE2X3QgKilkcDsKLSAg ICAgfQotKyNpZiBMSl9UQVJHRVRfUFBDICYmIExKX0FSQ0hfQklUUyA9PSA2NAotKyAgICBpZiAo Y3RyLT5zaXplIDw9IDQgJiYKLSsgICAgICAgKGN0eXBlX2lzaW50ZWdlcl9vcl9ib29sKGN0ci0+ aW5mbykgfHwgY3R5cGVfaXNlbnVtKGN0ci0+aW5mbykpKSB7Ci0rICAgICAgaWYgKGN0ci0+aW5m byAmIENURl9VTlNJR05FRCkKLSsgICAgICAgICoodWludDY0X3QgKilkcCA9ICh1aW50NjRfdCkq KHVpbnQzMl90ICopZHA7Ci0rICAgICAgZWxzZQotKyAgICAgICAgKihpbnQ2NF90ICopZHAgPSAo aW50NjRfdCkqKGludDMyX3QgKilkcDsKLSsgICAgfQotKyNlbmRpZgotICNpZiBMSl9UQVJHRVRf TUlQUzY0IHx8IChMSl9UQVJHRVRfQVJNNjQgJiYgTEpfQkUpCi0gICAgIC8qIEFsd2F5cyBzaWdu LWV4dGVuZCByZXN1bHRzIHRvIDY0IGJpdHMuIEV2ZW4gYSBzb2Z0LWZwICdmbG9hdCcuICovCi0g ICAgIGlmIChjdHItPnNpemUgPD0gNCAmJgotZGlmZiAtLWdpdCBzcmMvbGpfY3R5cGUuaCBzcmMv bGpfY3R5cGUuaAotaW5kZXggMGMyMjBhOC4uMTA1ODY1YiAxMDA2NDQKLS0tLSBhL3NyYy9sal9j dHlwZS5oCi0rKysgYi9zcmMvbGpfY3R5cGUuaAotQEAgLTE1Myw3ICsxNTMsNyBAQCB0eXBlZGVm IHN0cnVjdCBDVHlwZSB7Ci0gCi0gLyogU2ltcGxpZnkgdGFyZ2V0LXNwZWNpZmljIGNvbmZpZ3Vy YXRpb24uIENoZWNrZWQgaW4gbGpfY2NhbGwuaC4gKi8KLSAjZGVmaW5lIENDQUxMX01BWF9HUFIJ CTgKLS0jZGVmaW5lIENDQUxMX01BWF9GUFIJCTgKLSsjZGVmaW5lIENDQUxMX01BWF9GUFIJCTE0 Ci0gCi0gdHlwZWRlZiBMSl9BTElHTig4KSB1bmlvbiBGUFJDQkFyZyB7IGRvdWJsZSBkOyBmbG9h dCBmWzJdOyB9IEZQUkNCQXJnOwotIAotZGlmZiAtLWdpdCBzcmMvbGpfZGVmLmggc3JjL2xqX2Rl Zi5oCi1pbmRleCAyZDhmZmY2Li4zODFkNmY1IDEwMDY0NAotLS0tIGEvc3JjL2xqX2RlZi5oCi0r KysgYi9zcmMvbGpfZGVmLmgKLUBAIC03MSw3ICs3MSwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIGlu dCB1aW50cHRyX3Q7Ci0gI2RlZmluZSBMSl9NQVhfSURYQ0hBSU4JMTAwCQkvKiBfX2luZGV4L19f bmV3aW5kZXggY2hhaW4gbGltaXQuICovCi0gI2RlZmluZSBMSl9TVEFDS19FWFRSQQkoNSsyKkxK X0ZSMikJLyogRXh0cmEgc3RhY2sgc3BhY2UgKG1ldGFtZXRob2RzKS4gKi8KLSAKLSsjaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKSAmJiBfQ0FMTF9FTEYgIT0gMgotKyNkZWZpbmUgTEpfTlVNX0NC UEFHRQk0CQkvKiBOdW1iZXIgb2YgRkZJIGNhbGxiYWNrIHBhZ2VzLiAqLwotKyNlbHNlCi0gI2Rl ZmluZSBMSl9OVU1fQ0JQQUdFCTEJCS8qIE51bWJlciBvZiBGRkkgY2FsbGJhY2sgcGFnZXMuICov Ci0rI2VuZGlmCi0gCi0gLyogTWluaW11bSB0YWJsZS9idWZmZXIgc2l6ZXMuICovCi0gI2RlZmlu ZSBMSl9NSU5fR0xPQkFMCTYJCS8qIE1pbi4gZ2xvYmFsIHRhYmxlIHNpemUgKGhiaXRzKS4gKi8K LWRpZmYgLS1naXQgc3JjL2xqX2ZyYW1lLmggc3JjL2xqX2ZyYW1lLmgKLWluZGV4IDE5YzQ5YTQu LmM2NjY0MTggMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfZnJhbWUuaAotKysrIGIvc3JjL2xqX2ZyYW1l LmgKLUBAIC0yMTAsNiArMjEwLDE1IEBAIGVudW0geyBMSl9DT05UX1RBSUxDQUxMLCBMSl9DT05U X0ZGSV9DQUxMQkFDSyB9OyAgLyogU3BlY2lhbCBjb250aW51YXRpb25zLiAqLwotICNkZWZpbmUg Q0ZSQU1FX09GU19NVUxUUkVTCTQwOAotICNkZWZpbmUgQ0ZSQU1FX1NJWkUJCTM4NAotICNkZWZp bmUgQ0ZSQU1FX1NISUZUX01VTFRSRVMJMwotKyNlbGlmIExKX0FSQ0hfUFBDX0VMRlYyCi0rI2Rl ZmluZSBDRlJBTUVfT0ZTX0VSUkYJCTM2MAotKyNkZWZpbmUgQ0ZSQU1FX09GU19OUkVTCQkzNTYK LSsjZGVmaW5lIENGUkFNRV9PRlNfUFJFVgkJMzM2Ci0rI2RlZmluZSBDRlJBTUVfT0ZTX0wJCTM1 MgotKyNkZWZpbmUgQ0ZSQU1FX09GU19QQwkJMzQ4Ci0rI2RlZmluZSBDRlJBTUVfT0ZTX01VTFRS RVMJMzQ0Ci0rI2RlZmluZSBDRlJBTUVfU0laRQkJMzY4Ci0rI2RlZmluZSBDRlJBTUVfU0hJRlRf TVVMVFJFUwkzCi0gI2VsaWYgTEpfQVJDSF9QUEMzMk9ONjQKLSAjZGVmaW5lIENGUkFNRV9PRlNf RVJSRgkJNDcyCi0gI2RlZmluZSBDRlJBTUVfT0ZTX05SRVMJCTQ2OAotZGlmZiAtLWdpdCBzcmMv bGpfdGFyZ2V0X3BwYy5oIHNyYy9sal90YXJnZXRfcHBjLmgKLWluZGV4IGM1Yzk5MWEuLmYwYzhj OTQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfdGFyZ2V0X3BwYy5oCi0rKysgYi9zcmMvbGpfdGFyZ2V0 X3BwYy5oCi1AQCAtMzAsOCArMzAsMTMgQEAgZW51bSB7Ci0gCi0gICAvKiBDYWxsaW5nIGNvbnZl bnRpb25zLiAqLwotICAgUklEX1JFVCA9IFJJRF9SMywKLSsjaWYgTEpfTEUKLSsgIFJJRF9SRVRI SSA9IFJJRF9SNCwKLSsgIFJJRF9SRVRMTyA9IFJJRF9SMywKLSsjZWxzZQotICAgUklEX1JFVEhJ ID0gUklEX1IzLAotICAgUklEX1JFVExPID0gUklEX1I0LAotKyNlbmRpZgotICAgUklEX0ZQUkVU ID0gUklEX0YxLAotIAotICAgLyogVGhlc2UgZGVmaW5pdGlvbnMgbXVzdCBtYXRjaCB3aXRoIHRo ZSAqLmRhc2MgZmlsZShzKTogKi8KLUBAIC0xMzEsNiArMTM2LDggQEAgc3RhdGljIExKX0FJTkxJ TkUgdWludDMyX3QgKmV4aXRzdHViX3RyYWNlX2FkZHJfKHVpbnQzMl90ICpwLCB1aW50MzJfdCBl eGl0bm8pCi0gI2RlZmluZSBQUENGX0MocikJKChyKSA8PCA2KQotICNkZWZpbmUgUFBDRl9NQihu KQkoKG4pIDw8IDYpCi0gI2RlZmluZSBQUENGX01FKG4pCSgobikgPDwgMSkKLSsjZGVmaW5lIFBQ Q0ZfU0gobikJKCgoKG4pICYgMzEpIDw8ICgxMSsxKSkgfCAoKChuKSAmIDMyKSA+PiAoNS0xKSkp Ci0rI2RlZmluZSBQUENGX002KG4pCSgoKChuKSAmIDMxKSA8PCAoNSsxKSkgfCAoKChuKSAmIDMy KSA8PCAoMTEtNSkpKQotICNkZWZpbmUgUFBDRl9ZCQkweDAwMjAwMDAwCi0gI2RlZmluZSBQUENG X0RPVAkweDAwMDAwMDAxCi0gCi1AQCAtMjAwLDYgKzIwNywxMyBAQCB0eXBlZGVmIGVudW0gUFBD SW5zIHsKLSAgIFBQQ0lfUkxXSU5NID0gMHg1NDAwMDAwMCwKLSAgIFBQQ0lfUkxXSU1JID0gMHg1 MDAwMDAwMCwKLSAKLSsgIFBQQ0lfUkxESUNMID0gMHg3ODAwMDAwMCwKLSsgIFBQQ0lfUkxESUNS ID0gMHg3ODAwMDAwNCwKLSsgIFBQQ0lfUkxESUMgPSAweDc4MDAwMDA4LAotKyAgUFBDSV9STERJ TUkgPSAweDc4MDAwMDBjLAotKyAgUFBDSV9STERDTCA9IDB4NzgwMDAwMTAsCi0rICBQUENJX1JM RENSID0gMHg3ODAwMDAxMiwKLSsKLSAgIFBQQ0lfQiA9IDB4NDgwMDAwMDAsCi0gICBQUENJX0JM ID0gMHg0ODAwMDAwMSwKLSAgIFBQQ0lfQkMgPSAweDQwODAwMDAwLAotZGlmZiAtLWdpdCBzcmMv dm1fcHBjLmRhc2Mgc3JjL3ZtX3BwYy5kYXNjCi1pbmRleCBiNDI2MGViLi5hYmIzODFlIDEwMDY0 NAotLS0tIGEvc3JjL3ZtX3BwYy5kYXNjCi0rKysgYi9zcmMvdm1fcHBjLmRhc2MKLUBAIC0yMiwz NSArMjIsNDAgQEAKLSB8Ly8gR1BSNjQgICA2NCBiaXQgcmVnaXN0ZXJzIChidXQgcG9zc2libHkg MzIgYml0IHBvaW50ZXJzLCBlLmcuIFBTMykuCi0gfC8vICAgICAgICAgQWZmZWN0cyByZWcgc2F2 ZXMsIHN0YWNrIGxheW91dCwgY2Fycnkvb3ZlcmZsb3cvZG90IGZsYWdzIGV0Yy4KLSB8Ly8gRlJB TUUzMiBVc2UgMzIgYml0IGZyYW1lIGxheW91dCwgZXZlbiB3aXRoIEdQUjY0IChYYm94IDM2MCku Ci0tfC8vIFRPQyAgICAgTmVlZCB0YWJsZSBvZiBjb250ZW50cyAoNjQgYml0IG9yIDMyIGJpdCB2 YXJpYW50LCBlLmcuIFBTMykuCi0rfC8vIE9QRCAgICAgTmVlZCBmdW5jdGlvbiBkZXNjcmlwdG9y cyAoNjQgYml0IG9yIDMyIGJpdCB2YXJpYW50LCBlLmcuIFBTMykuCi0gfC8vICAgICAgICAgRnVu Y3Rpb24gcG9pbnRlcnMgYXJlIHJlYWxseSBhIHN0cnVjdDogY29kZSwgVE9DLCBlbnYgKG9wdGlv bmFsKS4KLS18Ly8gVE9DRU5WICBGdW5jdGlvbiBwb2ludGVycyBoYXZlIGFuIGVudmlyb25tZW50 IHBvaW50ZXIsIHRvbyAobm90IG9uIFBTMykuCi0rfC8vIE9QREVOViAgRnVuY3Rpb24gcG9pbnRl cnMgaGF2ZSBhbiBlbnZpcm9ubWVudCBwb2ludGVyLCB0b28gKG5vdCBvbiBQUzMpLgotK3wvLyBF TEZWMiAgIFRoZSA2NC1iaXQgRUxGIFYyIEFCSSBpcyBpbiB1c2UuCi0gfC8vIFBQRSAgICAgUG93 ZXIgUHJvY2Vzc29yIEVsZW1lbnQgb2YgQ2VsbCAoUFMzKSBvciBYZW5vbiAoWGJveCAzNjApLgot IHwvLyAgICAgICAgIE11c3QgYXZvaWQgKHNsb3cpIG1pY3JvLWNvZGVkIGluc3RydWN0aW9ucy4K LSB8Ci0gfC5pZiBQNjQKLS18LmRlZmluZSBUT0MsIDEKLS18LmRlZmluZSBUT0NFTlYsIDEKLSB8 Lm1hY3JvIGxweCwgYSwgYiwgYzsgbGR4IGEsIGIsIGM7IC5lbmRtYWNybwotIHwubWFjcm8gbHAs IGEsIGI7IGxkIGEsIGI7IC5lbmRtYWNybwotIHwubWFjcm8gc3RwLCBhLCBiOyBzdGQgYSwgYjsg LmVuZG1hY3JvCi0rfC5tYWNybyBzdHB4LCBhLCBiLCBjOyBzdGR4IGEsIGIsIGM7IC5lbmRtYWNy bwotIHwuZGVmaW5lIGRlY29kZV9PUFAsIGRlY29kZV9PUDgKLS18LmlmIEZGSQotLXwvLyBNaXNz aW5nOiBDYWxsaW5nIGNvbnZlbnRpb25zLCA2NCBiaXQgcmVncywgVE9DLgotLXwuZXJyb3IgbGli X2ZmaSBub3QgeWV0IGltcGxlbWVudGVkIGZvciBQUEM2NAotLXwuZW5kaWYKLSt8LmRlZmluZSBQ U0laRSwgOAotIHwuZWxzZQotIHwubWFjcm8gbHB4LCBhLCBiLCBjOyBsd3p4IGEsIGIsIGM7IC5l bmRtYWNybwotIHwubWFjcm8gbHAsIGEsIGI7IGx3eiBhLCBiOyAuZW5kbWFjcm8KLSB8Lm1hY3Jv IHN0cCwgYSwgYjsgc3R3IGEsIGI7IC5lbmRtYWNybwotK3wubWFjcm8gc3RweCwgYSwgYiwgYzsg c3R3eCBhLCBiLCBjOyAuZW5kbWFjcm8KLSB8LmRlZmluZSBkZWNvZGVfT1BQLCBkZWNvZGVfT1A0 Ci0rfC5kZWZpbmUgUFNJWkUsIDQKLSB8LmVuZGlmCi0gfAotIHwvLyBDb252ZW5pZW5jZSBtYWNy b3MgZm9yIFRPQyBoYW5kbGluZy4KLS18LmlmIFRPQwotK3wuaWYgT1BEIG9yIEVMRlYyCi0gfC8v IExpbmtlciBuZWVkcyBhIFRPQyBwYXRjaCBhcmVhIGZvciBldmVyeSBleHRlcm5hbCBjYWxsIHJl bG9jYXRpb24uCi0tfC5tYWNybyBibGV4LCB0YXJnZXQ7IGJsIGV4dGVybiB0YXJnZXRAcGx0OyBu b3A7IC5lbmRtYWNybwotK3wubWFjcm8gYmxleCwgdGFyZ2V0OyBibCBleHRlcm4gdGFyZ2V0OyBu b3A7IC5lbmRtYWNybwotIHwubWFjcm8gLnRvYywgYSwgYjsgYSwgYjsgLmVuZG1hY3JvCi0rfC5l bHNlCi0rfC5tYWNybyBibGV4LCB0YXJnZXQ7IGJsIGV4dGVybiB0YXJnZXRAcGx0OyAuZW5kbWFj cm8KLSt8Lm1hY3JvIC50b2MsIGEsIGI7IC5lbmRtYWNybwotK3wuZW5kaWYKLSt8LmlmIE9QRAot K3wubWFjcm8gLm9wZCwgYSwgYjsgYSwgYjsgLmVuZG1hY3JvCi0gfC5pZiBQNjQKLSB8LmRlZmlu ZSBUT0NfT0ZTLAkgOAotIHwuZGVmaW5lIEVOVl9PRlMsCTE2Ci1AQCAtNTgsMTMgKzYzLDEzIEBA Ci0gfC5kZWZpbmUgVE9DX09GUywJNAotIHwuZGVmaW5lIEVOVl9PRlMsCTgKLSB8LmVuZGlmCi0t fC5lbHNlICAvLyBObyBUT0MuCi0tfC5tYWNybyBibGV4LCB0YXJnZXQ7IGJsIGV4dGVybiB0YXJn ZXRAcGx0OyAuZW5kbWFjcm8KLS18Lm1hY3JvIC50b2MsIGEsIGI7IC5lbmRtYWNybwotK3wuZWxz ZSAgLy8gTm8gT1BELgotK3wubWFjcm8gLm9wZCwgYSwgYjsgLmVuZG1hY3JvCi0gfC5lbmRpZgot LXwubWFjcm8gLnRvY2VudiwgYSwgYjsgLmlmIFRPQ0VOVjsgYSwgYjsgLmVuZGlmOyAuZW5kbWFj cm8KLSt8Lm1hY3JvIC5vcGRlbnYsIGEsIGI7IC5pZiBPUERFTlY7IGEsIGI7IC5lbmRpZjsgLmVu ZG1hY3JvCi0gfAotIHwubWFjcm8gLmdwcjY0LCBhLCBiOyAuaWYgR1BSNjQ7IGEsIGI7IC5lbmRp ZjsgLmVuZG1hY3JvCi0rfC5tYWNybyAuZWxmdjIsIGEsIGI7IC5pZiBFTEZWMjsgYSwgYjsgLmVu ZGlmOyAuZW5kbWFjcm8KLSB8Ci0gfC5tYWNybyBhbmRpeC4sIHksIGEsIGkKLSB8LmlmIFBQRQot QEAgLTc1LDI5ICs4MCw2IEBACi0gfC5lbmRpZgotIHwuZW5kbWFjcm8KLSB8Ci0tfC5tYWNybyBj bHJzbywgcmVnCi0tfC5pZiBQUEUKLS18ICBsaSByZWcsIDAKLS18ICBtdHhlciByZWcKLS18LmVs c2UKLS18ICBtY3J4ciBjcjAKLS18LmVuZGlmCi0tfC5lbmRtYWNybwotLXwKLS18Lm1hY3JvIGNo ZWNrb3YsIHJlZywgbm9vdgotLXwuaWYgUFBFCi0tfCAgbWZ4ZXIgcmVnCi0tfCAgYWRkIHJlZywg cmVnLCByZWcKLS18ICBjbXB3aSByZWcsIDAKLS18ICAgbGkgcmVnLCAwCi0tfCAgIG10eGVyIHJl ZwotLXwgIGJnZXkgbm9vdgotLXwuZWxzZQotLXwgIG1jcnhyIGNyMAotLXwgIGJsZXkgbm9vdgot LXwuZW5kaWYKLS18LmVuZG1hY3JvCi0tfAotIHwvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gfAotIHwvLyBG aXhlZCByZWdpc3RlciBhc3NpZ25tZW50cyBmb3IgdGhlIGludGVycHJldGVyLgotQEAgLTExMSw2 ICs5Myw3IEBACi0gfC5kZWZpbmUgTFJFRywJCXIxOAkvLyBSZWdpc3RlciBob2xkaW5nIGx1YV9T dGF0ZSAoYWxzbyBpbiBTQVZFX0wpLgotIHwuZGVmaW5lIE1VTFRSRVMsCXIxOQkvLyBTaXplIG9m IG11bHRpLXJlc3VsdDogKG5yZXN1bHRzKzEpKjguCi0gfC5kZWZpbmUgSkdMLAkJcjMxCS8vIE9u LXRyYWNlOiBnbG9iYWxfU3RhdGUgKyAzMjc2OC4KLSt8LmRlZmluZSBCQVNFUDQsCXIyNQkvLyBF cXVhbCB0byBCQVNFICsgNAotIHwKLSB8Ly8gQ29uc3RhbnRzIGZvciB0eXBlLWNvbXBhcmlzb25z LCBzdG9yZXMgYW5kIGNvbnZlcnNpb25zLiBDIGNhbGxlZS1zYXZlLgotIHwuZGVmaW5lIFRJU05V TSwJcjIyCi1AQCAtMTQzLDEyICsxMjYsMTkgQEAKLSB8Ci0gfC5kZWZpbmUgRkFSRzEsCQlmMQot IHwuZGVmaW5lIEZBUkcyLAkJZjIKLSt8LmRlZmluZSBGQVJHMywJCWYzCi0rfC5kZWZpbmUgRkFS RzQsCQlmNAotK3wuZGVmaW5lIEZBUkc1LAkJZjUKLSt8LmRlZmluZSBGQVJHNiwJCWY2Ci0rfC5k ZWZpbmUgRkFSRzcsCQlmNwotK3wuZGVmaW5lIEZBUkc4LAkJZjgKLSB8Ci0gfC5kZWZpbmUgQ1JF VDEsCQlyMwotIHwuZGVmaW5lIENSRVQyLAkJcjQKLSB8Ci0gfC5kZWZpbmUgVE9DUkVHLAlyMgkv LyBUT0MgcmVnaXN0ZXIgKG9ubHkgdXNlZCBieSBDIGNvZGUpLgotIHwuZGVmaW5lIEVOVlJFRywJ cjExCS8vIEVudmlyb25tZW50IHBvaW50ZXIgKG5lc3RlZCBDIGZ1bmN0aW9ucykuCi0rfC5kZWZp bmUgRlVOQ1JFRywJcjEyCS8vIEVMRnYyIGZ1bmN0aW9uIHBvaW50ZXIgKG92ZXJsYXBzIFJEKQot IHwKLSB8Ly8gU3RhY2sgbGF5b3V0IHdoaWxlIGluIGludGVycHJldGVyLiBNdXN0IG1hdGNoIHdp dGggbGpfZnJhbWUuaC4KLSB8LmlmIEdQUjY0Ci1AQCAtMTgyLDYgKzE3Miw0OSBAQAotIHwuZGVm aW5lIFRNUEQsCQlUTVBEX0hJCi0gfC5kZWZpbmUgVE9OVU1fRCwJVE9OVU1fSEkKLSB8Ci0rfC5l bGlmIEVMRlYyCi0rfAotK3wvLwkJCTM5MihzcCkgLy8gXCAzMiBiaXQgQyBmcmFtZSBpbmZvLgot K3wuZGVmaW5lIFNBVkVfTFIsCTM4NChzcCkKLSt8LmRlZmluZSBTQVZFX0NSLAkzNzYoc3ApIC8v IDY0IGJpdCBDUiBzYXZlLgotK3wuZGVmaW5lIENGUkFNRV9TUEFDRSwJMzY4ICAgICAvLyBEZWx0 YSBmb3Igc3AuCi0rfC8vIEJhY2sgY2hhaW4gZm9yIHNwOgkzNjgoc3ApIDwtLSBzcCBlbnRlcmlu ZyBpbnRlcnByZXRlcgotK3wuZGVmaW5lIFNBVkVfRVJSRiwJMzYwKHNwKSAvLyB8Ci0rfC5kZWZp bmUgU0FWRV9OUkVTLAkzNTYoc3ApIC8vIHwKLSt8LmRlZmluZSBTQVZFX0wsCTM1MihzcCkgLy8g ID4gUGFyYW1ldGVyIHNhdmUgYXJlYS4KLSt8LmRlZmluZSBTQVZFX1BDLAkzNDgoc3ApIC8vIHwK LSt8LmRlZmluZSBTQVZFX01VTFRSRVMsCTM0NChzcCkgLy8gfAotK3wuZGVmaW5lIFNBVkVfQ0ZS QU1FLAkzMzYoc3ApIC8vIC8gNjQgYml0IEMgZnJhbWUgY2hhaW4uCi0rfC5kZWZpbmUgU0FWRV9G UFJfLAkxOTIgICAgIC8vIC4uIDE5MisxOCo4OiA2NCBiaXQgRlBSIHNhdmVzLgotK3wuZGVmaW5l IFNBVkVfR1BSXywJNDggICAgICAvLyAuLiA0OCsxOCo4OiA2NCBiaXQgR1BSIHNhdmVzLgotK3wu aWYgRU5ESUFOX0xFCi0rfC5kZWZpbmUgVE1QRF9ISSwJNDQoc3ApCi0rfC5kZWZpbmUgVE1QRF9M TywJNDAoc3ApCi0rfC5kZWZpbmUgVE9OVU1fSEksCTM2KHNwKQotK3wuZGVmaW5lIFRPTlVNX0xP LAkzMihzcCkKLSt8LmVsc2UKLSt8LmRlZmluZSBUTVBEX0xPLAk0NChzcCkKLSt8LmRlZmluZSBU TVBEX0hJLAk0MChzcCkKLSt8LmRlZmluZSBUT05VTV9MTywJMzYoc3ApCi0rfC5kZWZpbmUgVE9O VU1fSEksCTMyKHNwKQotK3wuZW5kaWYKLSt8LmRlZmluZSBTQVZFX1RPQywJMjQoc3ApICAvLyBU T0Mgc2F2ZSBhcmVhLgotK3wvLyBOZXh0IGZyYW1lIGxyOgkxNihzcCkKLSt8Ly8gTmV4dCBmcmFt ZSBjcjoJOChzcCkKLSt8Ly8gQmFjayBjaGFpbiBmb3Igc3A6CTAoc3ApCTwtLSBzcCB3aGlsZSBp biBpbnRlcnByZXRlcgotK3wKLSt8LmlmIEVORElBTl9MRQotK3wuZGVmaW5lIFRNUERfQkxPLAkz MihzcCkKLSt8LmRlZmluZSBUTVBELAkJVE1QRF9MTwotK3wuZGVmaW5lIFRPTlVNX0QsCVRPTlVN X0xPCi0rfC5lbHNlCi0rfC5kZWZpbmUgVE1QRF9CTE8sCTM5KHNwKQotK3wuZGVmaW5lIFRNUEQs CQlUTVBEX0hJCi0rfC5kZWZpbmUgVE9OVU1fRCwJVE9OVU1fSEkKLSt8LmVuZGlmCi0rfAotK3wu ZGVmaW5lIEVYSVRfT0ZGU0VULAkzMgotK3wKLSB8LmVsc2UKLSB8Ci0gfC8vCQkJNTA4KHNwKSAv LyBcIDMyIGJpdCBDIGZyYW1lIGluZm8uCi1AQCAtMTkyLDIzICsyMjUsMzkgQEAKLSB8LmRlZmlu ZSBTQVZFX01VTFRSRVMsCTQ1NihzcCkgLy8gfAotIHwuZGVmaW5lIFNBVkVfQ0ZSQU1FLAk0NDgo c3ApIC8vIC8gNjQgYml0IEMgZnJhbWUgY2hhaW4uCi0gfC5kZWZpbmUgU0FWRV9MUiwJNDE2KHNw KQotK3wuZGVmaW5lIFNBVkVfQ1IsCTQwOChzcCkgIC8vIDY0IGJpdCBDUiBzYXZlLgotIHwuZGVm aW5lIENGUkFNRV9TUEFDRSwJNDAwICAgICAvLyBEZWx0YSBmb3Igc3AuCi0gfC8vIEJhY2sgY2hh aW4gZm9yIHNwOgk0MDAoc3ApIDwtLSBzcCBlbnRlcmluZyBpbnRlcnByZXRlcgotIHwuZGVmaW5l IFNBVkVfRlBSXywJMjU2ICAgICAvLyAuLiAyNTYrMTgqODogNjQgYml0IEZQUiBzYXZlcy4KLSB8 LmRlZmluZSBTQVZFX0dQUl8sCTExMiAgICAgLy8gLi4gMTEyKzE4Kjg6IDY0IGJpdCBHUFIgc2F2 ZXMuCi0gfC8vCQkJNDgoc3ApICAvLyBDYWxsZWUgcGFyYW1ldGVyIHNhdmUgYXJlYSAoQUJJIG1h bmRhdGVkKS4KLSB8LmRlZmluZSBTQVZFX1RPQywJNDAoc3ApICAvLyBUT0Mgc2F2ZSBhcmVhLgot K3wuaWYgRU5ESUFOX0xFCi0rfC5kZWZpbmUgVE1QRF9ISSwJMzYoc3ApICAvLyBcIExpbmsgZWRp dG9yIHRlbXAgKEFCSSBtYW5kYXRlZCkuCi0rfC5kZWZpbmUgVE1QRF9MTywJMzIoc3ApICAvLyAv Ci0rfC5kZWZpbmUgVE9OVU1fSEksCTI4KHNwKSAgLy8gXCBDb21waWxlciB0ZW1wIChBQkkgbWFu ZGF0ZWQpLgotK3wuZGVmaW5lIFRPTlVNX0xPLAkyNChzcCkgIC8vIC8KLSt8LmVsc2UKLSB8LmRl ZmluZSBUTVBEX0xPLAkzNihzcCkgIC8vIFwgTGluayBlZGl0b3IgdGVtcCAoQUJJIG1hbmRhdGVk KS4KLSB8LmRlZmluZSBUTVBEX0hJLAkzMihzcCkgIC8vIC8KLSB8LmRlZmluZSBUT05VTV9MTywJ Mjgoc3ApICAvLyBcIENvbXBpbGVyIHRlbXAgKEFCSSBtYW5kYXRlZCkuCi0gfC5kZWZpbmUgVE9O VU1fSEksCTI0KHNwKSAgLy8gLwotK3wuZW5kaWYKLSB8Ly8gTmV4dCBmcmFtZSBscjoJMTYoc3Ap Ci0tfC5kZWZpbmUgU0FWRV9DUiwJOChzcCkgIC8vIDY0IGJpdCBDUiBzYXZlLgotK3wvLyBOZXh0 IGZyYW1lIGNyOgk4KHNwKQotIHwvLyBCYWNrIGNoYWluIGZvciBzcDoJMChzcCkJPC0tIHNwIHdo aWxlIGluIGludGVycHJldGVyCi0gfAotK3wuaWYgRU5ESUFOX0xFCi0rfC5kZWZpbmUgVE1QRF9C TE8sCTMyKHNwKQotK3wuZGVmaW5lIFRNUEQsCQlUTVBEX0xPCi0rfC5kZWZpbmUgVE9OVU1fRCwJ VE9OVU1fTE8KLSt8LmVsc2UKLSB8LmRlZmluZSBUTVBEX0JMTywJMzkoc3ApCi0gfC5kZWZpbmUg VE1QRCwJCVRNUERfSEkKLSB8LmRlZmluZSBUT05VTV9ELAlUT05VTV9ISQotK3wuZW5kaWYKLSt8 Ci0rfC5kZWZpbmUgRVhJVF9PRkZTRVQsCTExMgotIHwKLSB8LmVuZGlmCi0gfC5lbHNlCi1AQCAt MjI2LDE2ICsyNzUsMzEgQEAKLSB8LmRlZmluZSBTQVZFX1BDLAkzMihzcCkKLSB8LmRlZmluZSBT QVZFX01VTFRSRVMsCTI4KHNwKQotIHwuZGVmaW5lIFVOVVNFRDEsCTI0KHNwKQotK3wuaWYgRU5E SUFOX0xFCi0rfC5kZWZpbmUgVE1QRF9ISSwJMjAoc3ApCi0rfC5kZWZpbmUgVE1QRF9MTywJMTYo c3ApCi0rfC5kZWZpbmUgVE9OVU1fSEksCTEyKHNwKQotK3wuZGVmaW5lIFRPTlVNX0xPLAk4KHNw KQotK3wuZWxzZQotIHwuZGVmaW5lIFRNUERfTE8sCTIwKHNwKQotIHwuZGVmaW5lIFRNUERfSEks CTE2KHNwKQotIHwuZGVmaW5lIFRPTlVNX0xPLAkxMihzcCkKLSB8LmRlZmluZSBUT05VTV9ISSwJ OChzcCkKLSt8LmVuZGlmCi0gfC8vIE5leHQgZnJhbWUgbHI6CTQoc3ApCi0gfC8vIEJhY2sgY2hh aW4gZm9yIHNwOgkwKHNwKQk8LS0gc3Agd2hpbGUgaW4gaW50ZXJwcmV0ZXIKLSB8Ci0rfC5pZiBF TkRJQU5fTEUKLSt8LmRlZmluZSBUTVBEX0JMTywJMTYoc3ApCi0rfC5kZWZpbmUgVE1QRCwJCVRN UERfTE8KLSt8LmRlZmluZSBUT05VTV9ELAlUT05VTV9MTwotK3wuZWxzZQotIHwuZGVmaW5lIFRN UERfQkxPLAkyMyhzcCkKLSB8LmRlZmluZSBUTVBELAkJVE1QRF9ISQotIHwuZGVmaW5lIFRPTlVN X0QsCVRPTlVNX0hJCi0rfC5lbmRpZgotK3wKLSt8LmRlZmluZSBFWElUX09GRlNFVCwJMTYKLSB8 Ci0gfC5lbmRpZgotIHwKLUBAIC0zNTAsOCArNDE0LDM1IEBACi0gfC8vLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSB8Ci0gfC8vIEFjY2VzcyB0byBmcmFtZSByZWxhdGl2ZSB0byBCQVNFLgotK3wuaWYgRU5ESUFO X0xFCi0rfC5kZWZpbmUgRlJBTUVfUEMsCS00Ci0rfC5kZWZpbmUgRlJBTUVfRlVOQywJLTgKLSt8 LmRlZmluZSBGUkFNRV9DT05UUEMsCS0xMgotK3wuZGVmaW5lIEZSQU1FX0NPTlRSRVQsCS0xNgot K3wuZGVmaW5lIFdPUkRfTE8sCTAKLSt8LmRlZmluZSBXT1JEX0hJLAk0Ci0rfC5kZWZpbmUgV09S RF9CTE8sCTAKLSt8LmRlZmluZSBCQVNFX0xPLAlCQVNFCi0rfC5kZWZpbmUgQkFTRV9ISSwJQkFT RVA0Ci0rfC5tYWNybyBsd3p1eDIsIGhpLCBsbywgYmFzZSwgaWR4Ci0rfCAgbHd6dXggbG8sIGJh c2UsIGlkeAotK3wgIGx3eiBoaSwgNChiYXNlKQotK3wuZW5kbWFjcm8KLSt8LmVsc2UKLSB8LmRl ZmluZSBGUkFNRV9QQywJLTgKLSB8LmRlZmluZSBGUkFNRV9GVU5DLAktNAotK3wuZGVmaW5lIEZS QU1FX0NPTlRQQywJLTE2Ci0rfC5kZWZpbmUgRlJBTUVfQ09OVFJFVCwJLTEyCi0rfC5kZWZpbmUg V09SRF9MTywJNAotK3wuZGVmaW5lIFdPUkRfSEksCTAKLSt8LmRlZmluZSBXT1JEX0JMTywJNwot K3wuZGVmaW5lIEJBU0VfTE8sCUJBU0VQNAotK3wuZGVmaW5lIEJBU0VfSEksCUJBU0UKLSt8Lm1h Y3JvIGx3enV4MiwgaGksIGxvLCBiYXNlLCBpZHgKLSt8ICBsd3p1eCBoaSwgYmFzZSwgaWR4Ci0r fCAgbHd6IGxvLCA0KGJhc2UpCi0rfC5lbmRtYWNybwotK3wuZW5kaWYKLSB8Ci0gfC8vIEluc3Ry dWN0aW9uIGRlY29kZS4KLSB8Lm1hY3JvIGRlY29kZV9PUDQsIGRzdCwgaW5zOyBybHdpbm0gZHN0 LCBpbnMsIDIsIDIyLCAyOTsgLmVuZG1hY3JvCi1AQCAtNDEyLDYgKzUwMyw3IEBACi0gfC8vIENh bGwgZGVjb2RlIGFuZCBkaXNwYXRjaC4KLSB8Lm1hY3JvIGluc19jYWxsdAotIHwgIC8vIEJBU0Ug PSBuZXcgYmFzZSwgUkIgPSBMRlVOQy9DRlVOQywgUkMgPSBuYXJncyo4LCBGUkFNRV9QQyhCQVNF KSA9IFBDCi0rfCAgYWRkaSBCQVNFUDQsIEJBU0UsIDQKLSB8ICBsd3ogUEMsIExGVU5DOlJCLT5w YwotIHwgIGx3eiBJTlMsIDAoUEMpCi0gfCAgIGFkZGkgUEMsIFBDLCA0Ci1AQCAtNTA0LDcgKzU5 NiwxMiBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAg fCAgbHd6IFBDLCBGUkFNRV9QQyhUTVAyKQkJLy8gRmV0Y2ggUEMgb2YgcHJldmlvdXMgZnJhbWUu Ci0gICB8ICBtciBCQVNFLCBUTVAyCQkJLy8gUmVzdG9yZSBjYWxsZXIgYmFzZS4KLSAgIHwgIC8v IFByZXBlbmRpbmcgbWF5IG92ZXJ3cml0ZSB0aGUgcGNhbGwgZnJhbWUsIHNvIGRvIGl0IGF0IHRo ZSBlbmQuCi0tICB8ICAgc3R3dSBUTVAxLCBGUkFNRV9QQyhSQSkJCS8vIFByZXBlbmQgdHJ1ZSB0 byByZXN1bHRzLgotKyAgfCAgLmlmIEVORElBTl9MRQotKyAgfCAgICBhZGRpIFJBLCBSQSwgLTgK LSsgIHwgICAgc3R3IFRNUDEsIFdPUkRfSEkoUkEpCQkvLyBQcmVwZW5kIHRydWUgdG8gcmVzdWx0 cy4KLSsgIHwgIC5lbHNlCi0rICB8ICAgIHN0d3UgVE1QMSwgLTgoUkEpCQkvLyBQcmVwZW5kIHRy dWUgdG8gcmVzdWx0cy4KLSsgIHwgIC5lbmRpZgotICAgfAotICAgfC0+dm1fcmV0dXJuYzoKLSAg IHwgIGFkZGkgUkQsIFJELCA4CQkJLy8gUkQgPSAobnJlc3VsdHMrMSkqOC4KLUBAIC01NjAsNyAr NjU3LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAg IHwgIGx3eiBUTVAxLCBMLT5tYXhzdGFjawotICAgfCAgY21wbHcgQkFTRSwgVE1QMQotICAgfCAg YmdlID44Ci0tICB8ICBzdHcgVElTTklMLCAwKEJBU0UpCi0rICB8ICBzdHcgVElTTklMLCBXT1JE X0hJKEJBU0UpCi0gICB8ICBhZGRpIFJELCBSRCwgOAotICAgfCAgYWRkaSBCQVNFLCBCQVNFLCA4 Ci0gICB8ICBiIDwyCi1AQCAtNjExLDcgKzcwOCwxMiBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJy b3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfC0+dm1fdW53aW5kX2ZmX2VoOgkJCS8vIExhbmRp bmcgcGFkIGZvciBleHRlcm5hbCB1bndpbmRlci4KLSAgIHwgIGx3eiBMLCBTQVZFX0wKLSAgIHwg IC50b2MgbGQgVE9DUkVHLCBTQVZFX1RPQwotKyAgfC5pZiBQNjQKLSsgIHwgICAgIGx1cyBUSVNO VU0sIExKX1RJU05VTSA+PiAxNgkvLyBTZXR1cCB0eXBlIGNvbXBhcmlzb24gY29uc3RhbnRzLgot KyAgfCAgICAgb3JpIFRJU05VTSwgVElTTlVNLCBMSl9USVNOVU0gJiAweGZmZmYKLSsgIHwuZWxz ZQotICAgfCAgICAgbGkgVElTTlVNLCBMSl9USVNOVU0JCS8vIFNldHVwIHR5cGUgY29tcGFyaXNv biBjb25zdGFudHMuCi0rICB8LmVuZGlmCi0gICB8ICBscCBCQVNFLCBMLT5iYXNlCi0gICB8ICAg ICBsdXMgVE1QMywgMHg1OWMwCQkvLyBUT0JJVCA9IDJeNTIgKyAyXjUxIChmbG9hdCkuCi0gICB8 ICAgbHd6IERJU1BBVENILCBMLT5nbHJlZgkJLy8gU2V0dXAgcG9pbnRlciB0byBkaXNwYXRjaCB0 YWJsZS4KLUBAIC02MjYsNyArNzI4LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMo QnVpbGRDdHggKmN0eCkKLSAgIHwgIGxhIFJBLCAtOChCQVNFKQkJCS8vIFJlc3VsdHMgc3RhcnQg YXQgQkFTRS04LgotICAgfCAgICAgc3R3IFRNUDMsIFRNUEQKLSAgIHwgICBhZGRpIERJU1BBVENI LCBESVNQQVRDSCwgR0dfRzJESVNQCi0tICB8ICBzdHcgVE1QMSwgMChSQSkJCQkvLyBQcmVwZW5k IGZhbHNlIHRvIGVycm9yIG1lc3NhZ2UuCi0rICB8ICBzdHcgVE1QMSwgV09SRF9ISShSQSkJCS8v IFByZXBlbmQgZmFsc2UgdG8gZXJyb3IgbWVzc2FnZS4KLSAgIHwgIGxpIFJELCAxNgkJCQkvLyAy IHJlc3VsdHM6IGZhbHNlICsgZXJyb3IgbWVzc2FnZS4KLSAgIHwgICAgc3Rfdm1zdGF0ZQotICAg fCAgICAgbGZzIFRPTlVNLCBUTVBECi1AQCAtNjg3LDcgKzc4OSwxMiBAQCBzdGF0aWMgdm9pZCBi dWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgc3R3IEwsIERJU1BBVENIX0dM KGN1cl9MKShESVNQQVRDSCkKLSAgIHwgIG1yIFJBLCBCQVNFCi0gICB8ICAgbHAgQkFTRSwgTC0+ YmFzZQotKyAgfC5pZiBQNjQKLSsgIHwgICAgIGx1cyBUSVNOVU0sIExKX1RJU05VTSA+PiAxNgkv LyBTZXR1cCB0eXBlIGNvbXBhcmlzb24gY29uc3RhbnRzLgotKyAgfCAgICAgb3JpIFRJU05VTSwg VElTTlVNLCBMSl9USVNOVU0gJiAweGZmZmYKLSsgIHwuZWxzZQotICAgfCAgICAgbGkgVElTTlVN LCBMSl9USVNOVU0JCS8vIFNldHVwIHR5cGUgY29tcGFyaXNvbiBjb25zdGFudHMuCi0rICB8LmVu ZGlmCi0gICB8ICAgbHAgVE1QMSwgTC0+dG9wCi0gICB8ICBsd3ogUEMsIEZSQU1FX1BDKEJBU0Up Ci0gICB8ICAgICBsdXMgVE1QMywgMHg1OWMwCQkvLyBUT0JJVCA9IDJeNTIgKyAyXjUxIChmbG9h dCkuCi1AQCAtNzM3LDcgKzg0NCwxMiBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhC dWlsZEN0eCAqY3R4KQotICAgfDM6ICAvLyBFbnRyeSBwb2ludCBmb3Igdm1fY3BjYWxsL3ZtX3Jl c3VtZSAoQkFTRSA9IGJhc2UsIFBDID0gZnR5cGUpLgotICAgfCAgc3R3IEwsIERJU1BBVENIX0dM KGN1cl9MKShESVNQQVRDSCkKLSAgIHwgIGxwIFRNUDIsIEwtPmJhc2UJCQkvLyBUTVAyID0gb2xk IGJhc2UgKHVzZWQgaW4gdm1ldGFfY2FsbCkuCi0rICB8LmlmIFA2NAotKyAgfCAgICAgbHVzIFRJ U05VTSwgTEpfVElTTlVNID4+IDE2CS8vIFNldHVwIHR5cGUgY29tcGFyaXNvbiBjb25zdGFudHMu Ci0rICB8ICAgICBvcmkgVElTTlVNLCBUSVNOVU0sIExKX1RJU05VTSAmIDB4ZmZmZgotKyAgfC5l bHNlCi0gICB8ICAgICBsaSBUSVNOVU0sIExKX1RJU05VTQkJLy8gU2V0dXAgdHlwZSBjb21wYXJp c29uIGNvbnN0YW50cy4KLSsgIHwuZW5kaWYKLSAgIHwgICBscCBUTVAxLCBMLT50b3AKLSAgIHwg ICAgIGx1cyBUTVAzLCAweDU5YzAJCS8vIFRPQklUID0gMl41MiArIDJeNTEgKGZsb2F0KS4KLSAg IHwgIGFkZCBQQywgUEMsIEJBU0UKLUBAIC03NTcsOCArODY5LDggQEAgc3RhdGljIHZvaWQgYnVp bGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwKLSAgIHwtPnZtX2NhbGxfZGlzcGF0 Y2g6Ci0gICB8ICAvLyBUTVAyID0gb2xkIGJhc2UsIEJBU0UgPSBuZXcgYmFzZSwgUkMgPSBuYXJn cyo4LCBQQyA9IGNhbGxlciBQQwotLSAgfCAgbHd6IFRNUDAsIEZSQU1FX1BDKEJBU0UpCi0tICB8 ICAgbHd6IExGVU5DOlJCLCBGUkFNRV9GVU5DKEJBU0UpCi0rICB8ICBsd3ogVE1QMCwgV09SRF9I SS04KEJBU0UpCi0rICB8ICAgbHd6IExGVU5DOlJCLCBXT1JEX0xPLTgoQkFTRSkKLSAgIHwgIGNo ZWNrZnVuYyBUTVAwOyBibmUgLT52bWV0YV9jYWxsCi0gICB8Ci0gICB8LT52bV9jYWxsX2Rpc3Bh dGNoX2Y6Ci1AQCAtNzc3LDcgKzg4OSw5IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVz KEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICAgc3ViIFRNUDAsIFRNUDAsIFRNUDEJCS8vIENvbXB1dGUg LXNhdmVzdGFjayhMLCBMLT50b3ApLgotICAgfCAgICBscCBUTVAxLCBMLT5jZnJhbWUKLSAgIHwg ICAgIGFkZGkgRElTUEFUQ0gsIERJU1BBVENILCBHR19HMkRJU1AKLS0gIHwgIC50b2MgbHAgQ0FS RzQsIDAoQ0FSRzQpCi0rICB8ICAub3BkIGxwIFRPQ1JFRywgVE9DX09GUyhDQVJHNCkKLSsgIHwg IC5vcGRlbnYgbHAgRU5WUkVHLCBFTlZfT0ZTKENBUkc0KQotKyAgfCAgLm9wZCBscCBDQVJHNCwg MChDQVJHNCkKLSAgIHwgIGxpIFRNUDIsIDAKLSAgIHwgICBzdHcgVE1QMCwgU0FWRV9OUkVTCQkv LyBOZWcuIGRlbHRhIG1lYW5zIGNmcmFtZSB3L28gZnJhbWUuCi0gICB8ICBzdHcgVE1QMiwgU0FW RV9FUlJGCQkvLyBObyBlcnJvciBmdW5jdGlvbi4KLUBAIC03ODUsNyArODk5LDkgQEAgc3RhdGlj IHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgICAgc3RwIHNwLCBM LT5jZnJhbWUJCS8vIEFkZCBvdXIgQyBmcmFtZSB0byBjZnJhbWUgY2hhaW4uCi0gICB8ICAgICBz dHcgTCwgRElTUEFUQ0hfR0woY3VyX0wpKERJU1BBVENIKQotICAgfCAgbXRjdHIgQ0FSRzQKLSsg IHwgIC5lbGZ2MiBtciBGVU5DUkVHLCBDQVJHNAotICAgfCAgYmN0cmwJCQkvLyAobHVhX1N0YXRl ICpMLCBsdWFfQ0Z1bmN0aW9uIGZ1bmMsIHZvaWQgKnVkKQotKyAgfCAgLnRvYyBscCBUT0NSRUcs IFNBVkVfVE9DCi0gICB8LmlmIFBQRQotICAgfCAgbXIgQkFTRSwgQ1JFVDEKLSAgIHwgIGNtcHdp IENSRVQxLCAwCi1AQCAtODA3LDIwICs5MjMsMjcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91 dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwKLSAgIHwtPmNvbnRfZGlzcGF0Y2g6Ci0gICB8ICAv LyBCQVNFID0gbWV0YSBiYXNlLCBSQSA9IHJlc3VsdHB0ciwgUkQgPSAobnJlc3VsdHMrMSkqOAot LSAgfCAgbHd6IFRNUDAsIC0xMihCQVNFKQkJLy8gQ29udGludWF0aW9uLgotKyAgfCAgbHd6IFRN UDAsIEZSQU1FX0NPTlRSRVQoQkFTRSkJLy8gQ29udGludWF0aW9uLgotICAgfCAgIG1yIFJCLCBC QVNFCi0gICB8ICAgbXIgQkFTRSwgVE1QMgkJCS8vIFJlc3RvcmUgY2FsbGVyIEJBU0UuCi0gICB8 ICAgIGx3eiBMRlVOQzpUTVAxLCBGUkFNRV9GVU5DKFRNUDIpCi0gICB8LmlmIEZGSQotICAgfCAg Y21wbHdpIFRNUDAsIDEKLSAgIHwuZW5kaWYKLS0gIHwgICAgIGx3eiBQQywgLTE2KFJCKQkJCS8v IFJlc3RvcmUgUEMgZnJvbSBbY29udHxQQ10uCi0tICB8ICAgc3ViaSBUTVAyLCBSRCwgOAotKyAg fCAgICAgbHd6IFBDLCBGUkFNRV9DT05UUEMoUkIpCS8vIFJlc3RvcmUgUEMgZnJvbSBbY29udHxQ Q10uCi0rICB8ICBhZGRpIEJBU0VQNCwgQkFTRSwgNAotKyAgfCAgIGFkZGkgVE1QMiwgUkQsIFdP UkRfSEktOAotICAgfCAgICBsd3ogVE1QMSwgTEZVTkM6VE1QMS0+cGMKLSAgIHwgICBzdHd4IFRJ U05JTCwgUkEsIFRNUDIJCS8vIEVuc3VyZSBvbmUgdmFsaWQgYXJnLgotKyAgfC5pZiBQNjQKLSsg IHwgICBsZCBUTVAzLCAwKERJU1BBVENIKQotKyAgfC5lbmRpZgotICAgfC5pZiBGRkkKLSAgIHwg IGJsZSA+MQotICAgfC5lbmRpZgotKyAgfC5pZiBQNjQKLSsgIHwgIGFkZCBUTVAwLCBUTVAwLCBU TVAzCi0rICB8LmVuZGlmCi0gICB8ICAgIGx3eiBLQkFTRSwgUEMyUFJPVE8oaykoVE1QMSkKLSAg IHwgIC8vIEJBU0UgPSBiYXNlLCBSQSA9IHJlc3VsdHB0ciwgUkIgPSBtZXRhIGJhc2UKLSAgIHwg IG10Y3RyIFRNUDAKLUBAIC04NTYsMjAgKzk3OSwyMCBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJy b3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgbGEgQ0FSRzMsIERJU1BBVENIX0dMKHRtcHR2 KShESVNQQVRDSCkKLSAgIHwgIGxpIFRNUDAsIExKX1RTVFIKLSAgIHwgICBkZWNvZGVfUkI4IFJC LCBJTlMKLS0gIHwgIHN0dyBTVFI6UkMsIDQoQ0FSRzMpCi0rICB8ICBzdHcgU1RSOlJDLCBXT1JE X0xPKENBUkczKQotICAgfCAgIGFkZCBDQVJHMiwgQkFTRSwgUkIKLS0gIHwgIHN0dyBUTVAwLCAw KENBUkczKQotKyAgfCAgc3R3IFRNUDAsIFdPUkRfSEkoQ0FSRzMpCi0gICB8ICBiID4xCi0gICB8 Ci0gICB8LT52bWV0YV90Z2V0czoKLSAgIHwgIGxhIENBUkcyLCBESVNQQVRDSF9HTCh0bXB0diko RElTUEFUQ0gpCi0gICB8ICBsaSBUTVAwLCBMSl9UVEFCCi0tICB8ICBzdHcgVEFCOlJCLCA0KENB UkcyKQotKyAgfCAgc3R3IFRBQjpSQiwgV09SRF9MTyhDQVJHMikKLSAgIHwgICBsYSBDQVJHMywg RElTUEFUQ0hfR0wodG1wdHYyKShESVNQQVRDSCkKLS0gIHwgIHN0dyBUTVAwLCAwKENBUkcyKQot KyAgfCAgc3R3IFRNUDAsIFdPUkRfSEkoQ0FSRzIpCi0gICB8ICAgbGkgVE1QMSwgTEpfVFNUUgot LSAgfCAgIHN0dyBTVFI6UkMsIDQoQ0FSRzMpCi0tICB8ICAgc3R3IFRNUDEsIDAoQ0FSRzMpCi0r ICB8ICAgc3R3IFNUUjpSQywgV09SRF9MTyhDQVJHMykKLSsgIHwgICBzdHcgVE1QMSwgV09SRF9I SShDQVJHMykKLSAgIHwgIGIgPjEKLSAgIHwKLSAgIHwtPnZtZXRhX3RnZXRiOgkJCS8vIFRNUDAg PSBpbmRleAotQEAgLTg4MCw4ICsxMDAzLDggQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGlu ZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIGxhIENBUkczLCBESVNQQVRDSF9HTCh0bXB0dikoRElT UEFUQ0gpCi0gICB8ICAgYWRkIENBUkcyLCBCQVNFLCBSQgotICAgfC5pZiBEVUFMTlVNCi0tICB8 ICBzdHcgVElTTlVNLCAwKENBUkczKQotLSAgfCAgc3R3IFRNUDAsIDQoQ0FSRzMpCi0rICB8ICBz dHcgVElTTlVNLCBXT1JEX0hJKENBUkczKQotKyAgfCAgc3R3IFRNUDAsIFdPUkRfTE8oQ0FSRzMp Ci0gICB8LmVsc2UKLSAgIHwgIHN0ZmQgZjAsIDAoQ0FSRzMpCi0gICB8LmVuZGlmCi1AQCAtOTA5 LDcgKzEwMzIsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4 KQotICAgfCAgLy8gQkFTRSA9IGJhc2UsIEwtPnRvcCA9IG5ldyBiYXNlLCBzdGFjayA9IGNvbnQv ZnVuYy90L2sKLSAgIHwgIHN1YmZpYyBUTVAxLCBCQVNFLCBGUkFNRV9DT05UCi0gICB8ICBscCBC QVNFLCBMLT50b3AKLS0gIHwgIHN0dyBQQywgLTE2KEJBU0UpCQkJLy8gW2NvbnR8UENdCi0rICB8 ICBzdHcgUEMsIEZSQU1FX0NPTlRQQyhCQVNFKQkJLy8gW2NvbnR8UENdCi0gICB8ICAgYWRkIFBD LCBUTVAxLCBCQVNFCi0gICB8ICBsd3ogTEZVTkM6UkIsIEZSQU1FX0ZVTkMoQkFTRSkJLy8gR3Vh cmFudGVlZCB0byBiZSBhIGZ1bmN0aW9uIGhlcmUuCi0gICB8ICAgbGkgTkFSR1M4OlJDLCAxNgkJ CS8vIDIgYXJncyBmb3IgZnVuYyh0LCBrKS4KLUBAIC05MjMsNyArMTA0Niw3IEBAIHN0YXRpYyB2 b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBsZmQgZjE0LCAwKENS RVQxKQotICAgfCAgYiAtPkJDX1RHRVRSX1oKLSAgIHwxOgotLSAgfCAgc3R3eCBUSVNOSUwsIEJB U0UsIFJBCi0rICB8ICBzdHd4IFRJU05JTCwgQkFTRV9ISSwgUkEKLSAgIHwgIGIgLT5jb250X25v cAotICAgfAotICAgfC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUBAIC05MzIsMjAgKzEwNTUsMjAgQEAgc3Rh dGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIGxhIENBUkcz LCBESVNQQVRDSF9HTCh0bXB0dikoRElTUEFUQ0gpCi0gICB8ICBsaSBUTVAwLCBMSl9UU1RSCi0g ICB8ICAgZGVjb2RlX1JCOCBSQiwgSU5TCi0tICB8ICBzdHcgU1RSOlJDLCA0KENBUkczKQotKyAg fCAgc3R3IFNUUjpSQywgV09SRF9MTyhDQVJHMykKLSAgIHwgICBhZGQgQ0FSRzIsIEJBU0UsIFJC Ci0tICB8ICBzdHcgVE1QMCwgMChDQVJHMykKLSsgIHwgIHN0dyBUTVAwLCBXT1JEX0hJKENBUkcz KQotICAgfCAgYiA+MQotICAgfAotICAgfC0+dm1ldGFfdHNldHM6Ci0gICB8ICBsYSBDQVJHMiwg RElTUEFUQ0hfR0wodG1wdHYpKERJU1BBVENIKQotICAgfCAgbGkgVE1QMCwgTEpfVFRBQgotLSAg fCAgc3R3IFRBQjpSQiwgNChDQVJHMikKLSsgIHwgIHN0dyBUQUI6UkIsIFdPUkRfTE8oQ0FSRzIp Ci0gICB8ICAgbGEgQ0FSRzMsIERJU1BBVENIX0dMKHRtcHR2MikoRElTUEFUQ0gpCi0tICB8ICBz dHcgVE1QMCwgMChDQVJHMikKLSsgIHwgIHN0dyBUTVAwLCBXT1JEX0hJKENBUkcyKQotICAgfCAg IGxpIFRNUDEsIExKX1RTVFIKLS0gIHwgICBzdHcgU1RSOlJDLCA0KENBUkczKQotLSAgfCAgIHN0 dyBUTVAxLCAwKENBUkczKQotKyAgfCAgIHN0dyBTVFI6UkMsIFdPUkRfTE8oQ0FSRzMpCi0rICB8 ICAgc3R3IFRNUDEsIFdPUkRfSEkoQ0FSRzMpCi0gICB8ICBiID4xCi0gICB8Ci0gICB8LT52bWV0 YV90c2V0YjoJCQkvLyBUTVAwID0gaW5kZXgKLUBAIC05NTYsOCArMTA3OSw4IEBAIHN0YXRpYyB2 b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBsYSBDQVJHMywgRElT UEFUQ0hfR0wodG1wdHYpKERJU1BBVENIKQotICAgfCAgIGFkZCBDQVJHMiwgQkFTRSwgUkIKLSAg IHwuaWYgRFVBTE5VTQotLSAgfCAgc3R3IFRJU05VTSwgMChDQVJHMykKLS0gIHwgIHN0dyBUTVAw LCA0KENBUkczKQotKyAgfCAgc3R3IFRJU05VTSwgV09SRF9ISShDQVJHMykKLSsgIHwgIHN0dyBU TVAwLCBXT1JEX0xPKENBUkczKQotICAgfC5lbHNlCi0gICB8ICBzdGZkIGYwLCAwKENBUkczKQot ICAgfC5lbmRpZgotQEAgLTk4Niw3ICsxMTA5LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91 dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIC8vIEJBU0UgPSBiYXNlLCBMLT50b3AgPSBuZXcg YmFzZSwgc3RhY2sgPSBjb250L2Z1bmMvdC9rLyh2KQotICAgfCAgc3ViZmljIFRNUDEsIEJBU0Us IEZSQU1FX0NPTlQKLSAgIHwgIGxwIEJBU0UsIEwtPnRvcAotLSAgfCAgc3R3IFBDLCAtMTYoQkFT RSkJCQkvLyBbY29udHxQQ10KLSsgIHwgIHN0dyBQQywgRlJBTUVfQ09OVFBDKEJBU0UpCQkvLyBb Y29udHxQQ10KLSAgIHwgICBhZGQgUEMsIFRNUDEsIEJBU0UKLSAgIHwgIGx3eiBMRlVOQzpSQiwg RlJBTUVfRlVOQyhCQVNFKQkvLyBHdWFyYW50ZWVkIHRvIGJlIGEgZnVuY3Rpb24gaGVyZS4KLSAg IHwgICBsaSBOQVJHUzg6UkMsIDI0CQkJLy8gMyBhcmdzIGZvciBmdW5jKHQsIGssIHYpCi1AQCAt MTAwNiwxNyArMTEyOSw5IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4 ICpjdHgpCi0gICB8LT52bWV0YV9jb21wOgotICAgfCAgbXIgQ0FSRzEsIEwKLSAgIHwgICBzdWJp IFBDLCBQQywgNAotLSAgfC5pZiBEVUFMTlVNCi0tICB8ICBtciBDQVJHMiwgUkEKLS0gIHwuZWxz ZQotICAgfCAgYWRkIENBUkcyLCBCQVNFLCBSQQotLSAgfC5lbmRpZgotICAgfCAgIHN0dyBQQywg U0FWRV9QQwotLSAgfC5pZiBEVUFMTlVNCi0tICB8ICBtciBDQVJHMywgUkQKLS0gIHwuZWxzZQot ICAgfCAgYWRkIENBUkczLCBCQVNFLCBSRAotLSAgfC5lbmRpZgotICAgfCAgIHN0cCBCQVNFLCBM LT5iYXNlCi0gICB8ICBkZWNvZGVfT1AxIENBUkc0LCBJTlMKLSAgIHwgIGJsIGV4dGVybiBsal9t ZXRhX2NvbXAgIC8vIChsdWFfU3RhdGUgKkwsIFRWYWx1ZSAqbzEsICpvMiwgaW50IG9wKQotQEAg LTEwNDMsNyArMTE1OCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4 ICpjdHgpCi0gICB8ICBiIC0+Y29udF9ub3AKLSAgIHwKLSAgIHwtPmNvbnRfY29uZHQ6CQkJLy8g UkEgPSByZXN1bHRwdHIKLS0gIHwgIGx3eiBUTVAwLCAwKFJBKQotKyAgfCAgbHd6IFRNUDAsIFdP UkRfSEkoUkEpCi0gICB8ICAuZ3ByNjQgZXh0c3cgVE1QMCwgVE1QMAotICAgfCAgc3ViZmljIFRN UDAsIFRNUDAsIExKX1RUUlVFCS8vIEJyYW5jaCBpZiByZXN1bHQgaXMgdHJ1ZS4KLSAgIHwgIHN1 YmZlIENSRVQxLCBDUkVUMSwgQ1JFVDEKLUBAIC0xMDUxLDcgKzExNjYsNyBAQCBzdGF0aWMgdm9p ZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgYiA8NAotICAgfAotICAg fC0+Y29udF9jb25kZjoJCQkvLyBSQSA9IHJlc3VsdHB0cgotLSAgfCAgbHd6IFRNUDAsIDAoUkEp Ci0rICB8ICBsd3ogVE1QMCwgV09SRF9ISShSQSkKLSAgIHwgIC5ncHI2NCBleHRzdyBUTVAwLCBU TVAwCi0gICB8ICBzdWJmaWMgVE1QMCwgVE1QMCwgTEpfVFRSVUUJLy8gQnJhbmNoIGlmIHJlc3Vs dCBpcyBmYWxzZS4KLSAgIHwgIHN1YmZlIENSRVQxLCBDUkVUMSwgQ1JFVDEKLUBAIC0xMTAzLDgg KzEyMTgsOCBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQot ICAgfC5lbmRpZgotICAgfAotICAgfC0+dm1ldGFfdW5tOgotLSAgfCAgbXIgQ0FSRzMsIFJECi0t ICB8ICBtciBDQVJHNCwgUkQKLSsgIHwgIGFkZCBDQVJHMywgQkFTRSwgUkQKLSsgIHwgIGFkZCBD QVJHNCwgQkFTRSwgUkQKLSAgIHwgIGIgPjEKLSAgIHwKLSAgIHwtPnZtZXRhX2FyaXRoX3ZuOgot QEAgLTExMzksNyArMTI1NCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxk Q3R4ICpjdHgpCi0gICB8LT52bWV0YV9iaW5vcDoKLSAgIHwgIC8vIEJBU0UgPSBvbGQgYmFzZSwg Q1JFVDEgPSBuZXcgYmFzZSwgc3RhY2sgPSBjb250L2Z1bmMvbzEvbzIKLSAgIHwgIHN1YiBUTVAx LCBDUkVUMSwgQkFTRQotLSAgfCAgIHN0dyBQQywgLTE2KENSRVQxKQkJLy8gW2NvbnR8UENdCi0r ICB8ICAgc3R3IFBDLCBGUkFNRV9DT05UUEMoQ1JFVDEpCS8vIFtjb250fFBDXQotICAgfCAgIG1y IFRNUDIsIEJBU0UKLSAgIHwgIGFkZGkgUEMsIFRNUDEsIEZSQU1FX0NPTlQKLSAgIHwgICBtciBC QVNFLCBDUkVUMQotQEAgLTExNTAsNyArMTI2NSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJv dXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gI2lmIExKXzUyCi0gICB8ICBtciBTQVZFMCwgQ0FSRzEK LSAjZW5kaWYKLS0gIHwgIG1yIENBUkcyLCBSRAotKyAgfCAgYWRkIENBUkcyLCBCQVNFLCBSRAot ICAgfCAgIHN0cCBCQVNFLCBMLT5iYXNlCi0gICB8ICBtciBDQVJHMSwgTAotICAgfCAgIHN0dyBQ QywgU0FWRV9QQwotQEAgLTEyMjcsMjUgKzEzNDIsMjUgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vi cm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwubWFjcm8gLmZmdW5jXzEsIG5hbWUKLSAgIHwt PmZmXyAuLiBuYW1lOgotICAgfCAgY21wbHdpIE5BUkdTODpSQywgOAotLSAgfCAgIGx3eiBDQVJH MywgMChCQVNFKQotLSAgfCAgICBsd3ogQ0FSRzEsIDQoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzMs IFdPUkRfSEkoQkFTRSkKLSsgIHwgICAgbHd6IENBUkcxLCBXT1JEX0xPKEJBU0UpCi0gICB8ICBi bHQgLT5mZmZfZmFsbGJhY2sKLSAgIHwuZW5kbWFjcm8KLSAgIHwKLSAgIHwubWFjcm8gLmZmdW5j XzIsIG5hbWUKLSAgIHwtPmZmXyAuLiBuYW1lOgotICAgfCAgY21wbHdpIE5BUkdTODpSQywgMTYK LS0gIHwgICBsd3ogQ0FSRzMsIDAoQkFTRSkKLS0gIHwgICAgbHd6IENBUkc0LCA4KEJBU0UpCi0t ICB8ICAgbHd6IENBUkcxLCA0KEJBU0UpCi0tICB8ICAgIGx3eiBDQVJHMiwgMTIoQkFTRSkKLSsg IHwgICBsd3ogQ0FSRzMsIFdPUkRfSEkoQkFTRSkKLSsgIHwgICAgbHd6IENBUkc0LCBXT1JEX0hJ KzgoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzEsIFdPUkRfTE8oQkFTRSkKLSsgIHwgICAgbHd6IENB UkcyLCBXT1JEX0xPKzgoQkFTRSkKLSAgIHwgIGJsdCAtPmZmZl9mYWxsYmFjawotICAgfC5lbmRt YWNybwotICAgfAotICAgfC5tYWNybyAuZmZ1bmNfbiwgbmFtZQotICAgfC0+ZmZfIC4uIG5hbWU6 Ci0gICB8ICBjbXBsd2kgTkFSR1M4OlJDLCA4Ci0tICB8ICAgbHd6IENBUkczLCAwKEJBU0UpCi0r ICB8ICAgbHd6IENBUkczLCBXT1JEX0hJKEJBU0UpCi0gICB8ICAgIGxmZCBGQVJHMSwgMChCQVNF KQotICAgfCAgYmx0IC0+ZmZmX2ZhbGxiYWNrCi0gICB8ICBjaGVja251bSBDQVJHMzsgYmdlIC0+ ZmZmX2ZhbGxiYWNrCi1AQCAtMTI1NCw5ICsxMzY5LDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vi cm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwubWFjcm8gLmZmdW5jX25uLCBuYW1lCi0gICB8 LT5mZl8gLi4gbmFtZToKLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDE2Ci0tICB8ICAgbHd6IENB UkczLCAwKEJBU0UpCi0rICB8ICAgbHd6IENBUkczLCBXT1JEX0hJKEJBU0UpCi0gICB8ICAgIGxm ZCBGQVJHMSwgMChCQVNFKQotLSAgfCAgIGx3eiBDQVJHNCwgOChCQVNFKQotKyAgfCAgIGx3eiBD QVJHNCwgV09SRF9ISSs4KEJBU0UpCi0gICB8ICAgIGxmZCBGQVJHMiwgOChCQVNFKQotICAgfCAg Ymx0IC0+ZmZmX2ZhbGxiYWNrCi0gICB8ICBjaGVja251bSBDQVJHMzsgYmdlIC0+ZmZmX2ZhbGxi YWNrCi1AQCAtMTI3OSw5ICsxMzk0LDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMo QnVpbGRDdHggKmN0eCkKLSAgIHwgIGNtcGx3IGNyMSwgQ0FSRzMsIFRNUDEKLSAgIHwgICAgbHd6 IFBDLCBGUkFNRV9QQyhCQVNFKQotICAgfCAgYmdlIGNyMSwgLT5mZmZfZmFsbGJhY2sKLS0gIHwg ICBzdHcgQ0FSRzMsIDAoUkEpCi0rICB8ICAgc3R3IENBUkczLCBXT1JEX0hJKFJBKQotICAgfCAg YWRkaSBSRCwgTkFSR1M4OlJDLCA4CQkvLyBDb21wdXRlIChucmVzdWx0cysxKSo4LgotLSAgfCAg IHN0dyBDQVJHMSwgNChSQSkKLSsgIHwgICBzdHcgQ0FSRzEsIFdPUkRfTE8oUkEpCi0gICB8ICBi ZXEgLT5mZmZfcmVzCQkJLy8gRG9uZSBpZiBleGFjdGx5IDEgYXJndW1lbnQuCi0gICB8ICBsaSBU TVAxLCA4Ci0gICB8ICBzdWJpIFJDLCBSQywgOAotQEAgLTEyOTUsMTcgKzE0MTAsMzYgQEAgc3Rh dGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwKLSAgIHwuZmZ1 bmMgdHlwZQotICAgfCAgY21wbHdpIE5BUkdTODpSQywgOAotLSAgfCAgIGx3eiBDQVJHMSwgMChC QVNFKQotKyAgfCAgIGx3eiBDQVJHMSwgV09SRF9ISShCQVNFKQotICAgfCAgYmx0IC0+ZmZmX2Zh bGxiYWNrCi0gICB8ICAuZ3ByNjQgZXh0c3cgQ0FSRzEsIENBUkcxCi0rICB8LmlmIFA2NAotKyAg fCAgbGkgVE1QMCwgTEpfVE5VTVgKLSsgIHwgICAgc3Jhd2kgVE1QMywgQ0FSRzEsIDE1Ci0rICB8 ICBzdWJmYyBUTVAxLCBUTVAwLCBDQVJHMQotKyAgfC5lbHNlCi0gICB8ICBzdWJmYyBUTVAwLCBU SVNOVU0sIENBUkcxCi0tICB8ICBzdWJmZSBUTVAyLCBDQVJHMSwgQ0FSRzEKLSsgIHwuZW5kaWYK LSsgIHwgICAgc3ViZmUgVE1QMiwgQ0FSRzEsIENBUkcxCi0rICB8LmlmIFA2NAotKyAgfCAgY21w d2kgVE1QMywgLTIKLSsgIHwgICAgb3JjIFRNUDEsIFRNUDIsIFRNUDEKLSsgIHwgICAgc3ViZiBU TVAxLCBUTVAwLCBUTVAxCi0rICB8ICBiZXEgPjEKLSsgIHwuZWxzZQotICAgfCAgb3JjIFRNUDEs IFRNUDIsIFRNUDAKLS0gIHwgIGFkZGkgVE1QMSwgVE1QMSwgfkxKX1RJU05VTSsxCi0rICB8ICBz dWJmIFRNUDEsIFRJU05VTSwgVE1QMQotKyAgfC5lbmRpZgotICAgfCAgc2x3aSBUTVAxLCBUTVAx LCAzCi0rICB8MjoKLSAgIHwgICBsYSBUTVAyLCBDRlVOQzpSQi0+dXB2YWx1ZQotICAgfCAgbGZk eCBGQVJHMSwgVE1QMiwgVE1QMQotICAgfCAgYiAtPmZmZl9yZXNuCi0rICB8LmlmIFA2NAotKyAg fDE6Ci0rICB8ICBsaSBUTVAxLCB+TEpfVExJR0hUVUQ8PDMKLSsgIHwgIGIgPDIKLSsgIHwuZW5k aWYKLSAgIHwKLSAgIHwvLy0tIEJhc2UgbGlicmFyeTogZ2V0dGVycyBhbmQgc2V0dGVycyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHwKLUBAIC0xMzI4LDEwICsxNDYyLDEw IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBz dWIgVE1QMSwgVE1QMCwgVE1QMQotICAgfCAgYWRkIE5PREU6VE1QMiwgTk9ERTpUTVAyLCBUTVAx CS8vIG5vZGUgPSB0YWItPm5vZGUgKyAoaWR4KjMyLWlkeCo4KQotICAgfDM6ICAvLyBSZWFycmFu Z2VkIGxvZ2ljLCBiZWNhdXNlIHdlIGV4cGVjdCBfbm90XyB0byBmaW5kIHRoZSBrZXkuCi0tICB8 ICBsd3ogQ0FSRzQsIE5PREU6VE1QMi0+a2V5Ci0tICB8ICAgbHd6IFRNUDAsIDQrb2Zmc2V0b2Yo Tm9kZSwga2V5KShOT0RFOlRNUDIpCi0tICB8ICAgIGx3eiBDQVJHMiwgTk9ERTpUTVAyLT52YWwK LS0gIHwgICAgIGx3eiBUTVAxLCA0K29mZnNldG9mKE5vZGUsIHZhbCkoTk9ERTpUTVAyKQotKyAg fCAgbHd6IENBUkc0LCBXT1JEX0hJK29mZnNldG9mKE5vZGUsIGtleSkoTk9ERTpUTVAyKQotKyAg fCAgIGx3eiBUTVAwLCBXT1JEX0xPK29mZnNldG9mKE5vZGUsIGtleSkoTk9ERTpUTVAyKQotKyAg fCAgICBsd3ogQ0FSRzIsIFdPUkRfSEkrb2Zmc2V0b2YoTm9kZSwgdmFsKShOT0RFOlRNUDIpCi0r ICB8ICAgICBsd3ogVE1QMSwgV09SRF9MTytvZmZzZXRvZihOb2RlLCB2YWwpKE5PREU6VE1QMikK LSAgIHwgIGNoZWNrc3RyIENBUkc0OyBibmUgPjQKLSAgIHwgICBjbXB3IFRNUDAsIFNUUjpSQzsg YmVxID41Ci0gICB8NDoKLUBAIC0xMzQ5LDE0ICsxNDgzLDMzIEBAIHN0YXRpYyB2b2lkIGJ1aWxk X3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8NjoKLSAgIHwgIGNtcHdpIENBUkczLCBM Sl9UVURBVEE7IGJlcSA8MQotICAgfCAgLmdwcjY0IGV4dHN3IENBUkczLCBDQVJHMwotKyAgfC5p ZiBQNjQKLSsgIHwgIGxpIFRNUDAsIExKX1ROVU1YCi0rICB8ICAgIHNyYXdpIFRNUDMsIENBUkcz LCAxNQotKyAgfCAgc3ViZmMgVE1QMSwgVE1QMCwgQ0FSRzMKLSsgIHwuZWxzZQotICAgfCAgc3Vi ZmMgVE1QMCwgVElTTlVNLCBDQVJHMwotKyAgfC5lbmRpZgotICAgfCAgc3ViZmUgVE1QMiwgQ0FS RzMsIENBUkczCi0rICB8LmlmIFA2NAotKyAgfCAgY21wd2kgVE1QMywgLTIKLSsgIHwgICAgb3Jj IFRNUDEsIFRNUDIsIFRNUDEKLSsgIHwgICAgc3ViZiBUTVAxLCBUTVAwLCBUTVAxCi0rICB8ICBi ZXEgPjcKLSsgIHwuZWxzZQotICAgfCAgb3JjIFRNUDEsIFRNUDIsIFRNUDAKLS0gIHwgIGFkZGkg VE1QMSwgVE1QMSwgfkxKX1RJU05VTSsxCi0rICB8ICBzdWJmIFRNUDEsIFRJU05VTSwgVE1QMQot KyAgfC5lbmRpZgotICAgfCAgc2x3aSBUTVAxLCBUTVAxLCAyCi0rICB8ODoKLSAgIHwgICBsYSBU TVAyLCBESVNQQVRDSF9HTChnY3Jvb3RbR0NST09UX0JBU0VNVF0pKERJU1BBVENIKQotICAgfCAg bHd6eCBUQUI6Q0FSRzEsIFRNUDIsIFRNUDEKLSAgIHwgIGIgPDIKLSsgIHwuaWYgUDY0Ci0rICB8 NzoKLSsgIHwgIGxpIFRNUDEsIH5MSl9UTElHSFRVRDw8MgotKyAgfCAgYiA8OAotKyAgfC5lbmRp ZgotICAgfAotICAgfC5mZnVuY18yIHNldG1ldGF0YWJsZQotICAgfCAgLy8gRmFzdCBwYXRoOiBu byBtdCBmb3IgdGFibGUgeWV0IGFuZCBub3QgY2xlYXJpbmcgdGhlIG10LgotQEAgLTEzNzQsOCAr MTUyNyw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0g ICB8Ci0gICB8LmZmdW5jIHJhd2dldAotICAgfCAgY21wbHdpIE5BUkdTODpSQywgMTYKLS0gIHwg ICBsd3ogQ0FSRzQsIDAoQkFTRSkKLS0gIHwgICAgbHd6IFRBQjpDQVJHMiwgNChCQVNFKQotKyAg fCAgIGx3eiBDQVJHNCwgV09SRF9ISShCQVNFKQotKyAgfCAgICBsd3ogVEFCOkNBUkcyLCBXT1JE X0xPKEJBU0UpCi0gICB8ICBibHQgLT5mZmZfZmFsbGJhY2sKLSAgIHwgIGNoZWNrdGFiIENBUkc0 OyBibmUgLT5mZmZfZmFsbGJhY2sKLSAgIHwgICBsYSBDQVJHMywgOChCQVNFKQotQEAgLTEzOTAs NyArMTU0Myw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgp Ci0gICB8LmZmdW5jIHRvbnVtYmVyCi0gICB8ICAvLyBPbmx5IGhhbmRsZXMgdGhlIG51bWJlciBj YXNlIGlubGluZSAod2l0aG91dCBhIGJhc2UgYXJndW1lbnQpLgotICAgfCAgY21wbHdpIE5BUkdT ODpSQywgOAotLSAgfCAgIGx3eiBDQVJHMSwgMChCQVNFKQotKyAgfCAgIGx3eiBDQVJHMSwgV09S RF9ISShCQVNFKQotICAgfCAgICBsZmQgRkFSRzEsIDAoQkFTRSkKLSAgIHwgIGJuZSAtPmZmZl9m YWxsYmFjawkJCS8vIEV4YWN0bHkgb25lIGFyZ3VtZW50LgotICAgfCAgIGNoZWNrbnVtIENBUkcx OyBiZ3QgLT5mZmZfZmFsbGJhY2sKLUBAIC0xNDI1LDEwICsxNTc4LDE1IEBAIHN0YXRpYyB2b2lk IGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8Ci0gICB8LmZmdW5jIG5leHQK LSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDgKLS0gIHwgICBsd3ogQ0FSRzEsIDAoQkFTRSkKLS0g IHwgICAgbHd6IFRBQjpDQVJHMiwgNChCQVNFKQotKyAgfCAgIGx3eiBDQVJHMSwgV09SRF9ISShC QVNFKQotKyAgfCAgICBsd3ogVEFCOkNBUkcyLCBXT1JEX0xPKEJBU0UpCi0gICB8ICBibHQgLT5m ZmZfZmFsbGJhY2sKLSsgIHwuaWYgRU5ESUFOX0xFCi0rICB8ICAgYWRkIFRNUDEsIEJBU0UsIE5B UkdTODpSQwotKyAgfCAgIHN0dyBUSVNOSUwsIFdPUkRfSEkoVE1QMSkJCS8vIFNldCBtaXNzaW5n IDJuZCBhcmcgdG8gbmlsLgotKyAgfC5lbHNlCi0gICB8ICAgc3R3eCBUSVNOSUwsIEJBU0UsIE5B UkdTODpSQwkvLyBTZXQgbWlzc2luZyAybmQgYXJnIHRvIG5pbC4KLSsgIHwuZW5kaWYKLSAgIHwg IGNoZWNrdGFiIENBUkcxCi0gICB8ICAgbHd6IFBDLCBGUkFNRV9QQyhCQVNFKQotICAgfCAgYm5l IC0+ZmZmX2ZhbGxiYWNrCi1AQCAtMTQ2NCwxOCArMTYyMiwxOCBAQCBzdGF0aWMgdm9pZCBidWls ZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgbGZkIGYwLCBDRlVOQzpSQi0+dXB2 YWx1ZVswXQotICAgfCAgbGEgUkEsIC04KEJBU0UpCi0gI2VuZGlmCi0tICB8ICAgc3R3IFRJU05J TCwgOChCQVNFKQotKyAgfCAgIHN0dyBUSVNOSUwsIDgrV09SRF9ISShCQVNFKQotICAgfCAgbGkg UkQsICgzKzEpKjgKLSAgIHwgIHN0ZmQgZjAsIDAoUkEpCi0gICB8ICBiIC0+ZmZmX3JlcwotICAg fAotICAgfC5mZnVuYyBpcGFpcnNfYXV4Ci0gICB8ICBjbXBsd2kgTkFSR1M4OlJDLCAxNgotLSAg fCAgIGx3eiBDQVJHMywgMChCQVNFKQotLSAgfCAgICBsd3ogVEFCOkNBUkcxLCA0KEJBU0UpCi0t ICB8ICAgbHd6IENBUkc0LCA4KEJBU0UpCi0rICB8ICAgbHd6IENBUkczLCBXT1JEX0hJKEJBU0Up Ci0rICB8ICAgIGx3eiBUQUI6Q0FSRzEsIFdPUkRfTE8oQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzQs IDgrV09SRF9ISShCQVNFKQotICAgfC5pZiBEVUFMTlVNCi0tICB8ICAgIGx3eiBUTVAyLCAxMihC QVNFKQotKyAgfCAgICBsd3ogVE1QMiwgOCtXT1JEX0xPKEJBU0UpCi0gICB8LmVsc2UKLSAgIHwg ICAgbGZkIEZBUkcyLCA4KEJBU0UpCi0gICB8LmVuZGlmCi1AQCAtMTUwNCwxNiArMTY2MiwxNiBA QCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgIGxh IFJBLCAtOChCQVNFKQotICAgfCAgY21wbHcgVE1QMCwgVE1QMgotICAgfC5pZiBEVUFMTlVNCi0t ICB8ICBzdHcgVElTTlVNLCAwKFJBKQotKyAgfCAgc3R3IFRJU05VTSwgV09SRF9ISShSQSkKLSAg IHwgICBzbHdpIFRNUDMsIFRNUDIsIDMKLS0gIHwgIHN0dyBUTVAyLCA0KFJBKQotKyAgfCAgc3R3 IFRNUDIsIFdPUkRfTE8oUkEpCi0gICB8LmVsc2UKLSAgIHwgICBzbHdpIFRNUDMsIFRNUDIsIDMK LSAgIHwgIHN0ZmQgRkFSRzIsIDAoUkEpCi0gICB8LmVuZGlmCi0gICB8ICBibGUgPjIJCQkJLy8g Tm90IGluIGFycmF5IHBhcnQ/Ci0tICB8ICBsd3p4IFRNUDIsIFRNUDEsIFRNUDMKLS0gIHwgIGxm ZHggZjAsIFRNUDEsIFRNUDMKLSsgIHwgIGxmZHV4IGYwLCBUTVAxLCBUTVAzCi0rICB8ICBsd3og VE1QMiwgV09SRF9ISShUTVAxKQotICAgfDE6Ci0gICB8ICBjaGVja25pbCBUTVAyCi0gICB8ICAg bGkgUkQsICgwKzEpKjgKLUBAIC0xNTMyLDcgKzE2OTAsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9z dWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgY21wbHdpIENSRVQxLCAwCi0gICB8ICAg bGkgUkQsICgwKzEpKjgKLSAgIHwgIGJlcSAtPmZmZl9yZXMKLS0gIHwgIGx3eiBUTVAyLCAwKENS RVQxKQotKyAgfCAgbHd6IFRNUDIsIFdPUkRfSEkoQ1JFVDEpCi0gICB8ICBsZmQgZjAsIDAoQ1JF VDEpCi0gICB8ICBiIDwxCi0gICB8Ci1AQCAtMTU1MSwxMSArMTcwOSwxMSBAQCBzdGF0aWMgdm9p ZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgbGEgUkEsIC04KEJBU0Up Ci0gI2VuZGlmCi0gICB8LmlmIERVQUxOVU0KLS0gIHwgIHN0dyBUSVNOVU0sIDgoQkFTRSkKLSsg IHwgIHN0dyBUSVNOVU0sIDgrV09SRF9ISShCQVNFKQotICAgfC5lbHNlCi0tICB8ICBzdHcgWkVS TywgOChCQVNFKQotKyAgfCAgc3R3IFpFUk8sIDgrV09SRF9ISShCQVNFKQotICAgfC5lbmRpZgot LSAgfCAgIHN0dyBaRVJPLCAxMihCQVNFKQotKyAgfCAgIHN0dyBaRVJPLCA4K1dPUkRfTE8oQkFT RSkKLSAgIHwgIGxpIFJELCAoMysxKSo4Ci0gICB8ICBzdGZkIGYwLCAwKFJBKQotICAgfCAgYiAt PmZmZl9yZXMKLUBAIC0xNTc2LDcgKzE3MzQsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0 aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfAotICAgfC5mZnVuYyB4cGNhbGwKLSAgIHwgIGNtcGx3 aSBOQVJHUzg6UkMsIDE2Ci0tICB8ICAgbHd6IENBUkc0LCA4KEJBU0UpCi0rICB8ICAgbHd6IENB Ukc0LCA4K1dPUkRfSEkoQkFTRSkKLSAgIHwgICAgbGZkIEZBUkcyLCA4KEJBU0UpCi0gICB8ICAg IGxmZCBGQVJHMSwgMChCQVNFKQotICAgfCAgYmx0IC0+ZmZmX2ZhbGxiYWNrCi1AQCAtMTY3Myw3 ICsxODMxLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkK LSAgIHwuaWYgcmVzdW1lCi0gICB8ICBsaSBUTVAxLCBMSl9UVFJVRQotICAgfCAgIGxhIFJBLCAt OChCQVNFKQotLSAgfCAgc3R3IFRNUDEsIC04KEJBU0UpCQkJLy8gUHJlcGVuZCB0cnVlIHRvIHJl c3VsdHMuCi0rICB8ICBzdHcgVE1QMSwgV09SRF9ISS04KEJBU0UpCQkvLyBQcmVwZW5kIHRydWUg dG8gcmVzdWx0cy4KLSAgIHwgIGFkZGkgUkQsIFJELCAxNgotICAgfC5lbHNlCi0gICB8ICBtciBS QSwgQkFTRQotQEAgLTE2OTMsNyArMTg1MSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRp bmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBsZmQgZjAsIDAoVE1QMykKLSAgIHwgICBzdHAgVE1Q MywgTDpTQVZFMC0+dG9wCQkvLyBSZW1vdmUgZXJyb3IgZnJvbSBjb3JvdXRpbmUgc3RhY2suCi0g ICB8ICAgIGxpIFJELCAoMisxKSo4Ci0tICB8ICAgc3R3IFRNUDEsIC04KEJBU0UpCQkvLyBQcmVw ZW5kIGZhbHNlIHRvIHJlc3VsdHMuCi0rICB8ICAgc3R3IFRNUDEsIFdPUkRfSEktOChCQVNFKQkJ Ly8gUHJlcGVuZCBmYWxzZSB0byByZXN1bHRzLgotICAgfCAgICBsYSBSQSwgLTgoQkFTRSkKLSAg IHwgIHN0ZmQgZjAsIDAoQkFTRSkJCQkvLyBDb3B5IGVycm9yIG1lc3NhZ2UuCi0gICB8ICBiIDw3 Ci1AQCAtMTc0Niw4ICsxOTA0LDggQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVp bGRDdHggKmN0eCkKLSAgIHwtPmZmZl9yZXNpOgotICAgfCAgbHd6IFBDLCBGUkFNRV9QQyhCQVNF KQotICAgfCAgbGEgUkEsIC04KEJBU0UpCi0tICB8ICBzdHcgVElTTlVNLCAtOChCQVNFKQotLSAg fCAgc3R3IENSRVQxLCAtNChCQVNFKQotKyAgfCAgc3R3IFRJU05VTSwgV09SRF9ISS04KEJBU0Up Ci0rICB8ICBzdHcgQ1JFVDEsIFdPUkRfTE8tOChCQVNFKQotICAgfCAgYiAtPmZmZl9yZXMxCi0g ICB8MToKLSAgIHwgIGx1cyBDQVJHMywgMHg0MWUwCS8vIDJeMzEuCi1AQCAtMTc2Miw5ICsxOTIw LDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwt PmZmZl9yZXN0djoKLSAgIHwgIC8vIENBUkczL0NBUkcxID0gVFZhbHVlIHJlc3VsdC4KLSAgIHwg IGx3eiBQQywgRlJBTUVfUEMoQkFTRSkKLS0gIHwgICBzdHcgQ0FSRzMsIC04KEJBU0UpCi0rICB8 ICAgc3R3IENBUkczLCBXT1JEX0hJLTgoQkFTRSkKLSAgIHwgIGxhIFJBLCAtOChCQVNFKQotLSAg fCAgIHN0dyBDQVJHMSwgLTQoQkFTRSkKLSsgIHwgICBzdHcgQ0FSRzEsIFdPUkRfTE8tOChCQVNF KQotICAgfC0+ZmZmX3JlczE6Ci0gICB8ICAvLyBSQSA9IHJlc3VsdHMsIFBDID0gcmV0dXJuLgot ICAgfCAgbGkgUkQsICgxKzEpKjgKLUBAIC0xNzgyLDEwICsxOTQwLDExIEBAIHN0YXRpYyB2b2lk IGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBpbnNfbmV4dDEKLSAgIHwg IC8vIEFkanVzdCBCQVNFLiBLQkFTRSBpcyBhc3N1bWVkIHRvIGJlIHNldCBmb3IgdGhlIGNhbGxp bmcgZnJhbWUuCi0gICB8ICAgc3ViIEJBU0UsIFJBLCBUTVAwCi0rICB8ICAgYWRkaSBCQVNFUDQs IEJBU0UsIDQKLSAgIHwgIGluc19uZXh0MgotICAgfAotICAgfDY6ICAvLyBGaWxsIHVwIHJlc3Vs dHMgd2l0aCBuaWwuCi0tICB8ICBzdWJpIFRNUDEsIFJELCA4Ci0rICB8ICBhZGRpIFRNUDEsIFJE LCBXT1JEX0hJLTgKLSAgIHwgICBhZGRpIFJELCBSRCwgOAotICAgfCAgc3R3eCBUSVNOSUwsIFJB LCBUTVAxCi0gICB8ICBiIDw1Ci1AQCAtMTg5OCw3ICsyMDU3LDcgQEAgc3RhdGljIHZvaWQgYnVp bGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwKLSAgIHwuZmZ1bmMgbWF0aF9sb2cK LSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDgKLS0gIHwgICBsd3ogQ0FSRzMsIDAoQkFTRSkKLSsg IHwgICBsd3ogQ0FSRzMsIFdPUkRfSEkoQkFTRSkKLSAgIHwgICAgbGZkIEZBUkcxLCAwKEJBU0Up Ci0gICB8ICBibmUgLT5mZmZfZmFsbGJhY2sJCQkvLyBOZWVkIGV4YWN0bHkgMSBhcmd1bWVudC4K LSAgIHwgIGNoZWNrbnVtIENBUkczOyBiZ2UgLT5mZmZfZmFsbGJhY2sKLUBAIC0xOTIzLDEzICsy MDgyLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0g ICB8LmlmIERVQUxOVU0KLSAgIHwuZmZ1bmMgbWF0aF9sZGV4cAotICAgfCAgY21wbHdpIE5BUkdT ODpSQywgMTYKLS0gIHwgICBsd3ogQ0FSRzMsIDAoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzMsIFdP UkRfSEkoQkFTRSkKLSAgIHwgICAgbGZkIEZBUkcxLCAwKEJBU0UpCi0tICB8ICAgbHd6IENBUkc0 LCA4KEJBU0UpCi0rICB8ICAgbHd6IENBUkc0LCBXT1JEX0hJKzgoQkFTRSkKLSAgIHwuaWYgR1BS NjQKLS0gIHwgICAgbHd6IENBUkcyLCAxMihCQVNFKQotKyAgfCAgICBsd3ogQ0FSRzIsIFdPUkRf TE8rOChCQVNFKQotICAgfC5lbHNlCi0tICB8ICAgIGx3eiBDQVJHMSwgMTIoQkFTRSkKLSsgIHwg ICAgbHd6IENBUkcxLCBXT1JEX0xPKzgoQkFTRSkKLSAgIHwuZW5kaWYKLSAgIHwgIGJsdCAtPmZm Zl9mYWxsYmFjawotICAgfCAgY2hlY2tudW0gQ0FSRzM7IGJnZSAtPmZmZl9mYWxsYmFjawotQEAg LTE5NjEsOCArMjEyMCw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4 ICpjdHgpCi0gICB8ICBzdGZkIEZBUkcxLCAwKFJBKQotICAgfCAgbGkgUkQsICgyKzEpKjgKLSAg IHwuaWYgRFVBTE5VTQotLSAgfCAgIHN0dyBUSVNOVU0sIDgoUkEpCi0tICB8ICAgc3R3IFRNUDEs IDEyKFJBKQotKyAgfCAgIHN0dyBUSVNOVU0sIFdPUkRfSEkrOChSQSkKLSsgIHwgICBzdHcgVE1Q MSwgV09SRF9MTys4KFJBKQotICAgfC5lbHNlCi0gICB8ICAgc3RmZCBGQVJHMiwgOChSQSkKLSAg IHwuZW5kaWYKLUBAIC0xOTg5LDkgKzIxNDgsOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0 aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgIGFkZCBUTVAyLCBCQVNFLCBOQVJHUzg6UkMKLSAg IHwgIGJuZSA+NAotICAgfDE6ICAvLyBIYW5kbGUgaW50ZWdlcnMuCi0tICB8ICBsd3ogQ0FSRzQs IDAoVE1QMSkKLSsgIHwgIGx3eiBDQVJHNCwgV09SRF9ISShUTVAxKQotICAgfCAgIGNtcGx3IGNy MSwgVE1QMSwgVE1QMgotLSAgfCAgbHd6IENBUkcyLCA0KFRNUDEpCi0rICB8ICBsd3ogQ0FSRzIs IFdPUkRfTE8oVE1QMSkKLSAgIHwgICBiZ2UgY3IxLCAtPmZmZl9yZXNpCi0gICB8ICBjaGVja251 bSBDQVJHNAotICAgfCAgIHhvcmlzIFRNUDAsIENBUkcxLCAweDgwMDAKLUBAIC0yMDIwLDcgKzIx NzksNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAg fCAgIGxmZCBGQVJHMSwgMChCQVNFKQotICAgfCAgYmdlIC0+ZmZmX2ZhbGxiYWNrCi0gICB8NTog IC8vIEhhbmRsZSBudW1iZXJzLgotLSAgfCAgbHd6IENBUkc0LCAwKFRNUDEpCi0rICB8ICBsd3og Q0FSRzQsIFdPUkRfSEkoVE1QMSkKLSAgIHwgICBjbXBsdyBjcjEsIFRNUDEsIFRNUDIKLSAgIHwg IGxmZCBGQVJHMiwgMChUTVAxKQotICAgfCAgIGJnZSBjcjEsIC0+ZmZmX3Jlc24KLUBAIC0yMDM1 LDcgKzIxOTQsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4 KQotICAgfC5lbmRpZgotICAgfCAgYiA8NQotICAgfDc6ICAvLyBDb252ZXJ0IGludGVnZXIgdG8g bnVtYmVyIGFuZCBjb250aW51ZSBhYm92ZS4KLS0gIHwgICBsd3ogQ0FSRzIsIDQoVE1QMSkKLSsg IHwgICBsd3ogQ0FSRzIsIFdPUkRfTE8oVE1QMSkKLSAgIHwgIGJuZSAtPmZmZl9mYWxsYmFjawot ICAgfCAgdG9udW1faSBGQVJHMiwgQ0FSRzIKLSAgIHwgIGIgPDYKLUBAIC0yMDQzLDcgKzIyMDIs MTIgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwg IC5mZnVuY19uIG5hbWUKLSAgIHwgIGxpIFRNUDEsIDgKLSAgIHwxOgotKyAgfC5pZiBFTkRJQU5f TEUKLSsgIHwgICBhZGQgQ0FSRzIsIEJBU0UsIFRNUDEKLSsgIHwgICBsd3ogQ0FSRzIsIFdPUkRf SEkoQ0FSRzIpCi0rICB8LmVsc2UKLSAgIHwgICBsd3p4IENBUkcyLCBCQVNFLCBUTVAxCi0rICB8 LmVuZGlmCi0gICB8ICAgbGZkeCBGQVJHMiwgQkFTRSwgVE1QMQotICAgfCAgY21wbHcgY3IxLCBU TVAxLCBOQVJHUzg6UkMKLSAgIHwgICBjaGVja251bSBDQVJHMgotQEAgLTIwNjcsOCArMjIzMSw4 IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8Ci0g ICB8LmZmdW5jIHN0cmluZ19ieXRlCQkJLy8gT25seSBoYW5kbGUgdGhlIDEtYXJnIGNhc2UgaGVy ZS4KLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMsIDgKLS0gIHwgICBsd3ogQ0FSRzMsIDAoQkFTRSkK LS0gIHwgICAgbHd6IFNUUjpDQVJHMSwgNChCQVNFKQotKyAgfCAgIGx3eiBDQVJHMywgV09SRF9I SShCQVNFKQotKyAgfCAgICBsd3ogU1RSOkNBUkcxLCBXT1JEX0xPKEJBU0UpCi0gICB8ICBibmUg LT5mZmZfZmFsbGJhY2sJCQkvLyBOZWVkIGV4YWN0bHkgMSBhcmd1bWVudC4KLSAgIHwgICBjaGVj a3N0ciBDQVJHMwotICAgfCAgIGJuZSAtPmZmZl9mYWxsYmFjawotQEAgLTIwOTksMTIgKzIyNjMs MTIgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwu ZmZ1bmMgc3RyaW5nX2NoYXIJCQkvLyBPbmx5IGhhbmRsZSB0aGUgMS1hcmcgY2FzZSBoZXJlLgot ICAgfCAgZmZnY2NoZWNrCi0gICB8ICBjbXBsd2kgTkFSR1M4OlJDLCA4Ci0tICB8ICAgbHd6IENB UkczLCAwKEJBU0UpCi0rICB8ICAgbHd6IENBUkczLCBXT1JEX0hJKEJBU0UpCi0gICB8LmlmIERV QUxOVU0KLS0gIHwgICAgbHd6IFRNUDAsIDQoQkFTRSkKLSsgIHwgICAgbHd6IFRNUDAsIFdPUkRf TE8oQkFTRSkKLSAgIHwgIGJuZSAtPmZmZl9mYWxsYmFjawkJCS8vIEV4YWN0bHkgMSBhcmd1bWVu dC4KLSAgIHwgIGNoZWNrbnVtIENBUkczOyBibmUgLT5mZmZfZmFsbGJhY2sKLS0gIHwgICBsYSBD QVJHMiwgNyhCQVNFKQotKyAgfCAgIGxhIENBUkcyLCBXT1JEX0JMTyhCQVNFKQotICAgfC5lbHNl Ci0gICB8ICAgIGxmZCBGQVJHMSwgMChCQVNFKQotICAgfCAgYm5lIC0+ZmZmX2ZhbGxiYWNrCQkJ Ly8gRXhhY3RseSAxIGFyZ3VtZW50LgotQEAgLTIxMjgsMTYgKzIyOTIsMTYgQEAgc3RhdGljIHZv aWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwuZmZ1bmMgc3RyaW5nX3N1 YgotICAgfCAgZmZnY2NoZWNrCi0gICB8ICBjbXBsd2kgTkFSR1M4OlJDLCAxNgotLSAgfCAgIGx3 eiBDQVJHMywgMTYoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzMsIFdPUkRfSEkrMTYoQkFTRSkKLSAg IHwuaWYgbm90IERVQUxOVU0KLSAgIHwgICAgbGZkIGYwLCAxNihCQVNFKQotICAgfC5lbmRpZgot LSAgfCAgIGx3eiBUTVAwLCAwKEJBU0UpCi0tICB8ICAgIGx3eiBTVFI6Q0FSRzEsIDQoQkFTRSkK LSsgIHwgICBsd3ogVE1QMCwgV09SRF9ISShCQVNFKQotKyAgfCAgICBsd3ogU1RSOkNBUkcxLCBX T1JEX0xPKEJBU0UpCi0gICB8ICBibHQgLT5mZmZfZmFsbGJhY2sKLS0gIHwgICBsd3ogQ0FSRzIs IDgoQkFTRSkKLSsgIHwgICBsd3ogQ0FSRzIsIFdPUkRfSEkrOChCQVNFKQotICAgfC5pZiBEVUFM TlVNCi0tICB8ICAgIGx3eiBUTVAxLCAxMihCQVNFKQotKyAgfCAgICBsd3ogVE1QMSwgV09SRF9M Tys4KEJBU0UpCi0gICB8LmVsc2UKLSAgIHwgICAgbGZkIGYxLCA4KEJBU0UpCi0gICB8LmVuZGlm Ci1AQCAtMjE0NSw3ICsyMzA5LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVp bGRDdHggKmN0eCkKLSAgIHwgIGJlcSA+MQotICAgfC5pZiBEVUFMTlVNCi0gICB8ICBjaGVja251 bSBDQVJHMwotLSAgfCAgIGx3eiBUTVAyLCAyMChCQVNFKQotKyAgfCAgIGx3eiBUTVAyLCBXT1JE X0xPKzE2KEJBU0UpCi0gICB8ICBibmUgLT5mZmZfZmFsbGJhY2sKLSAgIHwxOgotICAgfCAgY2hl Y2tudW0gQ0FSRzI7IGJuZSAtPmZmZl9mYWxsYmFjawotQEAgLTIyMDEsOCArMjM2NSw4IEBAIHN0 YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICAuZmZ1bmMg c3RyaW5nXyAuLiBuYW1lCi0gICB8ICBmZmdjY2hlY2sKLSAgIHwgIGNtcGx3aSBOQVJHUzg6UkMs IDgKLS0gIHwgICBsd3ogQ0FSRzMsIDAoQkFTRSkKLS0gIHwgICAgbHd6IFNUUjpDQVJHMiwgNChC QVNFKQotKyAgfCAgIGx3eiBDQVJHMywgV09SRF9ISShCQVNFKQotKyAgfCAgICBsd3ogU1RSOkNB UkcyLCBXT1JEX0xPKEJBU0UpCi0gICB8ICBibHQgLT5mZmZfZmFsbGJhY2sKLSAgIHwgIGNoZWNr c3RyIENBUkczCi0gICB8ICAgbGEgU0JVRjpDQVJHMSwgRElTUEFUQ0hfR0wodG1wYnVmKShESVNQ QVRDSCkKLUBAIC0yMjQwLDEwICsyNDA0LDEwIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRp bmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBhZGRpIFRNUDEsIEJBU0UsIDgKLSAgIHwgIGFkZCBU TVAyLCBCQVNFLCBOQVJHUzg6UkMKLSAgIHwxOgotLSAgfCAgbHd6IENBUkc0LCAwKFRNUDEpCi0r ICB8ICBsd3ogQ0FSRzQsIFdPUkRfSEkoVE1QMSkKLSAgIHwgICBjbXBsdyBjcjEsIFRNUDEsIFRN UDIKLSAgIHwuaWYgRFVBTE5VTQotLSAgfCAgbHd6IENBUkcyLCA0KFRNUDEpCi0rICB8ICBsd3og Q0FSRzIsIFdPUkRfTE8oVE1QMSkKLSAgIHwuZWxzZQotICAgfCAgbGZkIEZBUkcxLCAwKFRNUDEp Ci0gICB8LmVuZGlmCi1AQCAtMjM0NCwyMCArMjUwOCwyMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9z dWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfAotICAgfC0+ZmZmX2ZhbGxiYWNrOgkJCS8v IENhbGwgZmFzdCBmdW5jdGlvbiBmYWxsYmFjayBoYW5kbGVyLgotICAgfCAgLy8gQkFTRSA9IG5l dyBiYXNlLCBSQiA9IENGVU5DLCBSQyA9IG5hcmdzKjgKLS0gIHwgIGxwIFRNUDMsIENGVU5DOlJC LT5mCi0rICB8ICBscCBGVU5DUkVHLCBDRlVOQzpSQi0+ZgotICAgfCAgICBhZGQgVE1QMSwgQkFT RSwgTkFSR1M4OlJDCi0gICB8ICAgbHd6IFBDLCBGUkFNRV9QQyhCQVNFKQkJLy8gRmFsbGJhY2sg bWF5IG92ZXJ3cml0ZSBQQy4KLSAgIHwgICAgYWRkaSBUTVAwLCBUTVAxLCA4KkxVQV9NSU5TVEFD SwotICAgfCAgICAgbHd6IFRNUDIsIEwtPm1heHN0YWNrCi0gICB8ICAgc3R3IFBDLCBTQVZFX1BD CQkJLy8gUmVkdW5kYW50IChidXQgYSBkZWZpbmVkIHZhbHVlKS4KLS0gIHwgIC50b2MgbHAgVE1Q MywgMChUTVAzKQotKyAgfCAgLm9wZCBscCBUT0NSRUcsIFRPQ19PRlMoRlVOQ1JFRykKLSsgIHwg IC5vcGRlbnYgbHAgRU5WUkVHLCBFTlZfT0ZTKEZVTkNSRUcpCi0rICB8ICAub3BkIGxwIEZVTkNS RUcsIDAoRlVOQ1JFRykKLSAgIHwgIGNtcGx3IFRNUDAsIFRNUDIKLSAgIHwgICAgIHN0cCBCQVNF LCBMLT5iYXNlCi0gICB8ICAgIHN0cCBUTVAxLCBMLT50b3AKLSAgIHwgICBtciBDQVJHMSwgTAot ICAgfCAgYmd0ID41CQkJCS8vIE5lZWQgdG8gZ3JvdyBzdGFjay4KLS0gIHwgIG10Y3RyIFRNUDMK LSsgIHwgIG10Y3RyIEZVTkNSRUcKLSAgIHwgIGJjdHJsCQkJCS8vIChsdWFfU3RhdGUgKkwpCi0r ICB8ICAudG9jIGxwIFRPQ1JFRywgU0FWRV9UT0MKLSAgIHwgIC8vIEVpdGhlciB0aHJvd3MgYW4g ZXJyb3IsIG9yIHJlY292ZXJzIGFuZCByZXR1cm5zIC0xLCAwIG9yIG5yZXN1bHRzKzEuCi0gICB8 ICBscCBCQVNFLCBMLT5iYXNlCi0gICB8ICBjbXB3aSBDUkVUMSwgMAotQEAgLTI0NTksNiArMjYy Niw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8 MzoKLSAgIHwgIGxwIEJBU0UsIEwtPmJhc2UKLSAgIHw0OiAgLy8gUmUtZGlzcGF0Y2ggdG8gc3Rh dGljIGlucy4KLSsgIHwgIGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0gICB8ICBsd3ogSU5TLCAtNChQ QykKLSAgIHwgIGRlY29kZV9PUFAgVE1QMSwgSU5TCi0gICB8ICAgZGVjb2RlX1JCOCBSQiwgSU5T Ci1AQCAtMjQ3Miw3ICsyNjQwLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVp bGRDdHggKmN0eCkKLSAgIHwKLSAgIHwtPmNvbnRfaG9vazoJCQkJLy8gQ29udGludWUgZnJvbSBo b29rIHlpZWxkLgotICAgfCAgYWRkaSBQQywgUEMsIDQKLS0gIHwgIGx3eiBNVUxUUkVTLCAtMjAo UkIpCQkvLyBSZXN0b3JlIE1VTFRSRVMgZm9yICpNIGlucy4KLSsgIHwgIGx3eiBNVUxUUkVTLCBX T1JEX0xPLTI0KFJCKQkJLy8gUmVzdG9yZSBNVUxUUkVTIGZvciAqTSBpbnMuCi0gICB8ICBiIDw0 Ci0gICB8Ci0gICB8LT52bV9ob3Rsb29wOgkJCS8vIEhvdCBsb29wIGNvdW50ZXIgdW5kZXJmbG93 LgotQEAgLTI1MTQsNiArMjY4Miw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1 aWxkQ3R4ICpjdHgpCi0gICB8ICBscCBCQVNFLCBMLT5iYXNlCi0gICB8ICAgbHAgVE1QMCwgTC0+ dG9wCi0gICB8ICAgc3R3IFpFUk8sIFNBVkVfUEMJCQkvLyBJbnZhbGlkYXRlIGZvciBzdWJzZXF1 ZW50IGxpbmUgaG9vay4KLSsgIHwgIGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0gICB8ICBzdWIgTkFS R1M4OlJDLCBUTVAwLCBCQVNFCi0gICB8ICBhZGQgUkEsIEJBU0UsIFJBCi0gICB8ICBsd3ogTEZV TkM6UkIsIEZSQU1FX0ZVTkMoQkFTRSkKLUBAIC0yNTI1LDcgKzI2OTQsNyBAQCBzdGF0aWMgdm9p ZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfC5pZiBKSVQKLSAgIHwgIC8v IFJBID0gcmVzdWx0cHRyLCBSQiA9IG1ldGEgYmFzZQotICAgfCAgbHd6IElOUywgLTQoUEMpCi0t ICB8ICAgIGx3eiBUUkFDRTpUTVAyLCAtMjAoUkIpCQkvLyBTYXZlIHByZXZpb3VzIHRyYWNlLgot KyAgfCAgICBsd3ogVFJBQ0U6VE1QMiwgV09SRF9MTy0yNChSQikJLy8gU2F2ZSBwcmV2aW91cyB0 cmFjZS4KLSAgIHwgICBhZGRpYy4gVE1QMSwgTVVMVFJFUywgLTgKLSAgIHwgIGRlY29kZV9SQTgg UkMsIElOUwkJCS8vIENhbGwgYmFzZS4KLSAgIHwgICBiZXEgPjIKLUBAIC0yNTYwLDEwICsyNzI5 LDE2IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8 ICBtciBDQVJHMiwgUEMKLSAgIHwgIGJsIGV4dGVybiBsal9kaXNwYXRjaF9zdGl0Y2gJLy8gKGpp dF9TdGF0ZSAqSiwgY29uc3QgQkNJbnMgKnBjKQotICAgfCAgbHAgQkFTRSwgTC0+YmFzZQotKyAg fCAgYWRkaSBCQVNFUDQsIEJBU0UsIDQKLSAgIHwgIGIgLT5jb250X25vcAotICAgfAotICAgfDk6 Ci0rICB8LmlmIEVORElBTl9MRQotKyAgfCAgYWRkaSBCQVNFUDQsIEJBU0UsIDQKLSsgIHwgIHN0 d3ggVElTTklMLCBCQVNFUDQsIFJDCi0rICB8LmVsc2UKLSAgIHwgIHN0d3ggVElTTklMLCBCQVNF LCBSQwotKyAgfC5lbmRpZgotICAgfCAgYWRkaSBSQywgUkMsIDgKLSAgIHwgIGIgPDMKLSAgIHwu ZW5kaWYKLUBAIC0yNTc4LDYgKzI3NTMsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5l cyhCdWlsZEN0eCAqY3R4KQotICAgfCAgLy8gSE9PS19QUk9GSUxFIGlzIG9mZiBhZ2Fpbiwgc28g cmUtZGlzcGF0Y2ggdG8gZHluYW1pYyBpbnN0cnVjdGlvbi4KLSAgIHwgIGxwIEJBU0UsIEwtPmJh c2UKLSAgIHwgIHN1YmkgUEMsIFBDLCA0Ci0rICB8ICBhZGRpIEJBU0VQNCwgQkFTRSwgNAotICAg fCAgYiAtPmNvbnRfbm9wCi0gI2VuZGlmCi0gICB8Ci1AQCAtMjU4NiwzOSArMjc2Miw3MiBAQCBz dGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfC8vLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAgIHwKLSAgIHwubWFjcm8gc2F2ZXhfLCBhLCBiLCBjLCBkCi0tICB8ICBzdGZk IGYuLmEsIDE2K2EqOChzcCkKLS0gIHwgIHN0ZmQgZi4uYiwgMTYrYio4KHNwKQotLSAgfCAgc3Rm ZCBmLi5jLCAxNitjKjgoc3ApCi0tICB8ICBzdGZkIGYuLmQsIDE2K2QqOChzcCkKLSsgIHwgIHN0 ZmQgZi4uYSwgRVhJVF9PRkZTRVQrYSo4KHNwKQotKyAgfCAgc3RmZCBmLi5iLCBFWElUX09GRlNF VCtiKjgoc3ApCi0rICB8ICBzdGZkIGYuLmMsIEVYSVRfT0ZGU0VUK2MqOChzcCkKLSsgIHwgIHN0 ZmQgZi4uZCwgRVhJVF9PRkZTRVQrZCo4KHNwKQotKyAgfC5lbmRtYWNybwotKyAgfAotKyAgfC5t YWNybyBzYXZlciwgYQotKyAgfCAgc3RwIHIuLmEsIEVYSVRfT0ZGU0VUKzMyKjgrYSpQU0laRShz cCkKLSAgIHwuZW5kbWFjcm8KLSAgIHwKLSAgIHwtPnZtX2V4aXRfaGFuZGxlcjoKLSAgIHwuaWYg SklUCi0tICB8ICBhZGRpIHNwLCBzcCwgLSgxNiszMio4KzMyKjQpCi0tICB8ICBzdG13IHIyLCAx NiszMio4KzIqNChzcCkKLSsgIHwgIGFkZGkgc3AsIFRNUDAsIHNwLCAtKEVYSVRfT0ZGU0VUKzMy KjgrMzIqUFNJWkUpCi0rICB8ICBzYXZlciAzIC8vIENBUkcxCi0rICB8ICBzYXZlciA0IC8vIENB UkcyCi0rICB8ICBzYXZlciA1IC8vIENBUkczCi0rICB8ICBzYXZlciAxNyAvLyBESVNQQVRDSAot ICAgfCAgICBhZGRpIERJU1BBVENILCBKR0wsIC1HR19ESVNQMkctMzI3NjgKLSAgIHwgICAgbGkg Q0FSRzIsIH5MSl9WTVNUX0VYSVQKLS0gIHwgICBsd3ogQ0FSRzEsIDE2KzMyKjgrMzIqNChzcCkJ Ly8gR2V0IHN0YWNrIGNoYWluLgotKyAgfCAgIGxwIENBUkcxLCBFWElUX09GRlNFVCszMio4KzMy KlBTSVpFKHNwKQkvLyBHZXQgc3RhY2sgY2hhaW4uCi0gICB8ICAgIHN0dyBDQVJHMiwgRElTUEFU Q0hfR0wodm1zdGF0ZSkoRElTUEFUQ0gpCi0rICB8ICBzYXZlciAyCi0rICB8ICBzYXZlciA2Ci0r ICB8ICBzYXZlciA3Ci0rICB8ICBzYXZlciA4Ci0rICB8ICBzYXZlciA5Ci0rICB8ICBzYXZlciAx MAotKyAgfCAgc2F2ZXIgMTEKLSsgIHwgIHNhdmVyIDEyCi0rICB8ICBzYXZlciAxMwotICAgfCAg c2F2ZXhfIDAsMSwyLDMKLS0gIHwgICBzdHcgQ0FSRzEsIDAoc3ApCQkJLy8gU3RvcmUgZXh0ZW5k ZWQgc3RhY2sgY2hhaW4uCi0tICB8ICAgY2xyc28gVE1QMQotKyAgfCAgIHN0cCBDQVJHMSwgMChz cCkJCQkvLyBTdG9yZSBleHRlbmRlZCBzdGFjayBjaGFpbi4KLSsKLSAgIHwgIHNhdmV4XyA0LDUs Niw3Ci0tICB8ICAgYWRkaSBDQVJHMiwgc3AsIDE2KzMyKjgrMzIqNAkvLyBSZWNvbXB1dGUgb3Jp Z2luYWwgdmFsdWUgb2Ygc3AuCi0rICB8ICBzYXZlciAxNAotKyAgfCAgc2F2ZXIgMTUKLSsgIHwg IHNhdmVyIDE2Ci0rICB8ICBzYXZlciAxOAotKyAgfCAgIGFkZGkgQ0FSRzIsIHNwLCBFWElUX09G RlNFVCszMio4KzMyKlBTSVpFCS8vIFJlY29tcHV0ZSBvcmlnaW5hbCB2YWx1ZSBvZiBzcC4KLSAg IHwgIHNhdmV4XyA4LDksMTAsMTEKLS0gIHwgICBzdHcgQ0FSRzIsIDE2KzMyKjgrMSo0KHNwKQkv LyBTdG9yZSBzcCBpbiBSSURfU1AuCi0rICB8ICAgc3RwIENBUkcyLCBFWElUX09GRlNFVCszMio4 KzEqUFNJWkUoc3ApCS8vIFN0b3JlIHNwIGluIFJJRF9TUC4KLSAgIHwgIHNhdmV4XyAxMiwxMywx NCwxNQotICAgfCAgIG1mbHIgQ0FSRzMKLSAgIHwgICBsaSBUTVAxLCAwCi0gICB8ICBzYXZleF8g MTYsMTcsMTgsMTkKLS0gIHwgICBzdHcgVE1QMSwgMTYrMzIqOCswKjQoc3ApCQkvLyBDbGVhciBS SURfVE1QLgotKyAgfCAgIHN0dyBUTVAxLCBFWElUX09GRlNFVCszMio4KzAqUFNJWkUoc3ApCQkv LyBDbGVhciBSSURfVE1QLgotICAgfCAgc2F2ZXhfIDIwLDIxLDIyLDIzCi0gICB8ICAgbGh6IENB Ukc0LCAyKENBUkczKQkJLy8gTG9hZCB0cmFjZSBudW1iZXIuCi0gICB8ICBzYXZleF8gMjQsMjUs MjYsMjcKLSAgIHwgIGx3eiBMLCBESVNQQVRDSF9HTChjdXJfTCkoRElTUEFUQ0gpCi0gICB8ICBz YXZleF8gMjgsMjksMzAsMzEKLSsgIHwgIHNhdmVyIDE5Ci0rICB8ICBzYXZlciAyMAotKyAgfCAg c2F2ZXIgMjEKLSsgIHwgIHNhdmVyIDIyCi0rICB8ICBzYXZlciAyMwotKyAgfCAgc2F2ZXIgMjQK LSsgIHwgIHNhdmVyIDI1Ci0rICB8ICBzYXZlciAyNgotKyAgfCAgc2F2ZXIgMjcKLSsgIHwgIHNh dmVyIDI4Ci0rICB8ICBzYXZlciAyOQotKyAgfCAgc2F2ZXIgMzAKLSsgIHwgIHNhdmVyIDMxCi0g ICB8ICAgc3ViIENBUkczLCBUTVAwLCBDQVJHMwkJLy8gQ29tcHV0ZSBleGl0IG51bWJlci4KLS0g IHwgIGxwIEJBU0UsIERJU1BBVENIX0dMKGppdF9iYXNlKShESVNQQVRDSCkKLSsgIHwgIGx3eiBC QVNFLCBESVNQQVRDSF9HTChqaXRfYmFzZSkoRElTUEFUQ0gpCi0gICB8ICAgc3J3aSBDQVJHMywg Q0FSRzMsIDIKLSAgIHwgIHN0cCBMLCBESVNQQVRDSF9KKEwpKERJU1BBVENIKQotICAgfCAgIHN1 YmkgQ0FSRzMsIENBUkczLCAyCi1AQCAtMjYyNywxMSArMjgzNiwxMSBAQCBzdGF0aWMgdm9pZCBi dWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgc3R3IFRNUDEsIERJU1BBVENI X0dMKGppdF9iYXNlKShESVNQQVRDSCkKLSAgIHwgIGFkZGkgQ0FSRzEsIERJU1BBVENILCBHR19E SVNQMkoKLSAgIHwgICBzdHcgQ0FSRzMsIERJU1BBVENIX0ooZXhpdG5vKShESVNQQVRDSCkKLS0g IHwgIGFkZGkgQ0FSRzIsIHNwLCAxNgotKyAgfCAgYWRkaSBDQVJHMiwgc3AsIEVYSVRfT0ZGU0VU Ci0gICB8ICBibCBleHRlcm4gbGpfdHJhY2VfZXhpdAkJLy8gKGppdF9TdGF0ZSAqSiwgRXhpdFN0 YXRlICpleCkKLSAgIHwgIC8vIFJldHVybnMgTVVMVFJFUyAodW5zY2FsZWQpIG9yIG5lZ2F0ZWQg ZXJyb3IgY29kZS4KLSAgIHwgIGxwIFRNUDEsIEwtPmNmcmFtZQotLSAgfCAgbHd6IFRNUDIsIDAo c3ApCi0rICB8ICBscCBUTVAyLCAwKHNwKQotICAgfCAgIGxwIEJBU0UsIEwtPmJhc2UKLSAgIHwu aWYgR1BSNjQKLSAgIHwgIHJsZGljciBzcCwgVE1QMSwgMCwgNjEKLUBAIC0yNjM5LDcgKzI4NDgs NyBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAg cmx3aW5tIHNwLCBUTVAxLCAwLCAwLCAyOQotICAgfC5lbmRpZgotICAgfCAgIGx3eiBQQywgU0FW RV9QQwkJCS8vIEdldCBTQVZFX1BDLgotLSAgfCAgc3R3IFRNUDIsIDAoc3ApCi0rICB8ICBzdHAg VE1QMiwgMChzcCkKLSAgIHwgIHN0dyBMLCBTQVZFX0wJCQkvLyBTZXQgU0FWRV9MIChvbi10cmFj ZSByZXN1bWUveWllbGQpLgotICAgfCAgYiA+MQotICAgfC5lbmRpZgotQEAgLTI2NjAsNyArMjg2 OSwxMiBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQotICAg fCAgICBzdHcgVE1QMiwgRElTUEFUQ0hfR0woaml0X2Jhc2UpKERJU1BBVENIKQotICAgfCAgbHd6 IEtCQVNFLCBQQzJQUk9UTyhrKShUTVAxKQotICAgfCAgLy8gU2V0dXAgdHlwZSBjb21wYXJpc29u IGNvbnN0YW50cy4KLSsgIHwuaWYgUDY0Ci0rICB8ICBsdXMgVElTTlVNLCBMSl9USVNOVU0gPj4g MTYKLSsgIHwgIG9yaSBUSVNOVU0sIFRJU05VTSwgTEpfVElTTlVNICYgMHhmZmZmCi0rICB8LmVs c2UKLSAgIHwgIGxpIFRJU05VTSwgTEpfVElTTlVNCi0rICB8LmVuZGlmCi0gICB8ICBsdXMgVE1Q MywgMHg1OWMwCQkJLy8gVE9CSVQgPSAyXjUyICsgMl41MSAoZmxvYXQpLgotICAgfCAgc3R3IFRN UDMsIFRNUEQKLSAgIHwgIGxpIFpFUk8sIDAKLUBAIC0yNjgwLDE0ICsyODk0LDE0IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICAgZGVjb2RlX1JB OCBSQSwgSU5TCi0gICB8ICBscHggVE1QMCwgRElTUEFUQ0gsIFRNUDEKLSAgIHwgIG10Y3RyIFRN UDAKLS0gIHwgIGNtcGx3aSBUTVAxLCBCQ19GVU5DRio0CQkvLyBGdW5jdGlvbiBoZWFkZXI/Ci0r ICB8ICBjbXBsd2kgVE1QMSwgQkNfRlVOQ0YqUFNJWkUJLy8gRnVuY3Rpb24gaGVhZGVyPwotICAg fCAgYmdlID4yCi0gICB8ICAgZGVjb2RlX1JCOCBSQiwgSU5TCi0gICB8ICAgZGVjb2RlX1JEOCBS RCwgSU5TCi0gICB8ICAgZGVjb2RlX1JDOCBSQywgSU5TCi0gICB8ICBiY3RyCi0gICB8MjoKLS0g IHwgIGNtcGx3aSBUTVAxLCAoQkNfRlVOQ0MrMikqNAkvLyBGYXN0IGZ1bmN0aW9uPwotKyAgfCAg Y21wbHdpIFRNUDEsIChCQ19GVU5DQysyKSpQU0laRQkvLyBGYXN0IGZ1bmN0aW9uPwotICAgfCAg Ymx0ID4zCi0gICB8ICAvLyBDaGVjayBmcmFtZSBiZWxvdyBmYXN0IGZ1bmN0aW9uLgotICAgfCAg bHd6IFRNUDEsIEZSQU1FX1BDKEJBU0UpCi1AQCAtMjY5Nyw3ICsyOTExLDcgQEAgc3RhdGljIHZv aWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwgIGx3eiBUTVAyLCAtNChU TVAxKQotICAgfCAgZGVjb2RlX1JBOCBUTVAwLCBUTVAyCi0gICB8ICBzdWIgVE1QMSwgQkFTRSwg VE1QMAotLSAgfCAgbHd6IExGVU5DOlRNUDIsIC0xMihUTVAxKQotKyAgfCAgbHd6IExGVU5DOlRN UDIsIFdPUkRfTE8tMTYoVE1QMSkKLSAgIHwgIGx3eiBUTVAxLCBMRlVOQzpUTVAyLT5wYwotICAg fCAgbHd6IEtCQVNFLCBQQzJQUk9UTyhrKShUTVAxKQotICAgfDM6Ci1AQCAtMjcxOCw2ICsyOTMy LDggQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMoQnVpbGRDdHggKmN0eCkKLSAgIHwv LyBOWUk6IFVzZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbnMgb2YgZmxvb3IsIGNlaWwsIHRydW5j LgotICAgfAotICAgfC0+dm1fbW9kaToKLSsgIHwgIGxpIFRNUDEsIDAKLSsgIHwgIG10eGVyIFRN UDEKLSAgIHwgIGRpdndvLiBUTVAwLCBDQVJHMSwgQ0FSRzIKLSAgIHwgIGJzbyA+MQotICAgfC5p ZiBHUFI2NAotQEAgLTI3MzYsNyArMjk1Miw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRp bmVzKEJ1aWxkQ3R4ICpjdHgpCi0gICB8ICBjbXB3aSBDQVJHMiwgMAotICAgfCAgIGxpIENBUkcx LCAwCi0gICB8ICBiZXFscgotLSAgfCAgY2xyc28gVE1QMAkJCS8vIENsZWFyIFNPIGZvciAtMjE0 NzQ4MzY0OCAlIC0xIGFuZCByZXR1cm4gMC4KLSsgIHwgIC8vIENsZWFyIFNPIGZvciAtMjE0NzQ4 MzY0OCAlIC0xIGFuZCByZXR1cm4gMC4KLSsgIHwgIGNyeG9yIDQqY3IwK3NvLCA0KmNyMCtzbywg NCpjcjArc28KLSAgIHwgIGJscgotICAgfAotICAgfC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUBAIC0yNzQ5 LDEwICsyOTY2LDE4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3N1YnJvdXRpbmVzKEJ1aWxkQ3R4ICpj dHgpCi0gICB8LT52bV9jYWNoZXN5bmM6Ci0gICB8LmlmIEpJVCBvciBGRkkKLSAgIHwgIC8vIENv bXB1dGUgc3RhcnQgb2YgZmlyc3QgY2FjaGUgbGluZSBhbmQgbnVtYmVyIG9mIGNhY2hlIGxpbmVz LgotKyAgfCAgLmlmIEdQUjY0Ci0rICB8ICBybGRpY3IgQ0FSRzEsIENBUkcxLCAwLCA1OAotKyAg fCAgLmVsc2UKLSAgIHwgIHJsd2lubSBDQVJHMSwgQ0FSRzEsIDAsIDAsIDI2Ci0rICB8ICAuZW5k aWYKLSAgIHwgIHN1YiBDQVJHMiwgQ0FSRzIsIENBUkcxCi0gICB8ICBhZGRpIENBUkcyLCBDQVJH MiwgMzEKLSsgIHwgIC5pZiBHUFI2NAotKyAgfCAgc3JkaS4gQ0FSRzIsIENBUkcyLCA1Ci0rICB8 ICAuZWxzZQotICAgfCAgcmx3aW5tLiBDQVJHMiwgQ0FSRzIsIDI3LCA1LCAzMQotKyAgfCAgLmVu ZGlmCi0gICB8ICBiZXFscgotICAgfCAgbXRjdHIgQ0FSRzIKLSAgIHwgIG1yIENBUkczLCBDQVJH MQotQEAgLTI3NzQsMzkgKzI5OTksNzAgQEAgc3RhdGljIHZvaWQgYnVpbGRfc3Vicm91dGluZXMo QnVpbGRDdHggKmN0eCkKLSAgIHwvLy0tIEZGSSBoZWxwZXIgZnVuY3Rpb25zIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICB8Ly8tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotICAgfAotLSAgfC8vIEhhbmRsZXIgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucy4gQ2FsbGJhY2sg c2xvdCBudW1iZXIgaW4gcjExLCBnIGluIHIxMi4KLSsgIHwvLyBIYW5kbGVyIGZvciBjYWxsYmFj ayBmdW5jdGlvbnMuCi0rICB8Ly8gMzItYml0OiBDYWxsYmFjayBzbG90IG51bWJlciBpbiByMTIs IGcgaW4gcjExLgotKyAgfC8vIDY0LWJpdCB2MTogQ2FsbGJhY2sgc2xvdCBudW1iZXIgaW4gYml0 cyA0Nysgb2YgcjExLCBnIGluIDAtNDYsIFRPQyBpbiByMi4KLSsgIHwvLyA2NC1iaXQgdjI6IENh bGxiYWNrIHNsb3QgbnVtYmVyIGluIGJpdHMgMi0xMSBvZiByMTIsIGcgaW4gcjExLAotKyAgfC8v IHZtX2ZmaV9jYWxsYmFjayBpbiByMi4KLSAgIHwtPnZtX2ZmaV9jYWxsYmFjazoKLSAgIHwuaWYg RkZJCi0gICB8LnR5cGUgQ1RTVEFURSwgQ1RTdGF0ZSwgUEMKLSsgIHwgIC5pZiBPUEQKLSsgIHwg ICBybGRpY2wgcjEyLCByMTEsIDE3LCA0NwotKyAgfCAgIHJsZGljbCByMTEsIHIxMSwgMCwgMTcK LSsgIHwgIC5lbmRpZgotKyAgfCAgLmlmIEVMRlYyCi0rICB8ICAgcmx3aW5tIHIxMiwgcjEyLCAz MCwgMjIsIDMxCi0rICB8ICAgYWRkaXNsIFRPQ1JFRywgVE9DUkVHLCBleHRlcm4gLlRPQy4tbGpf dm1fZmZpX2NhbGxiYWNrQGhhCi0rICB8ICAgYWRkaWwgVE9DUkVHLCBUT0NSRUcsIGV4dGVybiAu VE9DLi1sal92bV9mZmlfY2FsbGJhY2tAbAotKyAgfCAgLmVuZGlmCi0gICB8ICBzYXZlcmVncwot LSAgfCAgbHd6IENUU1RBVEUsIEdMOnIxMi0+Y3R5cGVfc3RhdGUKLS0gIHwgICBhZGRpIERJU1BB VENILCByMTIsIEdHX0cyRElTUAotLSAgfCAgc3R3IHIxMSwgQ1RTVEFURS0+Y2Iuc2xvdAotLSAg fCAgc3R3IHIzLCBDVFNUQVRFLT5jYi5ncHJbMF0KLSsgIHwgIGx3eiBDVFNUQVRFLCBHTDpyMTEt PmN0eXBlX3N0YXRlCi0rICB8ICAgYWRkaSBESVNQQVRDSCwgcjExLCBHR19HMkRJU1AKLSsgIHwg IHN0dyByMTIsIENUU1RBVEUtPmNiLnNsb3QKLSsgIHwgIHN0cCByMywgQ1RTVEFURS0+Y2IuZ3By WzBdCi0gICB8ICAgc3RmZCBmMSwgQ1RTVEFURS0+Y2IuZnByWzBdCi0tICB8ICBzdHcgcjQsIENU U1RBVEUtPmNiLmdwclsxXQotKyAgfCAgc3RwIHI0LCBDVFNUQVRFLT5jYi5ncHJbMV0KLSAgIHwg ICBzdGZkIGYyLCBDVFNUQVRFLT5jYi5mcHJbMV0KLS0gIHwgIHN0dyByNSwgQ1RTVEFURS0+Y2Iu Z3ByWzJdCi0rICB8ICBzdHAgcjUsIENUU1RBVEUtPmNiLmdwclsyXQotICAgfCAgIHN0ZmQgZjMs IENUU1RBVEUtPmNiLmZwclsyXQotLSAgfCAgc3R3IHI2LCBDVFNUQVRFLT5jYi5ncHJbM10KLSsg IHwgIHN0cCByNiwgQ1RTVEFURS0+Y2IuZ3ByWzNdCi0gICB8ICAgc3RmZCBmNCwgQ1RTVEFURS0+ Y2IuZnByWzNdCi0tICB8ICBzdHcgcjcsIENUU1RBVEUtPmNiLmdwcls0XQotKyAgfCAgc3RwIHI3 LCBDVFNUQVRFLT5jYi5ncHJbNF0KLSAgIHwgICBzdGZkIGY1LCBDVFNUQVRFLT5jYi5mcHJbNF0K LS0gIHwgIHN0dyByOCwgQ1RTVEFURS0+Y2IuZ3ByWzVdCi0rICB8ICBzdHAgcjgsIENUU1RBVEUt PmNiLmdwcls1XQotICAgfCAgIHN0ZmQgZjYsIENUU1RBVEUtPmNiLmZwcls1XQotLSAgfCAgc3R3 IHI5LCBDVFNUQVRFLT5jYi5ncHJbNl0KLSsgIHwgIHN0cCByOSwgQ1RTVEFURS0+Y2IuZ3ByWzZd Ci0gICB8ICAgc3RmZCBmNywgQ1RTVEFURS0+Y2IuZnByWzZdCi0tICB8ICBzdHcgcjEwLCBDVFNU QVRFLT5jYi5ncHJbN10KLSsgIHwgIHN0cCByMTAsIENUU1RBVEUtPmNiLmdwcls3XQotICAgfCAg IHN0ZmQgZjgsIENUU1RBVEUtPmNiLmZwcls3XQotKyAgfCAgLmlmIEdQUjY0Ci0rICB8ICAgc3Rm ZCBmOSwgQ1RTVEFURS0+Y2IuZnByWzhdCi0rICB8ICAgc3RmZCBmMTAsIENUU1RBVEUtPmNiLmZw cls5XQotKyAgfCAgIHN0ZmQgZjExLCBDVFNUQVRFLT5jYi5mcHJbMTBdCi0rICB8ICAgc3RmZCBm MTIsIENUU1RBVEUtPmNiLmZwclsxMV0KLSsgIHwgICBzdGZkIGYxMywgQ1RTVEFURS0+Y2IuZnBy WzEyXQotKyAgfCAgLmVuZGlmCi0rICB8ICAuaWYgRUxGVjIKLSsgIHwgIGFkZGkgVE1QMCwgc3As IENGUkFNRV9TUEFDRSs5NgotKyAgfCAgLmVsaWYgR1BSNjQKLSsgIHwgIGFkZGkgVE1QMCwgc3As IENGUkFNRV9TUEFDRSsxMTIKLSsgIHwgIC5lbHNlCi0gICB8ICBhZGRpIFRNUDAsIHNwLCBDRlJB TUVfU1BBQ0UrOAotLSAgfCAgc3R3IFRNUDAsIENUU1RBVEUtPmNiLnN0YWNrCi0rICB8ICAuZW5k aWYKLSsgIHwgIHN0cCBUTVAwLCBDVFNUQVRFLT5jYi5zdGFjawotICAgfCAgIG1yIENBUkcxLCBD VFNUQVRFCi0gICB8ICBzdHcgQ1RTVEFURSwgU0FWRV9QQwkJLy8gQW55IHZhbHVlIG91dHNpZGUg b2YgYnl0ZWNvZGUgaXMgb2suCi0gICB8ICAgbXIgQ0FSRzIsIHNwCi0gICB8ICBibCBleHRlcm4g bGpfY2NhbGxiYWNrX2VudGVyCS8vIChDVFN0YXRlICpjdHMsIHZvaWQgKmNmKQotICAgfCAgLy8g UmV0dXJucyBsdWFfU3RhdGUgKi4KLSAgIHwgIGxwIEJBU0UsIEw6Q1JFVDEtPmJhc2UKLSsgIHwu aWYgUDY0Ci0rICB8ICAgICBsdXMgVElTTlVNLCBMSl9USVNOVU0gPj4gMTYJLy8gU2V0dXAgdHlw ZSBjb21wYXJpc29uIGNvbnN0YW50cy4KLSsgIHwgICAgIG9yaSBUSVNOVU0sIFRJU05VTSwgTEpf VElTTlVNICYgMHhmZmZmCi0rICB8LmVsc2UKLSAgIHwgICAgIGxpIFRJU05VTSwgTEpfVElTTlVN CQkvLyBTZXR1cCB0eXBlIGNvbXBhcmlzb24gY29uc3RhbnRzLgotKyAgfC5lbmRpZgotICAgfCAg bHAgUkMsIEw6Q1JFVDEtPnRvcAotICAgfCAgICAgbHVzIFRNUDMsIDB4NTljMAkJLy8gVE9CSVQg PSAyXjUyICsgMl41MSAoZmxvYXQpLgotICAgfCAgICAgbGkgWkVSTywgMAotQEAgLTI4MzUsOSAr MzA5MSwyMSBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWlsZEN0eCAqY3R4KQot ICAgfCAgbXIgQ0FSRzEsIENUU1RBVEUKLSAgIHwgIG1yIENBUkcyLCBSQQotICAgfCAgYmwgZXh0 ZXJuIGxqX2NjYWxsYmFja19sZWF2ZQkvLyAoQ1RTdGF0ZSAqY3RzLCBUVmFsdWUgKm8pCi0tICB8 ICBsd3ogQ1JFVDEsIENUU1RBVEUtPmNiLmdwclswXQotKyAgfCAgbHAgQ1JFVDEsIENUU1RBVEUt PmNiLmdwclswXQotICAgfCAgbGZkIEZBUkcxLCBDVFNUQVRFLT5jYi5mcHJbMF0KLS0gIHwgIGx3 eiBDUkVUMiwgQ1RTVEFURS0+Y2IuZ3ByWzFdCi0rICB8ICBscCBDUkVUMiwgQ1RTVEFURS0+Y2Iu Z3ByWzFdCi0rICB8ICAuaWYgR1BSNjQKLSsgIHwgICAgbGZkIEZBUkcyLCBDVFNUQVRFLT5jYi5m cHJbMV0KLSsgIHwgIC5lbHNlCi0rICB8ICAgIGxwIENBUkczLCBDVFNUQVRFLT5jYi5ncHJbMl0K LSsgIHwgICAgbHAgQ0FSRzQsIENUU1RBVEUtPmNiLmdwclszXQotKyAgfCAgLmVuZGlmCi0rICB8 ICAuZWxmdjIgbGZkIGYzLCBDVFNUQVRFLT5jYi5mcHJbMl0KLSsgIHwgIC5lbGZ2MiBsZmQgZjQs IENUU1RBVEUtPmNiLmZwclszXQotKyAgfCAgLmVsZnYyIGxmZCBmNSwgQ1RTVEFURS0+Y2IuZnBy WzRdCi0rICB8ICAuZWxmdjIgbGZkIGY2LCBDVFNUQVRFLT5jYi5mcHJbNV0KLSsgIHwgIC5lbGZ2 MiBsZmQgZjcsIENUU1RBVEUtPmNiLmZwcls2XQotKyAgfCAgLmVsZnYyIGxmZCBmOCwgQ1RTVEFU RS0+Y2IuZnByWzddCi0gICB8ICBiIC0+dm1fbGVhdmVfdW53Ci0gICB8LmVuZGlmCi0gICB8Ci1A QCAtMjg1MCwyMyArMzExOCw0NiBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0aW5lcyhCdWls ZEN0eCAqY3R4KQotICAgfCAgIGxieiBDQVJHMiwgQ0NTVEFURS0+bnNwCi0gICB8ICAgbGJ6IENB UkczLCBDQ1NUQVRFLT5uZnByCi0gICB8ICBuZWcgVE1QMSwgVE1QMQotKyAgfCAgLmlmIEdQUjY0 Ci0rICB8ICAgIHN0ZCBUTVAwLCAxNihzcCkKLSsgIHwgIC5lbHNlCi0gICB8ICAgIHN0dyBUTVAw LCA0KHNwKQotKyAgfCAgLmVuZGlmCi0gICB8ICAgY21wd2kgY3IxLCBDQVJHMywgMAotICAgfCAg bXIgVE1QMiwgc3AKLSAgIHwgICBhZGRpYy4gQ0FSRzIsIENBUkcyLCAtMQotKyAgfCAgLmlmIEdQ UjY0Ci0rICB8ICBzdGR1eCBzcCwgc3AsIFRNUDEKLSsgIHwgIC5lbHNlCi0gICB8ICBzdHd1eCBz cCwgc3AsIFRNUDEKLSsgIHwgIC5lbmRpZgotICAgfCAgIGNybm90IDQqY3IxK2VxLCA0KmNyMStl cQkJLy8gRm9yIHZhcmFyZyBjYWxscy4KLS0gIHwgIHN0dyByMTQsIC00KFRNUDIpCi0tICB8ICBz dHcgQ0NTVEFURSwgLTgoVE1QMikKLSsgIHwgIC5pZiBHUFI2NAotKyAgfCAgICBzdGQgcjE0LCAt OChUTVAyKQotKyAgfCAgICBzdGQgQ0NTVEFURSwgLTE2KFRNUDIpCi0rICB8ICAuZWxzZQotKyAg fCAgICBzdHcgcjE0LCAtNChUTVAyKQotKyAgfCAgICBzdHcgQ0NTVEFURSwgLTgoVE1QMikKLSsg IHwgIC5lbmRpZgotICAgfCAgbXIgcjE0LCBUTVAyCi0gICB8ICBsYSBUTVAxLCBDQ1NUQVRFLT5z dGFjawotKyAgfCAgLmlmIEdQUjY0Ci0rICB8ICAgc2xkaSBDQVJHMiwgQ0FSRzIsIDMKLSsgIHwg IC5lbHNlCi0gICB8ICAgc2x3aSBDQVJHMiwgQ0FSRzIsIDIKLSsgIHwgIC5lbmRpZgotICAgfCAg IGJsdHkgPjIKLS0gIHwgIGxhIFRNUDIsIDgoc3ApCi0rICB8ICAuaWYgRUxGVjIKLSsgIHwgICAg bGEgVE1QMiwgOTYoc3ApCi0rICB8ICAuZWxpZiBHUFI2NAotKyAgfCAgICBsYSBUTVAyLCAxMTIo c3ApCi0rICB8ICAuZWxzZQotKyAgfCAgICBsYSBUTVAyLCA4KHNwKQotKyAgfCAgLmVuZGlmCi0g ICB8MToKLS0gIHwgIGx3enggVE1QMCwgVE1QMSwgQ0FSRzIKLS0gIHwgIHN0d3ggVE1QMCwgVE1Q MiwgQ0FSRzIKLS0gIHwgICBhZGRpYy4gQ0FSRzIsIENBUkcyLCAtNAotKyAgfCAgbHB4IFRNUDAs IFRNUDEsIENBUkcyCi0rICB8ICBzdHB4IFRNUDAsIFRNUDIsIENBUkcyCi0rICB8ICAgYWRkaWMu IENBUkcyLCBDQVJHMiwgLVBTSVpFCi0gICB8ICBiZ2UgPDEKLSAgIHwyOgotICAgfCAgYm5leSBj cjEsID4zCi1AQCAtMjg3OCwyOCArMzE2OSw1NSBAQCBzdGF0aWMgdm9pZCBidWlsZF9zdWJyb3V0 aW5lcyhCdWlsZEN0eCAqY3R4KQotICAgfCAgbGZkIGY2LCBDQ1NUQVRFLT5mcHJbNV0KLSAgIHwg IGxmZCBmNywgQ0NTVEFURS0+ZnByWzZdCi0gICB8ICBsZmQgZjgsIENDU1RBVEUtPmZwcls3XQot KyAgfCAgLmlmIEdQUjY0Ci0rICB8ICBsZmQgZjksIENDU1RBVEUtPmZwcls4XQotKyAgfCAgbGZk IGYxMCwgQ0NTVEFURS0+ZnByWzldCi0rICB8ICBsZmQgZjExLCBDQ1NUQVRFLT5mcHJbMTBdCi0r ICB8ICBsZmQgZjEyLCBDQ1NUQVRFLT5mcHJbMTFdCi0rICB8ICBsZmQgZjEzLCBDQ1NUQVRFLT5m cHJbMTJdCi0rICB8ICAuZW5kaWYKLSAgIHwzOgotLSAgfCAgIGxwIFRNUDAsIENDU1RBVEUtPmZ1 bmMKLS0gIHwgIGx3eiBDQVJHMiwgQ0NTVEFURS0+Z3ByWzFdCi0tICB8ICBsd3ogQ0FSRzMsIEND U1RBVEUtPmdwclsyXQotLSAgfCAgbHd6IENBUkc0LCBDQ1NUQVRFLT5ncHJbM10KLS0gIHwgIGx3 eiBDQVJHNSwgQ0NTVEFURS0+Z3ByWzRdCi0tICB8ICAgbXRjdHIgVE1QMAotLSAgfCAgbHd6IHI4 LCBDQ1NUQVRFLT5ncHJbNV0KLS0gIHwgIGx3eiByOSwgQ0NTVEFURS0+Z3ByWzZdCi0tICB8ICBs d3ogcjEwLCBDQ1NUQVRFLT5ncHJbN10KLS0gIHwgIGx3eiBDQVJHMSwgQ0NTVEFURS0+Z3ByWzBd CQkvLyBEbyB0aGlzIGxhc3QsIHNpbmNlIENDU1RBVEUgaXMgQ0FSRzEuCi0rICB8ICAudG9jIHN0 ZCBUT0NSRUcsIFNBVkVfVE9DCi0rICB8ICAgbHAgRlVOQ1JFRywgQ0NTVEFURS0+ZnVuYwotKyAg fCAgbHAgQ0FSRzIsIENDU1RBVEUtPmdwclsxXQotKyAgfCAgbHAgQ0FSRzMsIENDU1RBVEUtPmdw clsyXQotKyAgfCAgLm9wZCBscCBUT0NSRUcsIFRPQ19PRlMoRlVOQ1JFRykKLSsgIHwgIC5vcGRl bnYgbHAgRU5WUkVHLCBFTlZfT0ZTKEZVTkNSRUcpCi0rICB8ICAub3BkIGxwIEZVTkNSRUcsIDAo RlVOQ1JFRykKLSsgIHwgIGxwIENBUkc0LCBDQ1NUQVRFLT5ncHJbM10KLSsgIHwgIGxwIENBUkc1 LCBDQ1NUQVRFLT5ncHJbNF0KLSsgIHwgICBtdGN0ciBGVU5DUkVHCi0rICB8ICBscCByOCwgQ0NT VEFURS0+Z3ByWzVdCi0rICB8ICBscCByOSwgQ0NTVEFURS0+Z3ByWzZdCi0rICB8ICBscCByMTAs IENDU1RBVEUtPmdwcls3XQotKyAgfCAgbHAgQ0FSRzEsIENDU1RBVEUtPmdwclswXQkJLy8gRG8g dGhpcyBsYXN0LCBzaW5jZSBDQ1NUQVRFIGlzIENBUkcxLgotICAgfCAgIGJjdHJsCi0tICB8ICBs d3ogQ0NTVEFURTpUTVAxLCAtOChyMTQpCi0tICB8ICBsd3ogVE1QMiwgLTQocjE0KQotKyAgfCAg IC50b2MgbHAgVE9DUkVHLCBTQVZFX1RPQwotKyAgfCAgLmlmIEdQUjY0Ci0rICB8ICAgbGQgQ0NT VEFURTpUTVAxLCAtMTYocjE0KQotKyAgfCAgIGxkIFRNUDIsIC04KHIxNCkKLSsgIHwgICBsZCBU TVAwLCAxNihyMTQpCi0rICB8ICAuZWxzZQotKyAgfCAgIGx3eiBDQ1NUQVRFOlRNUDEsIC04KHIx NCkKLSsgIHwgICBsd3ogVE1QMiwgLTQocjE0KQotICAgfCAgIGx3eiBUTVAwLCA0KHIxNCkKLS0g IHwgIHN0dyBDQVJHMSwgQ0NTVEFURTpUTVAxLT5ncHJbMF0KLSsgIHwgIC5lbmRpZgotKyAgfCAg c3RwIENBUkcxLCBDQ1NUQVRFOlRNUDEtPmdwclswXQotICAgfCAgc3RmZCBGQVJHMSwgQ0NTVEFU RTpUTVAxLT5mcHJbMF0KLS0gIHwgIHN0dyBDQVJHMiwgQ0NTVEFURTpUTVAxLT5ncHJbMV0KLSsg IHwgIHN0cCBDQVJHMiwgQ0NTVEFURTpUTVAxLT5ncHJbMV0KLSsgIHwgIC5pZiBHUFI2NAotKyAg fCAgIHN0ZmQgRkFSRzIsIENDU1RBVEU6VE1QMS0+ZnByWzFdCi0rICB8ICAuZW5kaWYKLSsgIHwg IC5lbGZ2MiBzdGZkIEZBUkczLCBDQ1NUQVRFOlRNUDEtPmZwclsyXQotKyAgfCAgLmVsZnYyIHN0 ZmQgRkFSRzQsIENDU1RBVEU6VE1QMS0+ZnByWzNdCi0rICB8ICAuZWxmdjIgc3RmZCBGQVJHNSwg Q0NTVEFURTpUTVAxLT5mcHJbNF0KLSsgIHwgIC5lbGZ2MiBzdGZkIEZBUkc2LCBDQ1NUQVRFOlRN UDEtPmZwcls1XQotKyAgfCAgLmVsZnYyIHN0ZmQgRkFSRzcsIENDU1RBVEU6VE1QMS0+ZnByWzZd Ci0rICB8ICAuZWxmdjIgc3RmZCBGQVJHOCwgQ0NTVEFURTpUTVAxLT5mcHJbN10KLSAgIHwgICBt dGxyIFRNUDAKLS0gIHwgIHN0dyBDQVJHMywgQ0NTVEFURTpUTVAxLT5ncHJbMl0KLSsgIHwgIHN0 cCBDQVJHMywgQ0NTVEFURTpUTVAxLT5ncHJbMl0KLSAgIHwgICBtciBzcCwgcjE0Ci0tICB8ICBz dHcgQ0FSRzQsIENDU1RBVEU6VE1QMS0+Z3ByWzNdCi0rICB8ICBzdHAgQ0FSRzQsIENDU1RBVEU6 VE1QMS0+Z3ByWzNdCi0gICB8ICAgbXIgcjE0LCBUTVAyCi0gICB8ICBibHIKLSAgIHwuZW5kaWYK LUBAIC0yOTIzLDEzICszMjQxLDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAq Y3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICBjYXNlIEJDX0lTTFQ6IGNhc2UgQkNfSVNHRTog Y2FzZSBCQ19JU0xFOiBjYXNlIEJDX0lTR1Q6Ci0gICAgIHwgIC8vIFJBID0gc3JjMSo4LCBSRCA9 IHNyYzIqOCwgSk1QIHdpdGggUkQgPSB0YXJnZXQKLSAgICAgfC5pZiBEVUFMTlVNCi0tICAgIHwg IGx3enV4IFRNUDAsIFJBLCBCQVNFCi0rICAgIHwgIGx3enggVE1QMCwgQkFTRV9ISSwgUkEKLSAg ICAgfCAgICBhZGRpIFBDLCBQQywgNAotLSAgICB8ICAgbHd6IENBUkcyLCA0KFJBKQotLSAgICB8 ICBsd3p1eCBUTVAxLCBSRCwgQkFTRQotKyAgICB8ICAgbHd6eCBDQVJHMiwgQkFTRV9MTywgUkEK LSsgICAgfCAgbHd6eCBUTVAxLCBCQVNFX0hJLCBSRAotICAgICB8ICAgIGx3eiBUTVAyLCAtNChQ QykKLSAgICAgfCAgY2hlY2tudW0gY3IwLCBUTVAwCi0tICAgIHwgICBsd3ogQ0FSRzMsIDQoUkQp Ci0rICAgIHwgICBsd3p4IENBUkczLCBCQVNFX0xPLCBSRAotICAgICB8ICAgIGRlY29kZV9SRDQg VE1QMiwgVE1QMgotICAgICB8ICBjaGVja251bSBjcjEsIFRNUDEKLSAgICAgfCAgICBhZGRpcyBU TVAyLCBUTVAyLCAtKEJDQklBU19KKjQgPj4gMTYpCi1AQCAtMjk1Myw3ICszMjcxLDcgQEAgc3Rh dGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAg ICAgfDc6ICAvLyBSQSBpcyBub3QgYW4gaW50ZWdlci4KLSAgICAgfCAgYmd0IGNyMCwgLT52bWV0 YV9jb21wCi0gICAgIHwgIC8vIFJBIGlzIGEgbnVtYmVyLgotLSAgICB8ICAgbGZkIGYwLCAwKFJB KQotKyAgICB8ICAgbGZkeCBmMCwgQkFTRSwgUkEKLSAgICAgfCAgYmd0IGNyMSwgLT52bWV0YV9j b21wCi0gICAgIHwgIGJsdCBjcjEsID40Ci0gICAgIHwgIC8vIFJBIGlzIGEgbnVtYmVyLCBSRCBp cyBhbiBpbnRlZ2VyLgotQEAgLTI5NjUsNyArMzI4Myw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lu cyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIC8vIFJBIGlzIGFu IGludGVnZXIsIFJEIGlzIGEgbnVtYmVyLgotICAgICB8ICB0b251bV9pIGYwLCBDQVJHMgotICAg ICB8NDoKLS0gICAgfCAgbGZkIGYxLCAwKFJEKQotKyAgICB8ICBsZmR4IGYxLCBCQVNFLCBSRAot ICAgICB8NToKLSAgICAgfCAgZmNtcHUgY3IwLCBmMCwgZjEKLSAgICAgaWYgKG9wID09IEJDX0lT TFQpIHsKLUBAIC0yOTgxLDEwICszMjk5LDEwIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWls ZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIH0KLSAgICAgfCAgYiA8MQotICAg ICB8LmVsc2UKLS0gICAgfCAgbHd6eCBUTVAwLCBCQVNFLCBSQQotKyAgICB8ICBsd3p4IFRNUDAs IEJBU0VfSEksIFJBCi0gICAgIHwgICAgYWRkaSBQQywgUEMsIDQKLSAgICAgfCAgIGxmZHggZjAs IEJBU0UsIFJBCi0tICAgIHwgIGx3enggVE1QMSwgQkFTRSwgUkQKLSsgICAgfCAgbHd6eCBUTVAx LCBCQVNFX0hJLCBSRAotICAgICB8ICBjaGVja251bSBjcjAsIFRNUDAKLSAgICAgfCAgICBsd3og VE1QMiwgLTQoUEMpCi0gICAgIHwgICBsZmR4IGYxLCBCQVNFLCBSRAotQEAgLTMwMTUsMTUgKzMz MzMsMjMgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGlu dCBkZWZvcCkKLSAgICAgdmsgPSBvcCA9PSBCQ19JU0VRVjsKLSAgICAgfCAgLy8gUkEgPSBzcmMx KjgsIFJEID0gc3JjMio4LCBKTVAgd2l0aCBSRCA9IHRhcmdldAotICAgICB8LmlmIERVQUxOVU0K LS0gICAgfCAgbHd6dXggVE1QMCwgUkEsIEJBU0UKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNFX0hJ LCBSQQotICAgICB8ICAgIGFkZGkgUEMsIFBDLCA0Ci0tICAgIHwgICBsd3ogQ0FSRzIsIDQoUkEp Ci0tICAgIHwgIGx3enV4IFRNUDEsIFJELCBCQVNFCi0rICAgIHwgICBsd3p4IENBUkcyLCBCQVNF X0xPLCBSQQotKyAgICB8ICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICAgbHd6eCBUTVAxLCBCQVNF X0hJLCBSRAotKyAgICB8ICAuZWxzZQotKyAgICB8ICAgIGx3enV4IFRNUDEsIFJELCBCQVNFX0hJ Ci0rICAgIHwgIC5lbmRpZgotICAgICB8ICBjaGVja251bSBjcjAsIFRNUDAKLSAgICAgfCAgICBs d3ogVE1QMiwgLTQoUEMpCi0gICAgIHwgIGNoZWNrbnVtIGNyMSwgVE1QMQotICAgICB8ICAgIGRl Y29kZV9SRDQgVE1QMiwgVE1QMgotLSAgICB8ICAgbHd6IENBUkczLCA0KFJEKQotKyAgICB8ICAu aWYgRU5ESUFOX0xFCi0rICAgIHwgICBsd3p1eCBDQVJHMywgUkQsIEJBU0VfTE8KLSsgICAgfCAg LmVsc2UKLSsgICAgfCAgIGx3eiBDQVJHMywgV09SRF9MTyhSRCkKLSsgICAgfCAgLmVuZGlmCi0g ICAgIHwgIGNyb3IgNCpjcjcrZ3QsIDQqY3IwK2d0LCA0KmNyMStndAotICAgICB8ICAgIGFkZGlz IFRNUDIsIFRNUDIsIC0oQkNCSUFTX0oqNCA+PiAxNikKLSAgICAgaWYgKHZrKSB7Ci1AQCAtMzAz MiwxNCArMzM1OCwxNCBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNP cCBvcCwgaW50IGRlZm9wKQotICAgICAgIHwgIGJsZSBjcjcsIC0+QkNfSVNORU5fWgotICAgICB9 Ci0gICAgIHwuZWxzZQotLSAgICB8ICBsd3p1eCBUTVAwLCBSQSwgQkFTRQotKyAgICB8ICBsd3p4 IFRNUDAsIEJBU0VfSEksIFJBCi0gICAgIHwgICBsd3ogVE1QMiwgMChQQykKLS0gICAgfCAgICBs ZmQgZjAsIDAoUkEpCi0rICAgIHwgICAgbGZkeCBmMCwgQkFTRSwgUkEKLSAgICAgfCAgIGFkZGkg UEMsIFBDLCA0Ci0tICAgIHwgIGx3enV4IFRNUDEsIFJELCBCQVNFCi0rICAgIHwgIGx3enggVE1Q MSwgQkFTRV9ISSwgUkQKLSAgICAgfCAgY2hlY2tudW0gY3IwLCBUTVAwCi0gICAgIHwgICBkZWNv ZGVfUkQ0IFRNUDIsIFRNUDIKLS0gICAgfCAgICBsZmQgZjEsIDAoUkQpCi0rICAgIHwgICAgbGZk eCBmMSwgQkFTRSwgUkQKLSAgICAgfCAgY2hlY2tudW0gY3IxLCBUTVAxCi0gICAgIHwgICBhZGRp cyBUTVAyLCBUTVAyLCAtKEJDQklBU19KKjQgPj4gMTYpCi0gICAgIHwgIGJnZSBjcjAsID41Ci1A QCAtMzA1Nyw4ICszMzgzLDggQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgs IEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfC5lbmRpZgotICAgICB8NTogIC8vIEVpdGhlciBv ciBib3RoIHR5cGVzIGFyZSBub3QgbnVtYmVycy4KLSAgICAgfC5pZiBub3QgRFVBTE5VTQotLSAg ICB8ICAgIGx3eiBDQVJHMiwgNChSQSkKLS0gICAgfCAgICBsd3ogQ0FSRzMsIDQoUkQpCi0rICAg IHwgICAgbHd6eCBDQVJHMiwgQkFTRV9MTywgUkEKLSsgICAgfCAgICBsd3p4IENBUkczLCBCQVNF X0xPLCBSRAotICAgICB8LmVuZGlmCi0gICAgIHwuaWYgRkZJCi0gICAgIHwgIGNtcHdpIGNyNywg VE1QMCwgTEpfVENEQVRBCi1AQCAtMzA3NCwxMCArMzQwMCwxNiBAQCBzdGF0aWMgdm9pZCBidWls ZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8LmlmIEZGSQot ICAgICB8ICBiZXEgY3I3LCAtPnZtZXRhX2VxdWFsX2NkCi0gICAgIHwuZW5kaWYKLSsgICAgfC5p ZiBQNjQKLSsgICAgfCAgIGNtcGx3aSBjcjcsIFRNUDMsIH5MSl9UVURBVEEJCS8vIEF2b2lkIDY0 IGJpdCBsaWdodHVzZXJkYXRhLgotKyAgICB8LmVuZGlmCi0gICAgIHwgICAgY21wbHcgY3I1LCBD QVJHMiwgQ0FSRzMKLSAgICAgfCAgY3JhbmRjIDQqY3IwK2d0LCA0KmNyMCtlcSwgNCpjcjErZ3QJ Ly8gMjogU2FtZSB0eXBlIGFuZCBwcmltaXRpdmUuCi0gICAgIHwgIGNyb3JjIDQqY3IwK2x0LCA0 KmNyNStlcSwgNCpjcjArZXEJLy8gMTogU2FtZSB0diBvciBkaWZmZXJlbnQgdHlwZS4KLSAgICAg fCAgY3JhbmQgNCpjcjArZXEsIDQqY3IwK2VxLCA0KmNyNStlcQkvLyAwOiBTYW1lIHR5cGUgYW5k IHNhbWUgdHYuCi0rICAgIHwuaWYgUDY0Ci0rICAgIHwgICBjcm9yIDQqY3I2K2x0LCA0KmNyNits dCwgNCpjcjcrZ3QKLSsgICAgfC5lbmRpZgotICAgICB8ICAgbXIgU0FWRTAsIFBDCi0gICAgIHwg IGNyb3IgNCpjcjArZXEsIDQqY3IwK2VxLCA0KmNyMCtndAkvLyAwIG9yIDIuCi0gICAgIHwgIGNy b3IgNCpjcjArbHQsIDQqY3IwK2x0LCA0KmNyMCtndAkvLyAxIG9yIDIuCi1AQCAtMzExNiw5ICsz NDQ4LDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGlu dCBkZWZvcCkKLSAgIGNhc2UgQkNfSVNFUVM6IGNhc2UgQkNfSVNORVM6Ci0gICAgIHZrID0gb3Ag PT0gQkNfSVNFUVM7Ci0gICAgIHwgIC8vIFJBID0gc3JjKjgsIFJEID0gc3RyX2NvbnN0KjggKH4p LCBKTVAgd2l0aCBSRCA9IHRhcmdldAotLSAgICB8ICBsd3p1eCBUTVAwLCBSQSwgQkFTRQotKyAg ICB8ICBsd3p4IFRNUDAsIEJBU0VfSEksIFJBCi0gICAgIHwgICBzcndpIFJELCBSRCwgMQotLSAg ICB8ICBsd3ogU1RSOlRNUDMsIDQoUkEpCi0rICAgIHwgIGx3enggU1RSOlRNUDMsIEJBU0VfTE8s IFJBCi0gICAgIHwgICAgbHd6IFRNUDIsIDAoUEMpCi0gICAgIHwgICBzdWJmaWMgUkQsIFJELCAt NAotICAgICB8ICAgIGFkZGkgUEMsIFBDLCA0Ci1AQCAtMzE1MCwxNSArMzQ4MiwxNCBAQCBzdGF0 aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAg ICB2ayA9IG9wID09IEJDX0lTRVFOOwotICAgICB8ICAvLyBSQSA9IHNyYyo4LCBSRCA9IG51bV9j b25zdCo4LCBKTVAgd2l0aCBSRCA9IHRhcmdldAotICAgICB8LmlmIERVQUxOVU0KLS0gICAgfCAg bHd6dXggVE1QMCwgUkEsIEJBU0UKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNFX0hJLCBSQQotICAg ICB8ICAgIGFkZGkgUEMsIFBDLCA0Ci0tICAgIHwgICBsd3ogQ0FSRzIsIDQoUkEpCi0tICAgIHwg IGx3enV4IFRNUDEsIFJELCBLQkFTRQotKyAgICB8ICAgbHd6eCBDQVJHMiwgQkFTRV9MTywgUkEK LSsgICAgfCAgbHd6dXgyIFRNUDEsIENBUkczLCBSRCwgS0JBU0UKLSAgICAgfCAgY2hlY2tudW0g Y3IwLCBUTVAwCi0gICAgIHwgICAgbHd6IFRNUDIsIC00KFBDKQotICAgICB8ICBjaGVja251bSBj cjEsIFRNUDEKLSAgICAgfCAgICBkZWNvZGVfUkQ0IFRNUDIsIFRNUDIKLS0gICAgfCAgIGx3eiBD QVJHMywgNChSRCkKLSAgICAgfCAgICBhZGRpcyBUTVAyLCBUTVAyLCAtKEJDQklBU19KKjQgPj4g MTYpCi0gICAgIGlmICh2aykgewotICAgICAgIHwtPkJDX0lTRVFOX1o6Ci1AQCAtMzE3NSw3ICsz NTA2LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGlu dCBkZWZvcCkKLSAgICAgfSBlbHNlIHsKLSAgICAgICB8LT5CQ19JU05FTl9aOiAgLy8gRHVtbXkg bGFiZWwuCi0gICAgIH0KLS0gICAgfCAgbHd6eCBUTVAwLCBCQVNFLCBSQQotKyAgICB8ICBsd3p4 IFRNUDAsIEJBU0VfSEksIFJBCi0gICAgIHwgICAgYWRkaSBQQywgUEMsIDQKLSAgICAgfCAgIGxm ZHggZjAsIEJBU0UsIFJBCi0gICAgIHwgICAgbHd6IFRNUDIsIC00KFBDKQotQEAgLTMyMTMsNyAr MzU0NCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBp bnQgZGVmb3ApCi0gICAgIHw3OiAgLy8gUkEgaXMgbm90IGFuIGludGVnZXIuCi0gICAgIHwgIGJn ZSBjcjAsIDwzCi0gICAgIHwgIC8vIFJBIGlzIGEgbnVtYmVyLgotLSAgICB8ICAgbGZkIGYwLCAw KFJBKQotKyAgICB8ICAgbGZkeCBmMCwgQkFTRSwgUkEKLSAgICAgfCAgYmx0IGNyMSwgPjEKLSAg ICAgfCAgLy8gUkEgaXMgYSBudW1iZXIsIFJEIGlzIGFuIGludGVnZXIuCi0gICAgIHwgIHRvbnVt X2kgZjEsIENBUkczCi1AQCAtMzIzMiw3ICszNTYzLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5z KEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgIGNhc2UgQkNfSVNFUVA6IGNh c2UgQkNfSVNORVA6Ci0gICAgIHZrID0gb3AgPT0gQkNfSVNFUVA7Ci0gICAgIHwgIC8vIFJBID0g c3JjKjgsIFJEID0gcHJpbWl0aXZlX3R5cGUqOCAofiksIEpNUCB3aXRoIFJEID0gdGFyZ2V0Ci0t ICAgIHwgIGx3enggVE1QMCwgQkFTRSwgUkEKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNFX0hJLCBS QQotICAgICB8ICAgc3J3aSBUTVAxLCBSRCwgMwotICAgICB8ICAgIGx3eiBUTVAyLCAwKFBDKQot ICAgICB8ICAgbm90IFRNUDEsIFRNUDEKLUBAIC0zMjYyLDcgKzM1OTMsNyBAQCBzdGF0aWMgdm9p ZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotIAotICAgY2Fz ZSBCQ19JU1RDOiBjYXNlIEJDX0lTRkM6IGNhc2UgQkNfSVNUOiBjYXNlIEJDX0lTRjoKLSAgICAg fCAgLy8gUkEgPSBkc3QqOCBvciB1bnVzZWQsIFJEID0gc3JjKjgsIEpNUCB3aXRoIFJEID0gdGFy Z2V0Ci0tICAgIHwgIGx3enggVE1QMCwgQkFTRSwgUkQKLSsgICAgfCAgbHd6eCBUTVAwLCBCQVNF X0hJLCBSRAotICAgICB8ICAgbHd6IElOUywgMChQQykKLSAgICAgfCAgIGFkZGkgUEMsIFBDLCA0 Ci0gICAgIGlmIChvcCA9PSBCQ19JU1QgfHwgb3AgPT0gQkNfSVNGKSB7Ci1AQCAtMzI5Nyw3ICsz NjI4LDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGlu dCBkZWZvcCkKLSAKLSAgIGNhc2UgQkNfSVNUWVBFOgotICAgICB8ICAvLyBSQSA9IHNyYyo4LCBS RCA9IC10eXBlKjgKLS0gICAgfCAgbHd6eCBUTVAwLCBCQVNFLCBSQQotKyAgICB8ICBsd3p4IFRN UDAsIEJBU0VfSEksIFJBCi0gICAgIHwgIHNyd2kgVE1QMSwgUkQsIDMKLSAgICAgfCAgaW5zX25l eHQxCi0gICAgIHwuaWYgbm90IFBQRSBhbmQgbm90IEdQUjY0Ci1AQCAtMzMxMSw3ICszNjQyLDcg QEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZv cCkKLSAgICAgYnJlYWs7Ci0gICBjYXNlIEJDX0lTTlVNOgotICAgICB8ICAvLyBSQSA9IHNyYyo4 LCBSRCA9IC0oVElTTlVNLTEpKjgKLS0gICAgfCAgbHd6eCBUTVAwLCBCQVNFLCBSQQotKyAgICB8 ICBsd3p4IFRNUDAsIEJBU0VfSEksIFJBCi0gICAgIHwgIGluc19uZXh0MQotICAgICB8ICBjaGVj a251bSBUTVAwCi0gICAgIHwgIGJnZSAtPnZtZXRhX2lzdHlwZQotQEAgLTMzMzAsMTcgKzM2NjEs MjAgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBk ZWZvcCkKLSAgIGNhc2UgQkNfTk9UOgotICAgICB8ICAvLyBSQSA9IGRzdCo4LCBSRCA9IHNyYyo4 Ci0gICAgIHwgIGluc19uZXh0MQotLSAgICB8ICBsd3p4IFRNUDAsIEJBU0UsIFJECi0rICAgIHwg IGx3enggVE1QMCwgQkFTRV9ISSwgUkQKLSAgICAgfCAgLmdwcjY0IGV4dHN3IFRNUDAsIFRNUDAK LSAgICAgfCAgc3ViZmljIFRNUDEsIFRNUDAsIExKX1RUUlVFCi0gICAgIHwgIGFkZGUgVE1QMCwg VE1QMCwgVE1QMQotLSAgICB8ICBzdHd4IFRNUDAsIEJBU0UsIFJBCi0rICAgIHwgIHN0d3ggVE1Q MCwgQkFTRV9ISSwgUkEKLSAgICAgfCAgaW5zX25leHQyCi0gICAgIGJyZWFrOwotICAgY2FzZSBC Q19VTk06Ci0gICAgIHwgIC8vIFJBID0gZHN0KjgsIFJEID0gc3JjKjgKLS0gICAgfCAgbHd6dXgg VE1QMSwgUkQsIEJBU0UKLS0gICAgfCAgIGx3eiBUTVAwLCA0KFJEKQotKyAgICB8ICBsd3p4IFRN UDEsIEJBU0VfSEksIFJECi0rICAgIHwgICBsd3p4IFRNUDAsIEJBU0VfTE8sIFJECi0rICAgIHwu aWYgRFVBTE5VTSBhbmQgbm90IEdQUjY0Ci0rICAgIHwgIG10eGVyIFpFUk8KLSsgICAgfC5lbmRp ZgotICAgICB8ICBjaGVja251bSBUTVAxCi0gICAgIHwuaWYgRFVBTE5VTQotICAgICB8ICBibmUg PjUKLUBAIC0zMzUyLDE4ICszNjg2LDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0 eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwuZWxzZQotICAgICB8ICBuZWdvLiBU TVAwLCBUTVAwCi0gICAgIHwgIGJzbyA+NAotLSAgICB8MToKLSAgICAgfC5lbmRpZgotICAgICB8 ICBpbnNfbmV4dDEKLS0gICAgfCAgc3R3dXggVElTTlVNLCBSQSwgQkFTRQotLSAgICB8ICAgc3R3 IFRNUDAsIDQoUkEpCi0rICAgIHwgIHN0d3ggVElTTlVNLCBCQVNFX0hJLCBSQQotKyAgICB8ICAg c3R3eCBUTVAwLCBCQVNFX0xPLCBSQQotICAgICB8MzoKLSAgICAgfCAgaW5zX25leHQyCi0gICAg IHw0OgotLSAgICB8LmlmIG5vdCBHUFI2NAotLSAgICB8ICAvLyBQb3RlbnRpYWwgb3ZlcmZsb3cu Ci0tICAgIHwgIGNoZWNrb3YgVE1QMSwgPDEJCQkvLyBJZ25vcmUgdW5yZWxhdGVkIG92ZXJmbG93 LgotLSAgICB8LmVuZGlmCi0gICAgIHwgIGx1cyBUTVAxLCAweDQxZTAJCQkvLyAyXjMxLgotICAg ICB8ICBsaSBUTVAwLCAwCi0gICAgIHwgIGIgPjcKLUBAIC0zMzczLDggKzM3MDIsOCBAQCBzdGF0 aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAg ICB8ICB4b3JpcyBUTVAxLCBUTVAxLCAweDgwMDAKLSAgICAgfDc6Ci0gICAgIHwgIGluc19uZXh0 MQotLSAgICB8ICBzdHd1eCBUTVAxLCBSQSwgQkFTRQotLSAgICB8ICAgc3R3IFRNUDAsIDQoUkEp Ci0rICAgIHwgIHN0d3ggVE1QMSwgQkFTRV9ISSwgUkEKLSsgICAgfCAgIHN0d3ggVE1QMCwgQkFT RV9MTywgUkEKLSAgICAgfC5pZiBEVUFMTlVNCi0gICAgIHwgIGIgPDMKLSAgICAgfC5lbHNlCi1A QCAtMzM4MywxNSArMzcxMiwxNSBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0 eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICBicmVhazsKLSAgIGNhc2UgQkNfTEVOOgotICAg ICB8ICAvLyBSQSA9IGRzdCo4LCBSRCA9IHNyYyo4Ci0tICAgIHwgIGx3enV4IFRNUDAsIFJELCBC QVNFCi0tICAgIHwgICBsd3ogQ0FSRzEsIDQoUkQpCi0rICAgIHwgIGx3enggVE1QMCwgQkFTRV9I SSwgUkQKLSsgICAgfCAgIGx3enggQ0FSRzEsIEJBU0VfTE8sIFJECi0gICAgIHwgIGNoZWNrc3Ry IFRNUDA7IGJuZSA+MgotICAgICB8ICBsd3ogQ1JFVDEsIFNUUjpDQVJHMS0+bGVuCi0gICAgIHwx OgotICAgICB8LmlmIERVQUxOVU0KLSAgICAgfCAgaW5zX25leHQxCi0tICAgIHwgIHN0d3V4IFRJ U05VTSwgUkEsIEJBU0UKLS0gICAgfCAgIHN0dyBDUkVUMSwgNChSQSkKLSsgICAgfCAgc3R3eCBU SVNOVU0sIEJBU0VfSEksIFJBCi0rICAgIHwgICBzdHd4IENSRVQxLCBCQVNFX0xPLCBSQQotICAg ICB8LmVsc2UKLSAgICAgfCAgdG9udW1fdSBmMCwgQ1JFVDEJCS8vIFJlc3VsdCBpcyBhIG5vbi1u ZWdhdGl2ZSBpbnRlZ2VyLgotICAgICB8ICBpbnNfbmV4dDEKLUBAIC0zNDI2LDkgKzM3NTUsMTYg QEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZv cCkKLSAgICAgfHx2ayA9ICgoaW50KW9wIC0gQkNfQUREVk4pIC8gKEJDX0FERE5WLUJDX0FERFZO KTsKLSAgICAgfHxzd2l0Y2ggKHZrKSB7Ci0gICAgIHx8Y2FzZSAwOgotLSAgICB8ICAgbHd6eCBU TVAxLCBCQVNFLCBSQgotKyAgICB8ICAgLmlmIEVORElBTl9MRSBhbmQgRFVBTE5VTQotKyAgICB8 ICAgICBhZGRpIFRNUDIsIFJDLCA0Ci0rICAgIHwgICAuZW5kaWYKLSsgICAgfCAgIGx3enggVE1Q MSwgQkFTRV9ISSwgUkIKLSAgICAgfCAgIC5pZiBEVUFMTlVNCi0tICAgIHwgICAgIGx3enggVE1Q MiwgS0JBU0UsIFJDCi0rICAgIHwgICAgIC5pZiBFTkRJQU5fTEUKLSsgICAgfCAgICAgICBsd3p4 IFRNUDIsIEtCQVNFLCBUTVAyCi0rICAgIHwgICAgIC5lbHNlCi0rICAgIHwgICAgICAgbHd6eCBU TVAyLCBLQkFTRSwgUkMKLSsgICAgfCAgICAgLmVuZGlmCi0gICAgIHwgICAuZW5kaWYKLSAgICAg fCAgICBsZmR4IGYxNCwgQkFTRSwgUkIKLSAgICAgfCAgICBsZmR4IGYxNSwgS0JBU0UsIFJDCi1A QCAtMzQ0Miw5ICszNzc4LDE2IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4 LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgICAuZW5kaWYKLSAgICAgfHwgIGJyZWFrOwot ICAgICB8fGNhc2UgMToKLS0gICAgfCAgIGx3enggVE1QMSwgQkFTRSwgUkIKLSsgICAgfCAgIC5p ZiBFTkRJQU5fTEUgYW5kIERVQUxOVU0KLSsgICAgfCAgICAgYWRkaSBUTVAyLCBSQywgNAotKyAg ICB8ICAgLmVuZGlmCi0rICAgIHwgICBsd3p4IFRNUDEsIEJBU0VfSEksIFJCCi0gICAgIHwgICAu aWYgRFVBTE5VTQotLSAgICB8ICAgICBsd3p4IFRNUDIsIEtCQVNFLCBSQwotKyAgICB8ICAgICAu aWYgRU5ESUFOX0xFCi0rICAgIHwgICAgICAgbHd6eCBUTVAyLCBLQkFTRSwgVE1QMgotKyAgICB8 ICAgICAuZWxzZQotKyAgICB8ICAgICAgIGx3enggVE1QMiwgS0JBU0UsIFJDCi0rICAgIHwgICAg IC5lbmRpZgotICAgICB8ICAgLmVuZGlmCi0gICAgIHwgICAgbGZkeCBmMTUsIEJBU0UsIFJCCi0g ICAgIHwgICAgbGZkeCBmMTQsIEtCQVNFLCBSQwotQEAgLTM0NTgsOCArMzgwMSw4IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAg IHwgICAuZW5kaWYKLSAgICAgfHwgIGJyZWFrOwotICAgICB8fGRlZmF1bHQ6Ci0tICAgIHwgICBs d3p4IFRNUDEsIEJBU0UsIFJCCi0tICAgIHwgICBsd3p4IFRNUDIsIEJBU0UsIFJDCi0rICAgIHwg ICBsd3p4IFRNUDEsIEJBU0VfSEksIFJCCi0rICAgIHwgICBsd3p4IFRNUDIsIEJBU0VfSEksIFJD Ci0gICAgIHwgICAgbGZkeCBmMTQsIEJBU0UsIFJCCi0gICAgIHwgICAgbGZkeCBmMTUsIEJBU0Us IFJDCi0gICAgIHwgICBjaGVja251bSBjcjAsIFRNUDEKLUBAIC0zNTE0LDQxICszODU3LDYyIEBA IHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3Ap Ci0gICAgIHx8dmsgPSAoKGludClvcCAtIEJDX0FERFZOKSAvIChCQ19BREROVi1CQ19BRERWTik7 Ci0gICAgIHx8c3dpdGNoICh2aykgewotICAgICB8fGNhc2UgMDoKLS0gICAgfCAgIGx3enV4IFRN UDEsIFJCLCBCQVNFCi0tICAgIHwgICBsd3p1eCBUTVAyLCBSQywgS0JBU0UKLS0gICAgfCAgICBs d3ogQ0FSRzEsIDQoUkIpCi0tICAgIHwgICBjaGVja251bSBjcjAsIFRNUDEKLS0gICAgfCAgICBs d3ogQ0FSRzIsIDQoUkMpCi0rICAgIHwgICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICAgIGx3enV4 IENBUkcyLCBSQywgS0JBU0UKLSsgICAgfCAgICAgbHd6eCBUTVAxLCBSQiwgQkFTRV9ISQotKyAg ICB8ICAgICAgbHd6IFRNUDIsIDQoUkMpCi0rICAgIHwgICAgIGNoZWNrbnVtIGNyMCwgVE1QMQot KyAgICB8ICAgICAgbHd6dXggQ0FSRzEsIFJCLCBCQVNFCi0rICAgIHwgICAuZWxzZQotKyAgICB8 ICAgICBsd3p1eCBUTVAxLCBSQiwgQkFTRQotKyAgICB8ICAgICBsd3p1eCBUTVAyLCBSQywgS0JB U0UKLSsgICAgfCAgICAgIGx3eiBDQVJHMSwgNChSQikKLSsgICAgfCAgICAgY2hlY2tudW0gY3Iw LCBUTVAxCi0rICAgIHwgICAgICBsd3ogQ0FSRzIsIDQoUkMpCi0rICAgIHwgICAuZW5kaWYKLSAg ICAgfHwgIGJyZWFrOwotICAgICB8fGNhc2UgMToKLS0gICAgfCAgIGx3enV4IFRNUDEsIFJCLCBC QVNFCi0tICAgIHwgICBsd3p1eCBUTVAyLCBSQywgS0JBU0UKLS0gICAgfCAgICBsd3ogQ0FSRzIs IDQoUkIpCi0tICAgIHwgICBjaGVja251bSBjcjAsIFRNUDEKLS0gICAgfCAgICBsd3ogQ0FSRzEs IDQoUkMpCi0rICAgIHwgICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICAgIGx3enV4IENBUkcxLCBS QywgS0JBU0UKLSsgICAgfCAgICAgbHd6eCBUTVAxLCBSQiwgQkFTRV9ISQotKyAgICB8ICAgICAg bHd6IFRNUDIsIDQoUkMpCi0rICAgIHwgICAgIGNoZWNrbnVtIGNyMCwgVE1QMQotKyAgICB8ICAg ICAgbHd6dXggQ0FSRzIsIFJCLCBCQVNFCi0rICAgIHwgICAuZWxzZQotKyAgICB8ICAgICBsd3p1 eCBUTVAxLCBSQiwgQkFTRQotKyAgICB8ICAgICBsd3p1eCBUTVAyLCBSQywgS0JBU0UKLSsgICAg fCAgICAgIGx3eiBDQVJHMiwgNChSQikKLSsgICAgfCAgICAgY2hlY2tudW0gY3IwLCBUTVAxCi0r ICAgIHwgICAgICBsd3ogQ0FSRzEsIDQoUkMpCi0rICAgIHwgICAuZW5kaWYKLSAgICAgfHwgIGJy ZWFrOwotICAgICB8fGRlZmF1bHQ6Ci0tICAgIHwgICBsd3p1eCBUTVAxLCBSQiwgQkFTRQotLSAg ICB8ICAgbHd6dXggVE1QMiwgUkMsIEJBU0UKLS0gICAgfCAgICBsd3ogQ0FSRzEsIDQoUkIpCi0t ICAgIHwgICBjaGVja251bSBjcjAsIFRNUDEKLS0gICAgfCAgICBsd3ogQ0FSRzIsIDQoUkMpCi0r ICAgIHwgICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICAgIGx3enggVE1QMSwgUkIsIEJBU0VfSEkK LSsgICAgfCAgICAgbHd6eCBUTVAyLCBSQywgQkFTRV9ISQotKyAgICB8ICAgICAgbHd6dXggQ0FS RzEsIFJCLCBCQVNFCi0rICAgIHwgICAgIGNoZWNrbnVtIGNyMCwgVE1QMQotKyAgICB8ICAgICAg bHd6dXggQ0FSRzIsIFJDLCBCQVNFCi0rICAgIHwgICAuZWxzZQotKyAgICB8ICAgICBsd3p1eCBU TVAxLCBSQiwgQkFTRQotKyAgICB8ICAgICBsd3p1eCBUTVAyLCBSQywgQkFTRQotKyAgICB8ICAg ICAgbHd6IENBUkcxLCA0KFJCKQotKyAgICB8ICAgICBjaGVja251bSBjcjAsIFRNUDEKLSsgICAg fCAgICAgIGx3eiBDQVJHMiwgNChSQykKLSsgICAgfCAgIC5lbmRpZgotICAgICB8fCAgYnJlYWs7 Ci0gICAgIHx8fQotKyAgICB8ICBtdHhlciBaRVJPCi0gICAgIHwgIGNoZWNrbnVtIGNyMSwgVE1Q MgotICAgICB8ICBibmUgPjUKLSAgICAgfCAgYm5lIGNyMSwgPjUKLSAgICAgfCAgaW50aW5zIENB UkcxLCBDQVJHMSwgQ0FSRzIKLS0gICAgfCAgYnNvID40Ci0tICAgIHwxOgotKyAgICB8ICBpbnNf YXJpdGhmYWxsYmFjayBic28KLSAgICAgfCAgaW5zX25leHQxCi0tICAgIHwgIHN0d3V4IFRJU05V TSwgUkEsIEJBU0UKLS0gICAgfCAgc3R3IENBUkcxLCA0KFJBKQotKyAgICB8ICBzdHd4IFRJU05V TSwgQkFTRV9ISSwgUkEKLSsgICAgfCAgc3R3eCBDQVJHMSwgQkFTRV9MTywgUkEKLSAgICAgfDI6 Ci0gICAgIHwgIGluc19uZXh0MgotLSAgICB8NDogIC8vIE92ZXJmbG93LgotLSAgICB8ICBjaGVj a292IFRNUDAsIDwxCQkJLy8gSWdub3JlIHVucmVsYXRlZCBvdmVyZmxvdy4KLS0gICAgfCAgaW5z X2FyaXRoZmFsbGJhY2sgYgotICAgICB8NTogIC8vIEZQIHZhcmlhbnQuCi0gICAgIHx8aWYgKHZr ID09IDEpIHsKLSAgICAgfCAgbGZkIGYxNSwgMChSQikKLUBAIC0zNjIwLDkgKzM5ODQsOSBAQCBz dGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQot ICAgICBicmVhazsKLSAgIGNhc2UgQkNfUE9XOgotICAgICB8ICAvLyBOWUk6IChwYXJ0aWFsKSBp bnRlZ2VyIGFyaXRobWV0aWMuCi0tICAgIHwgIGx3enggVE1QMSwgQkFTRSwgUkIKLSsgICAgfCAg bHd6eCBUTVAxLCBCQVNFX0hJLCBSQgotICAgICB8ICAgbGZkeCBGQVJHMSwgQkFTRSwgUkIKLS0g ICAgfCAgbHd6eCBUTVAyLCBCQVNFLCBSQwotKyAgICB8ICBsd3p4IFRNUDIsIEJBU0VfSEksIFJD Ci0gICAgIHwgICBsZmR4IEZBUkcyLCBCQVNFLCBSQwotICAgICB8ICBjaGVja251bSBjcjAsIFRN UDEKLSAgICAgfCAgY2hlY2tudW0gY3IxLCBUTVAyCi1AQCAtMzY0OCw2ICs0MDEyLDcgQEAgc3Rh dGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAg ICAgfCAgLy8gUmV0dXJucyBOVUxMIChmaW5pc2hlZCkgb3IgVFZhbHVlICogKG1ldGFtZXRob2Qp LgotICAgICB8ICBjbXBsd2kgQ1JFVDEsIDAKLSAgICAgfCAgIGxwIEJBU0UsIEwtPmJhc2UKLSsg ICAgfCAgIGFkZGkgQkFTRVA0LCBCQVNFLCA0Ci0gICAgIHwgIGJuZSAtPnZtZXRhX2Jpbm9wCi0g ICAgIHwgIGluc19uZXh0MQotICAgICB8ICBsZmR4IGYwLCBCQVNFLCBTQVZFMAkJLy8gQ29weSBy ZXN1bHQgZnJvbSBSQiB0byBSQS4KLUBAIC0zNjY0LDggKzQwMjksOCBAQCBzdGF0aWMgdm9pZCBi dWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICBpbnNf bmV4dDEKLSAgICAgfCAgbHd6eCBUTVAwLCBLQkFTRSwgVE1QMQkJLy8gS0JBU0UtNC1zdHJfY29u c3QqNAotICAgICB8ICBsaSBUTVAyLCBMSl9UU1RSCi0tICAgIHwgIHN0d3V4IFRNUDIsIFJBLCBC QVNFCi0tICAgIHwgIHN0dyBUTVAwLCA0KFJBKQotKyAgICB8ICBzdHd4IFRNUDIsIEJBU0VfSEks IFJBCi0rICAgIHwgIHN0d3ggVE1QMCwgQkFTRV9MTywgUkEKLSAgICAgfCAgaW5zX25leHQyCi0g ICAgIGJyZWFrOwotICAgY2FzZSBCQ19LQ0RBVEE6Ci1AQCAtMzY3Niw4ICs0MDQxLDggQEAgc3Rh dGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAg ICAgfCAgaW5zX25leHQxCi0gICAgIHwgIGx3enggVE1QMCwgS0JBU0UsIFRNUDEJCS8vIEtCQVNF LTQtY2RhdGFfY29uc3QqNAotICAgICB8ICBsaSBUTVAyLCBMSl9UQ0RBVEEKLS0gICAgfCAgc3R3 dXggVE1QMiwgUkEsIEJBU0UKLS0gICAgfCAgc3R3IFRNUDAsIDQoUkEpCi0rICAgIHwgIHN0d3gg VE1QMiwgQkFTRV9ISSwgUkEKLSsgICAgfCAgc3R3eCBUTVAwLCBCQVNFX0xPLCBSQQotICAgICB8 ICBpbnNfbmV4dDIKLSAgICAgfC5lbmRpZgotICAgICBicmVhazsKLUBAIC0zNjg3LDE0ICs0MDUy LDE1IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQg ZGVmb3ApCi0gICAgIHwgIHNsd2kgUkQsIFJELCAxMwotICAgICB8ICBzcmF3aSBSRCwgUkQsIDE2 Ci0gICAgIHwgIGluc19uZXh0MQotLSAgICB8ICAgc3R3dXggVElTTlVNLCBSQSwgQkFTRQotLSAg ICB8ICAgc3R3IFJELCA0KFJBKQotKyAgICB8ICAgc3R3eCBUSVNOVU0sIEJBU0VfSEksIFJBCi0r ICAgIHwgICBzdHd4IFJELCBCQVNFX0xPLCBSQQotICAgICB8ICBpbnNfbmV4dDIKLSAgICAgfC5l bHNlCi0gICAgIHwgIC8vIFRoZSBzb2Z0LWZsb2F0IGFwcHJvYWNoIGlzIGZhc3Rlci4KLSAgICAg fCAgc2x3aSBSRCwgUkQsIDEzCi0gICAgIHwgIHNyYXdpIFRNUDEsIFJELCAzMQotICAgICB8ICB4 b3IgVE1QMiwgVE1QMSwgUkQKLSsgICAgfCAgLmdwcjY0IGV4dHN3IFJELCBSRAotICAgICB8ICBz dWIgVE1QMiwgVE1QMiwgVE1QMQkJLy8gVE1QMiA9IGFicyh4KQotICAgICB8ICBjbnRsencgVE1Q MywgVE1QMgotICAgICB8ICBzdWJmaWMgVE1QMSwgVE1QMywgMHg0MGQJCS8vIFRNUDEgPSBleHBv bmVudC0xCi1AQCAtMzcwNiw4ICs0MDcyLDggQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxk Q3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgIGFkZCBSRCwgUkQsIFRNUDEJ CS8vIGhpID0gaGkgKyBleHBvbmVudC0xCi0gICAgIHwgICAgYW5kIFJELCBSRCwgVE1QMAkJLy8g aGkgPSB4ID09IDAgPyAwIDogaGkKLSAgICAgfCAgaW5zX25leHQxCi0tICAgIHwgICAgc3R3dXgg UkQsIFJBLCBCQVNFCi0tICAgIHwgICAgc3R3IFpFUk8sIDQoUkEpCi0rICAgIHwgICAgc3R3eCBS RCwgQkFTRV9ISSwgUkEKLSsgICAgfCAgICBzdHd4IFpFUk8sIEJBU0VfTE8sIFJBCi0gICAgIHwg IGluc19uZXh0MgotICAgICB8LmVuZGlmCi0gICAgIGJyZWFrOwotQEAgLTM3MjMsMTUgKzQwODks MTUgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBk ZWZvcCkKLSAgICAgfCAgc3J3aSBUTVAxLCBSRCwgMwotICAgICB8ICBub3QgVE1QMCwgVE1QMQot ICAgICB8ICBpbnNfbmV4dDEKLS0gICAgfCAgc3R3eCBUTVAwLCBCQVNFLCBSQQotKyAgICB8ICBz dHd4IFRNUDAsIEJBU0VfSEksIFJBCi0gICAgIHwgIGluc19uZXh0MgotICAgICBicmVhazsKLSAg IGNhc2UgQkNfS05JTDoKLSAgICAgfCAgLy8gUkEgPSBiYXNlKjgsIFJEID0gZW5kKjgKLS0gICAg fCAgc3R3eCBUSVNOSUwsIEJBU0UsIFJBCi0rICAgIHwgIHN0d3ggVElTTklMLCBCQVNFX0hJLCBS QQotICAgICB8ICAgYWRkaSBSQSwgUkEsIDgKLSAgICAgfDE6Ci0tICAgIHwgIHN0d3ggVElTTklM LCBCQVNFLCBSQQotKyAgICB8ICBzdHd4IFRJU05JTCwgQkFTRV9ISSwgUkEKLSAgICAgfCAgY21w dyBSQSwgUkQKLSAgICAgfCAgIGFkZGkgUkEsIFJBLCA4Ci0gICAgIHwgIGJsdCA8MQotQEAgLTM3 NjMsMTAgKzQxMjksMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJD T3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgIGx3eiBDQVJHMiwgVVBWQUw6UkItPnYKLSAgICAg fCAgYW5kaXguIFRNUDMsIFRNUDMsIExKX0dDX0JMQUNLCS8vIGlzYmxhY2sodXYpCi0gICAgIHwg ICAgbGJ6IFRNUDAsIFVQVkFMOlJCLT5jbG9zZWQKLS0gICAgfCAgIGx3eiBUTVAyLCAwKFJEKQot KyAgICB8ICAgbHd6IFRNUDIsIFdPUkRfSEkoUkQpCi0gICAgIHwgICBzdGZkIGYwLCAwKENBUkcy KQotICAgICB8ICAgIGNtcGx3aSBjcjEsIFRNUDAsIDAKLS0gICAgfCAgIGx3eiBUTVAxLCA0KFJE KQotKyAgICB8ICAgbHd6IFRNUDEsIFdPUkRfTE8oUkQpCi0gICAgIHwgIGNyb3IgNCpjcjArZXEs IDQqY3IwK2VxLCA0KmNyMStlcQotICAgICB8ICAgc3ViaSBUTVAyLCBUTVAyLCAoTEpfVE5VTVgr MSkKLSAgICAgfCAgYm5lID4yCQkJCS8vIFVwdmFsdWUgaXMgY2xvc2VkIGFuZCBibGFjaz8KLUBA IC0zNzk5LDggKzQxNjUsOCBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwg QkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAgbGJ6IFRNUDMsIFNUUjpUTVAxLT5tYXJrZWQK LSAgICAgfCAgIGxieiBUTVAyLCBVUFZBTDpSQi0+Y2xvc2VkCi0gICAgIHwgICBsaSBUTVAwLCBM Sl9UU1RSCi0tICAgIHwgICBzdHcgU1RSOlRNUDEsIDQoQ0FSRzIpCi0tICAgIHwgICBzdHcgVE1Q MCwgMChDQVJHMikKLSsgICAgfCAgIHN0dyBTVFI6VE1QMSwgV09SRF9MTyhDQVJHMikKLSsgICAg fCAgIHN0dyBUTVAwLCBXT1JEX0hJKENBUkcyKQotICAgICB8ICBibmUgPjIKLSAgICAgfDE6Ci0g ICAgIHwgIGluc19uZXh0Ci1AQCAtMzgzNyw3ICs0MjAzLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRf aW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgbHd6eCBVUFZB TDpSQiwgTEZVTkM6UkIsIFJBCi0gICAgIHwgIGluc19uZXh0MQotICAgICB8ICBsd3ogVE1QMSwg VVBWQUw6UkItPnYKLS0gICAgfCAgc3R3IFRNUDAsIDAoVE1QMSkKLSsgICAgfCAgc3R3IFRNUDAs IFdPUkRfSEkoVE1QMSkKLSAgICAgfCAgaW5zX25leHQyCi0gICAgIGJyZWFrOwotIAotQEAgLTM4 NTIsNiArNDIxOCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09w IG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgICBhZGQgQ0FSRzIsIEJBU0UsIFJBCi0gICAgIHwgIGJs IGV4dGVybiBsal9mdW5jX2Nsb3NldXYJLy8gKGx1YV9TdGF0ZSAqTCwgVFZhbHVlICpsZXZlbCkK LSAgICAgfCAgbHAgQkFTRSwgTC0+YmFzZQotKyAgICB8ICBhZGRpIEJBU0VQNCwgQkFTRSwgNAot ICAgICB8MToKLSAgICAgfCAgaW5zX25leHQKLSAgICAgYnJlYWs7Ci1AQCAtMzg3MCw4ICs0MjM3 LDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBk ZWZvcCkKLSAgICAgfCAgLy8gUmV0dXJucyBHQ2Z1bmNMICouCi0gICAgIHwgIGxwIEJBU0UsIEwt PmJhc2UKLSAgICAgfCAgIGxpIFRNUDAsIExKX1RGVU5DCi0tICAgIHwgIHN0d3V4IFRNUDAsIFJB LCBCQVNFCi0tICAgIHwgIHN0dyBMRlVOQzpDUkVUMSwgNChSQSkKLSsgICAgfCAgYWRkaSBCQVNF UDQsIEJBU0UsIDQKLSsgICAgfCAgc3R3eCBUTVAwLCBCQVNFX0hJLCBSQQotKyAgICB8ICBzdHd4 IExGVU5DOkNSRVQxLCBCQVNFX0xPLCBSQQotICAgICB8ICBpbnNfbmV4dAotICAgICBicmVhazsK LSAKLUBAIC0zOTA0LDggKzQyNzIsOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHgg KmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB9Ci0gICAgIHwgIGxwIEJBU0UsIEwtPmJh c2UKLSAgICAgfCAgIGxpIFRNUDAsIExKX1RUQUIKLS0gICAgfCAgc3R3dXggVE1QMCwgUkEsIEJB U0UKLS0gICAgfCAgc3R3IFRBQjpDUkVUMSwgNChSQSkKLSsgICAgfCAgYWRkaSBCQVNFUDQsIEJB U0UsIDQKLSsgICAgfCAgc3R3eCBUTVAwLCBCQVNFX0hJLCBSQQotKyAgICB8ICBzdHd4IFRBQjpD UkVUMSwgQkFTRV9MTywgUkEKLSAgICAgfCAgaW5zX25leHQKLSAgICAgaWYgKG9wID09IEJDX1RO RVcpIHsKLSAgICAgICB8MzoKLUBAIC0zOTM4LDEzICs0MzA3LDEzIEBAIHN0YXRpYyB2b2lkIGJ1 aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gCi0gICBjYXNlIEJD X1RHRVRWOgotICAgICB8ICAvLyBSQSA9IGRzdCo4LCBSQiA9IHRhYmxlKjgsIFJDID0ga2V5KjgK LS0gICAgfCAgbHd6dXggQ0FSRzEsIFJCLCBCQVNFCi0tICAgIHwgIGx3enV4IENBUkcyLCBSQywg QkFTRQotLSAgICB8ICAgbHd6IFRBQjpSQiwgNChSQikKLSsgICAgfCAgbHd6eCBDQVJHMSwgQkFT RV9ISSwgUkIKLSsgICAgfCAgbHd6eCBDQVJHMiwgQkFTRV9ISSwgUkMKLSsgICAgfCAgIGx3engg VEFCOlJCLCBCQVNFX0xPLCBSQgotICAgICB8LmlmIERVQUxOVU0KLS0gICAgfCAgIGx3eiBSQywg NChSQykKLSsgICAgfCAgIGx3enggUkMsIEJBU0VfTE8sIFJDCi0gICAgIHwuZWxzZQotLSAgICB8 ICAgbGZkIGYwLCAwKFJDKQotKyAgICB8ICAgbGZkeCBmMCwgQkFTRSwgUkMKLSAgICAgfC5lbmRp ZgotICAgICB8ICBjaGVja3RhYiBDQVJHMQotICAgICB8ICAgY2hlY2tudW0gY3IxLCBDQVJHMgot QEAgLTM5NzEsOCArNDM0MCwxMyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0 eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAgc2x3aSBUTVAyLCBUTVAyLCAzCi0gICAg IHwuZW5kaWYKLSAgICAgfCAgYmxlIC0+dm1ldGFfdGdldHYJCS8vIEludGVnZXIga2V5IGFuZCBp biBhcnJheSBwYXJ0PwotLSAgICB8ICBsd3p4IFRNUDAsIFRNUDEsIFRNUDIKLS0gICAgfCAgIGxm ZHggZjE0LCBUTVAxLCBUTVAyCi0rICAgIHwgIC5pZiBFTkRJQU5fTEUKLSsgICAgfCAgICBsZmR1 eCBmMTQsIFRNUDEsIFRNUDIKLSsgICAgfCAgICBsd3ogVE1QMCwgV09SRF9ISShUTVAxKQotKyAg ICB8ICAuZWxzZQotKyAgICB8ICAgIGx3enggVE1QMCwgVE1QMSwgVE1QMgotKyAgICB8ICAgIGxm ZHggZjE0LCBUTVAxLCBUTVAyCi0rICAgIHwgIC5lbmRpZgotICAgICB8ICBjaGVja25pbCBUTVAw OyBiZXEgPjIKLSAgICAgfDE6Ci0gICAgIHwgIGluc19uZXh0MQotQEAgLTM5OTEsMTUgKzQzNjUs MTUgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBk ZWZvcCkKLSAgICAgfDU6Ci0gICAgIHwgIGNoZWNrc3RyIENBUkcyOyBibmUgLT52bWV0YV90Z2V0 dgotICAgICB8LmlmIG5vdCBEVUFMTlVNCi0tICAgIHwgIGx3eiBTVFI6UkMsIDQoUkMpCi0rICAg IHwgIGx3enggU1RSOlJDLCBCQVNFX0xPLCBSQwotICAgICB8LmVuZGlmCi0gICAgIHwgIGIgLT5C Q19UR0VUU19aCQkJLy8gU3RyaW5nIGtleT8KLSAgICAgYnJlYWs7Ci0gICBjYXNlIEJDX1RHRVRT OgotICAgICB8ICAvLyBSQSA9IGRzdCo4LCBSQiA9IHRhYmxlKjgsIFJDID0gc3RyX2NvbnN0Kjgg KH4pCi0tICAgIHwgIGx3enV4IENBUkcxLCBSQiwgQkFTRQotKyAgICB8ICBsd3p4IENBUkcxLCBC QVNFX0hJLCBSQgotICAgICB8ICAgc3J3aSBUTVAxLCBSQywgMQotLSAgICB8ICAgIGx3eiBUQUI6 UkIsIDQoUkIpCi0rICAgIHwgICAgbHd6eCBUQUI6UkIsIEJBU0VfTE8sIFJCCi0gICAgIHwgICBz dWJmaWMgVE1QMSwgVE1QMSwgLTQKLSAgICAgfCAgY2hlY2t0YWIgQ0FSRzEKLSAgICAgfCAgIGx3 enggU1RSOlJDLCBLQkFTRSwgVE1QMQkvLyBLQkFTRS00LXN0cl9jb25zdCo0Ci1AQCAtNDAxNSwx NiArNDM4OSwxNiBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBv cCwgaW50IGRlZm9wKQotICAgICB8ICBzdWIgVE1QMSwgVE1QMCwgVE1QMQotICAgICB8ICBhZGQg Tk9ERTpUTVAyLCBOT0RFOlRNUDIsIFRNUDEJLy8gbm9kZSA9IHRhYi0+bm9kZSArIChpZHgqMzIt aWR4KjgpCi0gICAgIHwxOgotLSAgICB8ICBsd3ogQ0FSRzEsIE5PREU6VE1QMi0+a2V5Ci0tICAg IHwgICBsd3ogVE1QMCwgNCtvZmZzZXRvZihOb2RlLCBrZXkpKE5PREU6VE1QMikKLS0gICAgfCAg ICBsd3ogQ0FSRzIsIE5PREU6VE1QMi0+dmFsCi0tICAgIHwgICAgIGx3eiBUTVAxLCA0K29mZnNl dG9mKE5vZGUsIHZhbCkoTk9ERTpUTVAyKQotKyAgICB8ICBsd3ogQ0FSRzEsIFdPUkRfSEkrb2Zm c2V0b2YoTm9kZSwga2V5KShOT0RFOlRNUDIpCi0rICAgIHwgICBsd3ogVE1QMCwgV09SRF9MTytv ZmZzZXRvZihOb2RlLCBrZXkpKE5PREU6VE1QMikKLSsgICAgfCAgICBsd3ogQ0FSRzIsIFdPUkRf SEkrb2Zmc2V0b2YoTm9kZSwgdmFsKShOT0RFOlRNUDIpCi0rICAgIHwgICAgIGx3eiBUTVAxLCBX T1JEX0xPK29mZnNldG9mKE5vZGUsIHZhbCkoTk9ERTpUTVAyKQotICAgICB8ICBjaGVja3N0ciBD QVJHMTsgYm5lID40Ci0gICAgIHwgICBjbXB3IFRNUDAsIFNUUjpSQzsgYm5lID40Ci0gICAgIHwg ICAgY2hlY2tuaWwgQ0FSRzI7IGJlcSA+NQkJLy8gS2V5IGZvdW5kLCBidXQgbmlsIHZhbHVlPwot ICAgICB8MzoKLS0gICAgfCAgICBzdHd1eCBDQVJHMiwgUkEsIEJBU0UKLS0gICAgfCAgICAgc3R3 IFRNUDEsIDQoUkEpCi0rICAgIHwgICAgc3R3eCBDQVJHMiwgQkFTRV9ISSwgUkEKLSsgICAgfCAg ICAgc3R3eCBUTVAxLCBCQVNFX0xPLCBSQQotICAgICB8ICBpbnNfbmV4dAotICAgICB8Ci0gICAg IHw0OiAgLy8gRm9sbG93IGhhc2ggY2hhaW4uCi1AQCAtNDA0NSwxNSArNDQxOSwyMCBAQCBzdGF0 aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAg ICBicmVhazsKLSAgIGNhc2UgQkNfVEdFVEI6Ci0gICAgIHwgIC8vIFJBID0gZHN0KjgsIFJCID0g dGFibGUqOCwgUkMgPSBpbmRleCo4Ci0tICAgIHwgIGx3enV4IENBUkcxLCBSQiwgQkFTRQotKyAg ICB8ICBsd3p4IENBUkcxLCBCQVNFX0hJLCBSQgotICAgICB8ICAgc3J3aSBUTVAwLCBSQywgMwot LSAgICB8ICAgbHd6IFRBQjpSQiwgNChSQikKLSsgICAgfCAgIGx3enggVEFCOlJCLCBCQVNFX0xP LCBSQgotICAgICB8ICBjaGVja3RhYiBDQVJHMTsgYm5lIC0+dm1ldGFfdGdldGIKLSAgICAgfCAg bHd6IFRNUDEsIFRBQjpSQi0+YXNpemUKLSAgICAgfCAgIGx3eiBUTVAyLCBUQUI6UkItPmFycmF5 Ci0gICAgIHwgIGNtcGx3IFRNUDAsIFRNUDE7IGJnZSAtPnZtZXRhX3RnZXRiCi0tICAgIHwgIGx3 enggVE1QMSwgVE1QMiwgUkMKLS0gICAgfCAgIGxmZHggZjAsIFRNUDIsIFJDCi0rICAgIHwgIC5p ZiBFTkRJQU5fTEUKLSsgICAgfCAgICBsZmR1eCBmMCwgVE1QMiwgUkMKLSsgICAgfCAgICBsd3og VE1QMSwgV09SRF9ISShUTVAyKQotKyAgICB8ICAuZWxzZQotKyAgICB8ICAgIGx3enggVE1QMSwg VE1QMiwgUkMKLSsgICAgfCAgICBsZmR4IGYwLCBUTVAyLCBSQwotKyAgICB8ICAuZW5kaWYKLSAg ICAgfCAgY2hlY2tuaWwgVE1QMTsgYmVxID41Ci0gICAgIHwxOgotICAgICB8ICBpbnNfbmV4dDEK LUBAIC00MDcxLDEyICs0NDUwLDEwIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAq Y3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIGJyZWFrOwotICAgY2FzZSBCQ19UR0VUUjoK LSAgICAgfCAgLy8gUkEgPSBkc3QqOCwgUkIgPSB0YWJsZSo4LCBSQyA9IGtleSo4Ci0tICAgIHwg IGFkZCBSQiwgQkFTRSwgUkIKLS0gICAgfCAgbHd6IFRBQjpDQVJHMSwgNChSQikKLSsgICAgfCAg bHd6eCBUQUI6Q0FSRzEsIEJBU0VfTE8sIFJCCi0gICAgIHwuaWYgRFVBTE5VTQotLSAgICB8ICBh ZGQgUkMsIEJBU0UsIFJDCi0gICAgIHwgIGx3eiBUTVAwLCBUQUI6Q0FSRzEtPmFzaXplCi0tICAg IHwgIGx3eiBDQVJHMiwgNChSQykKLSsgICAgfCAgbHd6eCBDQVJHMiwgQkFTRV9MTywgUkMKLSAg ICAgfCAgIGx3eiBUTVAxLCBUQUI6Q0FSRzEtPmFycmF5Ci0gICAgIHwuZWxzZQotICAgICB8ICBs ZmR4IGYwLCBCQVNFLCBSQwotQEAgLTQwOTYsMTMgKzQ0NzMsMTMgQEAgc3RhdGljIHZvaWQgYnVp bGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAKLSAgIGNhc2UgQkNf VFNFVFY6Ci0gICAgIHwgIC8vIFJBID0gc3JjKjgsIFJCID0gdGFibGUqOCwgUkMgPSBrZXkqOAot LSAgICB8ICBsd3p1eCBDQVJHMSwgUkIsIEJBU0UKLS0gICAgfCAgbHd6dXggQ0FSRzIsIFJDLCBC QVNFCi0tICAgIHwgICBsd3ogVEFCOlJCLCA0KFJCKQotKyAgICB8ICBsd3p4IENBUkcxLCBCQVNF X0hJLCBSQgotKyAgICB8ICBsd3p4IENBUkcyLCBCQVNFX0hJLCBSQwotKyAgICB8ICAgbHd6eCBU QUI6UkIsIEJBU0VfTE8sIFJCCi0gICAgIHwuaWYgRFVBTE5VTQotLSAgICB8ICAgbHd6IFJDLCA0 KFJDKQotKyAgICB8ICAgbHd6eCBSQywgQkFTRV9MTywgUkMKLSAgICAgfC5lbHNlCi0tICAgIHwg ICBsZmQgZjAsIDAoUkMpCi0rICAgIHwgICBsZmR4IGYwLCBCQVNFLCBSQwotICAgICB8LmVuZGlm Ci0gICAgIHwgIGNoZWNrdGFiIENBUkcxCi0gICAgIHwgICBjaGVja251bSBjcjEsIENBUkcyCi1A QCAtNDEyOSw3ICs0NTA2LDEyIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4 LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgICBzbHdpIFRNUDAsIFRNUDIsIDMKLSAgICAg fC5lbmRpZgotICAgICB8ICBibGUgLT52bWV0YV90c2V0dgkJLy8gSW50ZWdlciBrZXkgYW5kIGlu IGFycmF5IHBhcnQ/Ci0rICAgIHwgIC5pZiBFTkRJQU5fTEUKLSsgICAgfCAgIGFkZGkgVE1QMiwg VE1QMSwgNAotKyAgICB8ICAgbHd6eCBUTVAyLCBUTVAyLCBUTVAwCi0rICAgIHwgIC5lbHNlCi0g ICAgIHwgICBsd3p4IFRNUDIsIFRNUDEsIFRNUDAKLSsgICAgfCAgLmVuZGlmCi0gICAgIHwgIGxi eiBUTVAzLCBUQUI6UkItPm1hcmtlZAotICAgICB8ICAgIGxmZHggZjE0LCBCQVNFLCBSQQotICAg ICB8ICAgY2hlY2tuaWwgVE1QMjsgYmVxID4zCi1AQCAtNDE1Miw3ICs0NTM0LDcgQEAgc3RhdGlj IHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAg fDU6Ci0gICAgIHwgIGNoZWNrc3RyIENBUkcyOyBibmUgLT52bWV0YV90c2V0dgotICAgICB8Lmlm IG5vdCBEVUFMTlVNCi0tICAgIHwgIGx3eiBTVFI6UkMsIDQoUkMpCi0rICAgIHwgIGx3enggU1RS OlJDLCBCQVNFX0xPLCBSQwotICAgICB8LmVuZGlmCi0gICAgIHwgIGIgLT5CQ19UU0VUU19aCQkJ Ly8gU3RyaW5nIGtleT8KLSAgICAgfAotQEAgLTQxNjIsOSArNDU0NCw5IEBAIHN0YXRpYyB2b2lk IGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIGJyZWFr OwotICAgY2FzZSBCQ19UU0VUUzoKLSAgICAgfCAgLy8gUkEgPSBzcmMqOCwgUkIgPSB0YWJsZSo4 LCBSQyA9IHN0cl9jb25zdCo4ICh+KQotLSAgICB8ICBsd3p1eCBDQVJHMSwgUkIsIEJBU0UKLSsg ICAgfCAgbHd6eCBDQVJHMSwgQkFTRV9ISSwgUkIKLSAgICAgfCAgIHNyd2kgVE1QMSwgUkMsIDEK LS0gICAgfCAgICBsd3ogVEFCOlJCLCA0KFJCKQotKyAgICB8ICAgIGx3enggVEFCOlJCLCBCQVNF X0xPLCBSQgotICAgICB8ICAgc3ViZmljIFRNUDEsIFRNUDEsIC00Ci0gICAgIHwgIGNoZWNrdGFi IENBUkcxCi0gICAgIHwgICBsd3p4IFNUUjpSQywgS0JBU0UsIFRNUDEJLy8gS0JBU0UtNC1zdHJf Y29uc3QqNAotQEAgLTQxODMsOSArNDU2NSw5IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWls ZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgICAgbGJ6IFRNUDMsIFRBQjpS Qi0+bWFya2VkCi0gICAgIHwgIGFkZCBOT0RFOlRNUDIsIE5PREU6VE1QMiwgVE1QMQkvLyBub2Rl ID0gdGFiLT5ub2RlICsgKGlkeCozMi1pZHgqOCkKLSAgICAgfDE6Ci0tICAgIHwgIGx3eiBDQVJH MSwgTk9ERTpUTVAyLT5rZXkKLS0gICAgfCAgIGx3eiBUTVAwLCA0K29mZnNldG9mKE5vZGUsIGtl eSkoTk9ERTpUTVAyKQotLSAgICB8ICAgIGx3eiBDQVJHMiwgTk9ERTpUTVAyLT52YWwKLSsgICAg fCAgbHd6IENBUkcxLCBXT1JEX0hJK29mZnNldG9mKE5vZGUsIGtleSkoTk9ERTpUTVAyKQotKyAg ICB8ICAgbHd6IFRNUDAsIFdPUkRfTE8rb2Zmc2V0b2YoTm9kZSwga2V5KShOT0RFOlRNUDIpCi0r ICAgIHwgICAgbHd6IENBUkcyLCBXT1JEX0hJK29mZnNldG9mKE5vZGUsIHZhbCkoTk9ERTpUTVAy KQotICAgICB8ICAgICBsd3ogTk9ERTpUTVAxLCBOT0RFOlRNUDItPm5leHQKLSAgICAgfCAgY2hl Y2tzdHIgQ0FSRzE7IGJuZSA+NQotICAgICB8ICAgY21wdyBUTVAwLCBTVFI6UkM7IGJuZSA+NQot QEAgLTQyMjUsMTMgKzQ2MDcsMTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpj dHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgYmVxIC0+dm1ldGFfdHNldHMJCS8vICdu byBfX25ld2luZGV4JyBmbGFnIE5PVCBzZXQ6IGNoZWNrLgotICAgICB8NjoKLSAgICAgfCAgbGkg VE1QMCwgTEpfVFNUUgotLSAgICB8ICAgc3R3IFNUUjpSQywgNChDQVJHMykKLSsgICAgfCAgIHN0 dyBTVFI6UkMsIFdPUkRfTE8oQ0FSRzMpCi0gICAgIHwgICBtciBDQVJHMiwgVEFCOlJCCi0tICAg IHwgIHN0dyBUTVAwLCAwKENBUkczKQotKyAgICB8ICBzdHcgVE1QMCwgV09SRF9ISShDQVJHMykK LSAgICAgfCAgYmwgZXh0ZXJuIGxqX3RhYl9uZXdrZXkJCS8vIChsdWFfU3RhdGUgKkwsIEdDdGFi ICp0LCBUVmFsdWUgKmspCi0gICAgIHwgIC8vIFJldHVybnMgVFZhbHVlICouCi0gICAgIHwgIGxw IEJBU0UsIEwtPmJhc2UKLSAgICAgfCAgc3RmZCBmMTQsIDAoQ1JFVDEpCi0rICAgIHwgICBhZGRp IEJBU0VQNCwgQkFTRSwgNAotICAgICB8ICBiIDwzCQkJCS8vIE5vIDJuZCB3cml0ZSBiYXJyaWVy IG5lZWRlZC4KLSAgICAgfAotICAgICB8NzogIC8vIFBvc3NpYmxlIHRhYmxlIHdyaXRlIGJhcnJp ZXIgZm9yIHRoZSB2YWx1ZS4gU2tpcCB2YWxpc3doaXRlIGNoZWNrLgotQEAgLTQyNDAsOSArNDYy Myw5IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQg ZGVmb3ApCi0gICAgIGJyZWFrOwotICAgY2FzZSBCQ19UU0VUQjoKLSAgICAgfCAgLy8gUkEgPSBz cmMqOCwgUkIgPSB0YWJsZSo4LCBSQyA9IGluZGV4KjgKLS0gICAgfCAgbHd6dXggQ0FSRzEsIFJC LCBCQVNFCi0rICAgIHwgIGx3enggQ0FSRzEsIEJBU0VfSEksIFJCCi0gICAgIHwgICBzcndpIFRN UDAsIFJDLCAzCi0tICAgIHwgICBsd3ogVEFCOlJCLCA0KFJCKQotKyAgICB8ICAgbHd6eCBUQUI6 UkIsIEJBU0VfTE8sIFJCCi0gICAgIHwgIGNoZWNrdGFiIENBUkcxOyBibmUgLT52bWV0YV90c2V0 YgotICAgICB8ICBsd3ogVE1QMSwgVEFCOlJCLT5hc2l6ZQotICAgICB8ICAgbHd6IFRNUDIsIFRB QjpSQi0+YXJyYXkKLUBAIC00MjUwLDcgKzQ2MzMsMTIgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5z KEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgY21wbHcgVE1QMCwg VE1QMQotICAgICB8ICAgbGZkeCBmMTQsIEJBU0UsIFJBCi0gICAgIHwgIGJnZSAtPnZtZXRhX3Rz ZXRiCi0tICAgIHwgIGx3enggVE1QMSwgVE1QMiwgUkMKLSsgICAgfCAgLmlmIEVORElBTl9MRQot KyAgICB8ICAgIGFkZGkgVE1QMSwgVE1QMiwgNAotKyAgICB8ICAgIGx3enggVE1QMSwgVE1QMSwg UkMKLSsgICAgfCAgLmVsc2UKLSsgICAgfCAgICBsd3p4IFRNUDEsIFRNUDIsIFJDCi0rICAgIHwg IC5lbmRpZgotICAgICB8ICBjaGVja25pbCBUTVAxOyBiZXEgPjUKLSAgICAgfDE6Ci0gICAgIHwg IGFuZGl4LiBUTVAwLCBUTVAzLCBMSl9HQ19CTEFDSwkvLyBpc2JsYWNrKHRhYmxlKQotQEAgLTQy NzQsMTMgKzQ2NjIsMTEgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJD T3Agb3AsIGludCBkZWZvcCkKLSAgICAgYnJlYWs7Ci0gICBjYXNlIEJDX1RTRVRSOgotICAgICB8 ICAvLyBSQSA9IGRzdCo4LCBSQiA9IHRhYmxlKjgsIFJDID0ga2V5KjgKLS0gICAgfCAgYWRkIFJC LCBCQVNFLCBSQgotLSAgICB8ICBsd3ogVEFCOkNBUkcyLCA0KFJCKQotKyAgICB8ICBsd3p4IFRB QjpDQVJHMiwgQkFTRV9MTywgUkIKLSAgICAgfC5pZiBEVUFMTlVNCi0tICAgIHwgIGFkZCBSQywg QkFTRSwgUkMKLSAgICAgfCAgICBsYnogVE1QMywgVEFCOkNBUkcyLT5tYXJrZWQKLSAgICAgfCAg bHd6IFRNUDAsIFRBQjpDQVJHMi0+YXNpemUKLS0gICAgfCAgbHd6IENBUkczLCA0KFJDKQotKyAg ICB8ICBsd3p4IENBUkczLCBCQVNFX0xPLCBSQwotICAgICB8ICAgbHd6IFRNUDEsIFRBQjpDQVJH Mi0+YXJyYXkKLSAgICAgfC5lbHNlCi0gICAgIHwgIGxmZHggZjAsIEJBU0UsIFJDCi1AQCAtNDMx MSw5ICs0Njk3LDkgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Ag b3AsIGludCBkZWZvcCkKLSAgICAgfCAgYWRkIFJBLCBCQVNFLCBSQQotICAgICB8MToKLSAgICAg fCAgIGFkZCBUTVAzLCBLQkFTRSwgUkQKLS0gICAgfCAgbHd6IFRBQjpDQVJHMiwgLTQoUkEpCQkv LyBHdWFyYW50ZWVkIHRvIGJlIGEgdGFibGUuCi0rICAgIHwgIGx3eiBUQUI6Q0FSRzIsIFdPUkRf TE8tOChSQSkJLy8gR3VhcmFudGVlZCB0byBiZSBhIHRhYmxlLgotICAgICB8ICAgIGFkZGljLiBU TVAwLCBNVUxUUkVTLCAtOAotLSAgICB8ICAgbHd6IFRNUDMsIDQoVE1QMykJCS8vIEludGVnZXIg Y29uc3RhbnQgaXMgaW4gbG8td29yZC4KLSsgICAgfCAgIGx3eiBUTVAzLCBXT1JEX0xPKFRNUDMp CQkvLyBJbnRlZ2VyIGNvbnN0YW50IGlzIGluIGxvLXdvcmQuCi0gICAgIHwgICAgc3J3aSBDQVJH MywgVE1QMCwgMwotICAgICB8ICAgIGJlcSA+NAkJCQkvLyBOb3RoaW5nIHRvIGNvcHk/Ci0gICAg IHwgIGFkZCBDQVJHMywgQ0FSRzMsIFRNUDMKLUBAIC00MzYyLDggKzQ3NDgsNyBAQCBzdGF0aWMg dm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgY2Fz ZSBCQ19DQUxMOgotICAgICB8ICAvLyBSQSA9IGJhc2UqOCwgKFJCID0gKG5yZXN1bHRzKzEpKjgs KSBSQyA9IChuYXJncysxKSo4Ci0gICAgIHwgIG1yIFRNUDIsIEJBU0UKLS0gICAgfCAgbHd6dXgg VE1QMCwgQkFTRSwgUkEKLS0gICAgfCAgIGx3eiBMRlVOQzpSQiwgNChCQVNFKQotKyAgICB8ICBs d3p1eDIgVE1QMCwgTEZVTkM6UkIsIEJBU0UsIFJBCi0gICAgIHwgICAgc3ViaSBOQVJHUzg6UkMs IE5BUkdTODpSQywgOAotICAgICB8ICAgYWRkaSBCQVNFLCBCQVNFLCA4Ci0gICAgIHwgIGNoZWNr ZnVuYyBUTVAwOyBibmUgLT52bWV0YV9jYWxsCi1AQCAtNDM3Nyw4ICs0NzYyLDcgQEAgc3RhdGlj IHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAg YnJlYWs7Ci0gICBjYXNlIEJDX0NBTExUOgotICAgICB8ICAvLyBSQSA9IGJhc2UqOCwgKFJCID0g MCwpIFJDID0gKG5hcmdzKzEpKjgKLS0gICAgfCAgbHd6dXggVE1QMCwgUkEsIEJBU0UKLS0gICAg fCAgIGx3eiBMRlVOQzpSQiwgNChSQSkKLSsgICAgfCAgbHd6dXgyIFRNUDAsIExGVU5DOlJCLCBS QSwgQkFTRQotICAgICB8ICAgIHN1YmkgTkFSR1M4OlJDLCBOQVJHUzg6UkMsIDgKLSAgICAgfCAg ICBsd3ogVE1QMSwgRlJBTUVfUEMoQkFTRSkKLSAgICAgfCAgY2hlY2tmdW5jIFRNUDAKLUBAIC00 NDMwLDEyICs0ODE0LDEyIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBC Q09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIC8vIFJBID0gYmFzZSo4LCAoUkIgPSAobnJlc3Vs dHMrMSkqOCwgUkMgPSAobmFyZ3MrMSkqOCAoKDIrMSkqOCkpCi0gICAgIHwgIG1yIFRNUDIsIEJB U0UKLSAgICAgfCAgYWRkIEJBU0UsIEJBU0UsIFJBCi0tICAgIHwgIGx3eiBUTVAxLCAtMjQoQkFT RSkKLS0gICAgfCAgIGx3eiBMRlVOQzpSQiwgLTIwKEJBU0UpCi0rICAgIHwgIGx3eiBUTVAxLCBX T1JEX0hJLTI0KEJBU0UpCi0rICAgIHwgICBsd3ogTEZVTkM6UkIsIFdPUkRfTE8tMjQoQkFTRSkK LSAgICAgfCAgICBsZmQgZjEsIC04KEJBU0UpCi0gICAgIHwgICAgbGZkIGYwLCAtMTYoQkFTRSkK LS0gICAgfCAgc3R3IFRNUDEsIDAoQkFTRSkJCS8vIENvcHkgY2FsbGFibGUuCi0tICAgIHwgICBz dHcgTEZVTkM6UkIsIDQoQkFTRSkKLSsgICAgfCAgc3R3IFRNUDEsIFdPUkRfSEkoQkFTRSkJCS8v IENvcHkgY2FsbGFibGUuCi0rICAgIHwgICBzdHcgTEZVTkM6UkIsIFdPUkRfTE8oQkFTRSkKLSAg ICAgfCAgY2hlY2tmdW5jIFRNUDEKLSAgICAgfCAgICBzdGZkIGYxLCAxNihCQVNFKQkJLy8gQ29w eSBjb250cm9sIHZhci4KLSAgICAgfCAgICAgbGkgTkFSR1M4OlJDLCAxNgkJLy8gSXRlcmF0b3Jz IGdldCAyIGFyZ3VtZW50cy4KLUBAIC00NDUwLDggKzQ4MzQsOCBAQCBzdGF0aWMgdm9pZCBidWls ZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAvLyBOWUk6 IGFkZCBob3Rsb29wLCByZWNvcmQgQkNfSVRFUk4uCi0gICAgIHwuZW5kaWYKLSAgICAgfCAgYWRk IFJBLCBCQVNFLCBSQQotLSAgICB8ICBsd3ogVEFCOlJCLCAtMTIoUkEpCi0tICAgIHwgIGx3eiBS QywgLTQoUkEpCQkJLy8gR2V0IGluZGV4IGZyb20gY29udHJvbCB2YXIuCi0rICAgIHwgIGx3eiBU QUI6UkIsIFdPUkRfTE8tMTYoUkEpCi0rICAgIHwgIGx3eiBSQywgV09SRF9MTy04KFJBKQkJLy8g R2V0IGluZGV4IGZyb20gY29udHJvbCB2YXIuCi0gICAgIHwgIGx3eiBUTVAwLCBUQUI6UkItPmFz aXplCi0gICAgIHwgIGx3eiBUTVAxLCBUQUI6UkItPmFycmF5Ci0gICAgIHwgICBhZGRpIFBDLCBQ QywgNAotQEAgLTQ0NTksMTQgKzQ4NDMsMTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxk Q3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgY21wbHcgUkMsIFRNUDAKLSAg ICAgfCAgIHNsd2kgVE1QMywgUkMsIDMKLSAgICAgfCAgYmdlID41CQkJCS8vIEluZGV4IHBvaW50 cyBhZnRlciBhcnJheSBwYXJ0PwotLSAgICB8ICBsd3p4IFRNUDIsIFRNUDEsIFRNUDMKLS0gICAg fCAgIGxmZHggZjAsIFRNUDEsIFRNUDMKLSsgICAgfCAgbGZkdXggZjAsIFRNUDMsIFRNUDEKLSsg ICAgfCAgIGx3eiBUTVAyLCBXT1JEX0hJKFRNUDMpCi0gICAgIHwgIGNoZWNrbmlsIFRNUDIKLSAg ICAgfCAgICAgbHd6IElOUywgLTQoUEMpCi0gICAgIHwgIGJlcSA+NAotICAgICB8LmlmIERVQUxO VU0KLS0gICAgfCAgIHN0dyBSQywgNChSQSkKLS0gICAgfCAgIHN0dyBUSVNOVU0sIDAoUkEpCi0r ICAgIHwgICBzdHcgUkMsIFdPUkRfTE8oUkEpCi0rICAgIHwgICBzdHcgVElTTlVNLCBXT1JEX0hJ KFJBKQotICAgICB8LmVsc2UKLSAgICAgfCAgIHRvbnVtX3UgZjEsIFJDCi0gICAgIHwuZW5kaWYK LUBAIC00NDc0LDcgKzQ4NTgsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0 eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAgICBhZGRpcyBUTVAzLCBQQywgLShCQ0JJ QVNfSio0ID4+IDE2KQotICAgICB8ICBzdGZkIGYwLCA4KFJBKQotICAgICB8ICAgICBkZWNvZGVf UkQ0IFRNUDEsIElOUwotLSAgICB8ICAgIHN0dyBSQywgLTQoUkEpCQkJLy8gVXBkYXRlIGNvbnRy b2wgdmFyLgotKyAgICB8ICAgIHN0dyBSQywgV09SRF9MTy04KFJBKQkJLy8gVXBkYXRlIGNvbnRy b2wgdmFyLgotICAgICB8ICAgICBhZGQgUEMsIFRNUDEsIFRNUDMKLSAgICAgfC5pZiBub3QgRFVB TE5VTQotICAgICB8ICAgc3RmZCBmMSwgMChSQSkKLUBAIC00NDk2LDkgKzQ4ODAsOCBAQCBzdGF0 aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAg ICB8ICBiZ3R5IDwzCi0gICAgIHwgICBzbHdpIFJCLCBSQywgMwotICAgICB8ICAgc3ViIFRNUDMs IFRNUDMsIFJCCi0tICAgIHwgIGx3enggUkIsIFRNUDIsIFRNUDMKLS0gICAgfCAgbGZkeCBmMCwg VE1QMiwgVE1QMwotLSAgICB8ICAgYWRkIE5PREU6VE1QMywgVE1QMiwgVE1QMwotKyAgICB8ICBs ZmR1eCBmMCwgVE1QMywgVE1QMgotKyAgICB8ICBsd3ogUkIsIFdPUkRfSEkoVE1QMykKLSAgICAg fCAgY2hlY2tuaWwgUkIKLSAgICAgfCAgICAgbHd6IElOUywgLTQoUEMpCi0gICAgIHwgIGJlcSA+ NwotQEAgLTQ1MTAsNyArNDg5Myw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAq Y3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgICBzdGZkIGYxLCAwKFJBKQotICAgICB8 ICAgIGFkZGkgUkMsIFJDLCAxCi0gICAgIHwgICAgIGFkZCBQQywgVE1QMSwgVE1QMgotLSAgICB8 ICAgIHN0dyBSQywgLTQoUkEpCQkJLy8gVXBkYXRlIGNvbnRyb2wgdmFyLgotKyAgICB8ICAgIHN0 dyBSQywgV09SRF9MTy04KFJBKQkJLy8gVXBkYXRlIGNvbnRyb2wgdmFyLgotICAgICB8ICBiIDwz Ci0gICAgIHwKLSAgICAgfDc6ICAvLyBTa2lwIGhvbGVzIGluIGhhc2ggcGFydC4KLUBAIC00NTIx LDEwICs0OTA0LDEwIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09w IG9wLCBpbnQgZGVmb3ApCi0gICBjYXNlIEJDX0lTTkVYVDoKLSAgICAgfCAgLy8gUkEgPSBiYXNl KjgsIFJEID0gdGFyZ2V0IChwb2ludHMgdG8gSVRFUk4pCi0gICAgIHwgIGFkZCBSQSwgQkFTRSwg UkEKLS0gICAgfCAgbHd6IFRNUDAsIC0yNChSQSkKLS0gICAgfCAgbHd6IENGVU5DOlRNUDEsIC0y MChSQSkKLS0gICAgfCAgIGx3eiBUTVAyLCAtMTYoUkEpCi0tICAgIHwgICAgbHd6IFRNUDMsIC04 KFJBKQotKyAgICB8ICBsd3ogVE1QMCwgV09SRF9ISS0yNChSQSkKLSsgICAgfCAgbHd6IENGVU5D OlRNUDEsIFdPUkRfTE8tMjQoUkEpCi0rICAgIHwgICBsd3ogVE1QMiwgV09SRF9ISS0xNihSQSkK LSsgICAgfCAgICBsd3ogVE1QMywgV09SRF9ISS04KFJBKQotICAgICB8ICAgY21wd2kgY3IwLCBU TVAyLCBMSl9UVEFCCi0gICAgIHwgIGNtcHdpIGNyMSwgVE1QMCwgTEpfVEZVTkMKLSAgICAgfCAg ICBjbXB3aSBjcjYsIFRNUDMsIExKX1ROSUwKLUBAIC00NTM4LDE3ICs0OTIxLDI1IEBAIHN0YXRp YyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAg IHwgIGJuZSBjcjAsID41Ci0gICAgIHwgIGx1cyBUTVAxLCAweGZmZmUKLSAgICAgfCAgb3JpIFRN UDEsIFRNUDEsIDB4N2ZmZgotLSAgICB8ICBzdHcgWkVSTywgLTQoUkEpCQkJLy8gSW5pdGlhbGl6 ZSBjb250cm9sIHZhci4KLS0gICAgfCAgc3R3IFRNUDEsIC04KFJBKQotKyAgICB8ICBzdHcgWkVS TywgV09SRF9MTy04KFJBKQkJLy8gSW5pdGlhbGl6ZSBjb250cm9sIHZhci4KLSsgICAgfCAgc3R3 IFRNUDEsIFdPUkRfSEktOChSQSkKLSAgICAgfCAgICBhZGRpcyBQQywgVE1QMywgLShCQ0JJQVNf Sio0ID4+IDE2KQotICAgICB8MToKLSAgICAgfCAgaW5zX25leHQKLSAgICAgfDU6ICAvLyBEZXNw ZWNpYWxpemUgYnl0ZWNvZGUgaWYgYW55IG9mIHRoZSBjaGVja3MgZmFpbC4KLSAgICAgfCAgbGkg VE1QMCwgQkNfSk1QCi0gICAgIHwgICBsaSBUTVAxLCBCQ19JVEVSQwotKyAgICB8ICAuaWYgRU5E SUFOX0xFCi0rICAgIHwgIHN0YiBUTVAwLCAtNChQQykKLSsgICAgfCAgLmVsc2UKLSAgICAgfCAg c3RiIFRNUDAsIC0xKFBDKQotKyAgICB8ICAuZW5kaWYKLSAgICAgfCAgICBhZGRpcyBQQywgVE1Q MywgLShCQ0JJQVNfSio0ID4+IDE2KQotKyAgICB8ICAuaWYgRU5ESUFOX0xFCi0rICAgIHwgICBz dGIgVE1QMSwgMChQQykKLSsgICAgfCAgLmVsc2UKLSAgICAgfCAgIHN0YiBUTVAxLCAzKFBDKQot KyAgICB8ICAuZW5kaWYKLSAgICAgfCAgYiA8MQotICAgICBicmVhazsKLSAKLUBAIC00NTgyLDcg KzQ5NzMsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwg aW50IGRlZm9wKQotICAgICB8ICAgIGFkZGkgUkEsIFJBLCA4Ci0gICAgIHwgICBibHQgY3IxLCA8 MQkJCS8vIE1vcmUgdmFyYXJnIHNsb3RzPwotICAgICB8MjogIC8vIEZpbGwgdXAgcmVtYWluZGVy IHdpdGggbmlsLgotLSAgICB8ICBzdHcgVElTTklMLCAwKFJBKQotKyAgICB8ICBzdHcgVElTTklM LCBXT1JEX0hJKFJBKQotICAgICB8ICBjbXBsdyBSQSwgVE1QMgotICAgICB8ICAgYWRkaSBSQSwg UkEsIDgKLSAgICAgfCAgYmx0IDwyCi1AQCAtNDYxOSw2ICs1MDEwLDcgQEAgc3RhdGljIHZvaWQg YnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgYWRk IFJBLCBCQVNFLCBSQQotICAgICB8ICBhZGQgUkMsIEJBU0UsIFNBVkUwCi0gICAgIHwgIHN1Ymkg VE1QMywgQkFTRSwgOAotKyAgICB8ICBhZGRpIEJBU0VQNCwgQkFTRSwgNAotICAgICB8ICBiIDw2 Ci0gICAgIGJyZWFrOwotIAotQEAgLTQ2NjcsMTMgKzUwNTksMTQgQEAgc3RhdGljIHZvaWQgYnVp bGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgYmd0ID42 Ci0gICAgIHwgICBzdWIgQkFTRSwgVE1QMiwgUkEKLSAgICAgfCAgbHd6IExGVU5DOlRNUDEsIEZS QU1FX0ZVTkMoQkFTRSkKLSsgICAgfCAgYWRkaSBCQVNFUDQsIEJBU0UsIDQKLSAgICAgfCAgaW5z X25leHQxCi0gICAgIHwgIGx3eiBUTVAxLCBMRlVOQzpUTVAxLT5wYwotICAgICB8ICBsd3ogS0JB U0UsIFBDMlBST1RPKGspKFRNUDEpCi0gICAgIHwgIGluc19uZXh0MgotICAgICB8Ci0gICAgIHw2 OiAgLy8gRmlsbCB1cCByZXN1bHRzIHdpdGggbmlsLgotLSAgICB8ICBzdWJpIFRNUDEsIFJELCA4 Ci0rICAgIHwgIGFkZGkgVE1QMSwgUkQsIFdPUkRfSEktOAotICAgICB8ICAgYWRkaSBSRCwgUkQs IDgKLSAgICAgfCAgc3R3eCBUSVNOSUwsIFRNUDIsIFRNUDEKLSAgICAgfCAgYiA8NQotQEAgLTQ3 MDksMTMgKzUxMDIsMTQgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJD T3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgYmd0ID42Ci0gICAgIHwgICBzdWIgQkFTRSwgVE1Q MiwgUkEKLSAgICAgfCAgbHd6IExGVU5DOlRNUDEsIEZSQU1FX0ZVTkMoQkFTRSkKLSsgICAgfCAg YWRkaSBCQVNFUDQsIEJBU0UsIDQKLSAgICAgfCAgaW5zX25leHQxCi0gICAgIHwgIGx3eiBUTVAx LCBMRlVOQzpUTVAxLT5wYwotICAgICB8ICBsd3ogS0JBU0UsIFBDMlBST1RPKGspKFRNUDEpCi0g ICAgIHwgIGluc19uZXh0MgotICAgICB8Ci0gICAgIHw2OiAgLy8gRmlsbCB1cCByZXN1bHRzIHdp dGggbmlsLgotLSAgICB8ICBzdWJpIFRNUDEsIFJELCA4Ci0rICAgIHwgIGFkZGkgVE1QMSwgUkQs IFdPUkRfSEktOAotICAgICB8ICAgYWRkaSBSRCwgUkQsIDgKLSAgICAgfCAgc3R3eCBUSVNOSUws IFRNUDIsIFRNUDEKLSAgICAgfCAgYiA8NQotQEAgLTQ3NDEsMTEgKzUxMzUsMTMgQEAgc3RhdGlj IHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAg dmsgPSAob3AgPT0gQkNfSUZPUkwgfHwgb3AgPT0gQkNfSkZPUkwpOwotICAgICB8LmlmIERVQUxO VU0KLSAgICAgfCAgLy8gSW50ZWdlciBsb29wLgotLSAgICB8ICBsd3p1eCBUTVAxLCBSQSwgQkFT RQotLSAgICB8ICAgbHd6IENBUkcxLCBGT1JMX0lEWCo4KzQoUkEpCi0rICAgIHwgIGx3enV4MiBU TVAxLCBDQVJHMSwgUkEsIEJBU0UKLSsgICAgaWYgKHZrKSB7Ci0rICAgICAgfCAgbXR4ZXIgWkVS TwotKyAgICB9Ci0gICAgIHwgIGNtcGx3IGNyMCwgVE1QMSwgVElTTlVNCi0gICAgIGlmICh2aykg ewotLSAgICAgIHwgICBsd3ogQ0FSRzMsIEZPUkxfU1RFUCo4KzQoUkEpCi0rICAgICAgfCAgIGx3 eiBDQVJHMywgRk9STF9TVEVQKjgrV09SRF9MTyhSQSkKLSAgICAgICB8ICBibmUgPjkKLSAgICAg ICB8LmlmIEdQUjY0Ci0gICAgICAgfCAgLy8gTmVlZCB0byBjaGVjayBvdmVyZmxvdyBmb3IgKGE8 PDMyKSArIChiPDwzMikuCi1AQCAtNDc1NywxNSArNTE1MywxNSBAQCBzdGF0aWMgdm9pZCBidWls ZF9pbnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICAgIHwgIGFkZG8u IENBUkcxLCBDQVJHMSwgQ0FSRzMKLSAgICAgICB8LmVuZGlmCi0gICAgICAgfCAgICBjbXB3aSBj cjYsIENBUkczLCAwCi0tICAgICAgfCAgIGx3eiBDQVJHMiwgRk9STF9TVE9QKjgrNChSQSkKLS0g ICAgICB8ICBic28gPjYKLSsgICAgICB8ICAgbHd6IENBUkcyLCBGT1JMX1NUT1AqOCtXT1JEX0xP KFJBKQotKyAgICAgIHwgIGJzbyA+MgotICAgICAgIHw0OgotLSAgICAgIHwgIHN0dyBDQVJHMSwg Rk9STF9JRFgqOCs0KFJBKQotKyAgICAgIHwgIHN0dyBDQVJHMSwgRk9STF9JRFgqOCtXT1JEX0xP KFJBKQotICAgICB9IGVsc2UgewotLSAgICAgIHwgIGx3eiBUTVAzLCBGT1JMX1NURVAqOChSQSkK LS0gICAgICB8ICAgbHd6IENBUkczLCBGT1JMX1NURVAqOCs0KFJBKQotLSAgICAgIHwgIGx3eiBU TVAyLCBGT1JMX1NUT1AqOChSQSkKLS0gICAgICB8ICAgbHd6IENBUkcyLCBGT1JMX1NUT1AqOCs0 KFJBKQotKyAgICAgIHwgIGx3eiBUTVAzLCBGT1JMX1NURVAqOCtXT1JEX0hJKFJBKQotKyAgICAg IHwgICBsd3ogQ0FSRzMsIEZPUkxfU1RFUCo4K1dPUkRfTE8oUkEpCi0rICAgICAgfCAgbHd6IFRN UDIsIEZPUkxfU1RPUCo4K1dPUkRfSEkoUkEpCi0rICAgICAgfCAgIGx3eiBDQVJHMiwgRk9STF9T VE9QKjgrV09SRF9MTyhSQSkKLSAgICAgICB8ICBjbXBsdyBjcjcsIFRNUDMsIFRJU05VTQotICAg ICAgIHwgIGNtcGx3IGNyMSwgVE1QMiwgVElTTlVNCi0gICAgICAgfCAgY3JhbmQgNCpjcjArZXEs IDQqY3IwK2VxLCA0KmNyNytlcQotQEAgLTQ3NzYsMTEgKzUxNzIsMTEgQEAgc3RhdGljIHZvaWQg YnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgICAgfCAgICBi bHQgY3I2LCA+NQotICAgICB8ICBjbXB3IENBUkcxLCBDQVJHMgotICAgICB8MToKLS0gICAgfCAg IHN0dyBUSVNOVU0sIEZPUkxfRVhUKjgoUkEpCi0rICAgIHwgICBzdHcgVElTTlVNLCBGT1JMX0VY VCo4K1dPUkRfSEkoUkEpCi0gICAgIGlmIChvcCAhPSBCQ19KRk9STCkgewotICAgICAgIHwgIHNy d2kgUkQsIFJELCAxCi0gICAgIH0KLS0gICAgfCAgIHN0dyBDQVJHMSwgRk9STF9FWFQqOCs0KFJB KQotKyAgICB8ICAgc3R3IENBUkcxLCBGT1JMX0VYVCo4K1dPUkRfTE8oUkEpCi0gICAgIGlmIChv cCAhPSBCQ19KRk9STCkgewotICAgICAgIHwgIGFkZCBSRCwgUEMsIFJECi0gICAgIH0KLUBAIC00 ODAwLDExICs1MTk2LDYgQEAgc3RhdGljIHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJD T3Agb3AsIGludCBkZWZvcCkKLSAgICAgfDU6ICAvLyBJbnZlcnQgY2hlY2sgZm9yIG5lZ2F0aXZl IHN0ZXAuCi0gICAgIHwgIGNtcHcgQ0FSRzIsIENBUkcxCi0gICAgIHwgIGIgPDEKLS0gICAgaWYg KHZrKSB7Ci0tICAgICAgfDY6ICAvLyBQb3RlbnRpYWwgb3ZlcmZsb3cuCi0tICAgICAgfCAgY2hl Y2tvdiBUTVAwLCA8NAkJLy8gSWdub3JlIHVucmVsYXRlZCBvdmVyZmxvdy4KLS0gICAgICB8ICBi IDwyCi0tICAgIH0KLSAgICAgfC5lbmRpZgotICAgICBpZiAodmspIHsKLSAgICAgICB8LmlmIERV QUxOVU0KLUBAIC00ODE1LDE0ICs1MjA2LDE5IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWls ZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3ApCi0gICAgICAgfC5lbmRpZgotICAgICAgIHwg IGxmZCBmMywgRk9STF9TVEVQKjgoUkEpCi0gICAgICAgfCAgbGZkIGYyLCBGT1JMX1NUT1AqOChS QSkKLS0gICAgICB8ICAgbHd6IFRNUDMsIEZPUkxfU1RFUCo4KFJBKQotKyAgICAgIHwgICBsd3og VE1QMywgRk9STF9TVEVQKjgrV09SRF9ISShSQSkKLSAgICAgICB8ICBmYWRkIGYxLCBmMSwgZjMK LSAgICAgICB8ICBzdGZkIGYxLCBGT1JMX0lEWCo4KFJBKQotICAgICB9IGVsc2UgewotICAgICAg IHwuaWYgRFVBTE5VTQotICAgICAgIHw5OiAgLy8gRlAgbG9vcC4KLSAgICAgICB8LmVsc2UKLSsg ICAgICB8LmlmIEVORElBTl9MRQotKyAgICAgIHwgIGx3enggVE1QMSwgUkEsIEJBU0VfTE8KLSsg ICAgICB8ICBhZGQgUkEsIFJBLCBCQVNFCi0rICAgICAgfC5lbHNlCi0gICAgICAgfCAgbHd6dXgg VE1QMSwgUkEsIEJBU0UKLSsgICAgICB8LmVuZGlmCi0gICAgICAgfCAgbHd6IFRNUDMsIEZPUkxf U1RFUCo4KFJBKQotICAgICAgIHwgIGx3eiBUTVAyLCBGT1JMX1NUT1AqOChSQSkKLSAgICAgICB8 ICBjbXBsdyBjcjAsIFRNUDEsIFRJU05VTQotQEAgLTQ5MDMsMTcgKzUyOTksMTYgQEAgc3RhdGlj IHZvaWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAjZW5k aWYKLSAgIGNhc2UgQkNfSUlURVJMOgotICAgICB8ICAvLyBSQSA9IGJhc2UqOCwgUkQgPSB0YXJn ZXQKLS0gICAgfCAgbHd6dXggVE1QMSwgUkEsIEJBU0UKLS0gICAgfCAgIGx3eiBUTVAyLCA0KFJB KQotKyAgICB8ICBsd3p1eDIgVE1QMSwgVE1QMiwgUkEsIEJBU0UKLSAgICAgfCAgY2hlY2tuaWwg VE1QMTsgYmVxID4xCQkvLyBTdG9wIGlmIGl0ZXJhdG9yIHJldHVybmVkIG5pbC4KLSAgICAgaWYg KG9wID09IEJDX0pJVEVSTCkgewotLSAgICAgIHwgIHN0dyBUTVAxLCAtOChSQSkKLS0gICAgICB8 ICAgc3R3IFRNUDIsIC00KFJBKQotKyAgICAgIHwgIHN0dyBUTVAxLCBXT1JEX0hJLTgoUkEpCi0r ICAgICAgfCAgIHN0dyBUTVAyLCBXT1JEX0xPLTgoUkEpCi0gICAgICAgfCAgYiA9PkJDX0pMT09Q Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgfCAgYnJhbmNoX1JECQkJLy8gT3RoZXJ3aXNlIHNhdmUg Y29udHJvbCB2YXIgKyBicmFuY2guCi0tICAgICAgfCAgc3R3IFRNUDEsIC04KFJBKQotLSAgICAg IHwgICBzdHcgVE1QMiwgLTQoUkEpCi0rICAgICAgfCAgc3R3IFRNUDEsIFdPUkRfSEktOChSQSkK LSsgICAgICB8ICAgc3R3IFRNUDIsIFdPUkRfTE8tOChSQSkKLSAgICAgfQotICAgICB8MToKLSAg ICAgfCAgaW5zX25leHQKLUBAIC00OTQyLDcgKzUzMzcsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9p bnMoQnVpbGRDdHggKmN0eCwgQkNPcCBvcCwgaW50IGRlZm9wKQotICAgICB8ICAvLyBUcmFjZXMg b24gUFBDIGRvbid0IHN0b3JlIHRoZSB0cmFjZSBudW1iZXIsIHNvIHVzZSAwLgotICAgICB8ICAg c3R3IFpFUk8sIERJU1BBVENIX0dMKHZtc3RhdGUpKERJU1BBVENIKQotICAgICB8ICBsd3p4IFRS QUNFOlRNUDIsIFRNUDEsIFJECi0tICAgIHwgIGNscnNvIFRNUDEKLSsgICAgfCAgbXR4ZXIgWkVS TwotICAgICB8ICBscCBUTVAyLCBUUkFDRTpUTVAyLT5tY29kZQotICAgICB8ICAgc3R3IEJBU0Us IERJU1BBVENIX0dMKGppdF9iYXNlKShESVNQQVRDSCkKLSAgICAgfCAgbXRjdHIgVE1QMgotQEAg LTQ5OTQsNyArNTM4OSw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBC Q09wIG9wLCBpbnQgZGVmb3ApCi0gICAgIH0KLSAgICAgfAotICAgICB8MzogIC8vIENsZWFyIG1p c3NpbmcgcGFyYW1ldGVycy4KLS0gICAgfCAgc3R3eCBUSVNOSUwsIEJBU0UsIE5BUkdTODpSQwot KyAgICB8ICBzdHd4IFRJU05JTCwgQkFTRV9ISSwgTkFSR1M4OlJDCi0gICAgIHwgIGFkZGkgTkFS R1M4OlJDLCBOQVJHUzg6UkMsIDgKLSAgICAgfCAgYiA8MgotICAgICBicmVhazsKLUBAIC01MDEx LDExICs1NDA2LDExIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09w IG9wLCBpbnQgZGVmb3ApCi0gICAgIHwgIGx3eiBUTVAyLCBMLT5tYXhzdGFjawotICAgICB8ICAg YWRkIFRNUDEsIEJBU0UsIFJDCi0gICAgIHwgIGFkZCBUTVAwLCBSQSwgUkMKLS0gICAgfCAgIHN0 dyBMRlVOQzpSQiwgNChUTVAxKQkJLy8gU3RvcmUgY29weSBvZiBMRlVOQy4KLSsgICAgfCAgIHN0 dyBMRlVOQzpSQiwgV09SRF9MTyhUTVAxKQkvLyBTdG9yZSBjb3B5IG9mIExGVU5DLgotICAgICB8 ICAgYWRkaSBUTVAzLCBSQywgOCtGUkFNRV9WQVJHCi0gICAgIHwgICAgbHd6IEtCQVNFLCAtNCtQ QzJQUk9UTyhrKShQQykKLSAgICAgfCAgY21wbHcgVE1QMCwgVE1QMgotLSAgICB8ICAgc3R3IFRN UDMsIDAoVE1QMSkJCS8vIFN0b3JlIGRlbHRhICsgRlJBTUVfVkFSRy4KLSsgICAgfCAgIHN0dyBU TVAzLCBXT1JEX0hJKFRNUDEpCQkvLyBTdG9yZSBkZWx0YSArIEZSQU1FX1ZBUkcuCi0gICAgIHwg IGJnZSAtPnZtX2dyb3dzdGFja19sCi0gICAgIHwgIGxieiBUTVAyLCAtNCtQQzJQUk9UTyhudW1w YXJhbXMpKFBDKQotICAgICB8ICAgbXIgUkEsIEJBU0UKLUBAIC01MDI2LDE4ICs1NDIxLDE5IEBA IHN0YXRpYyB2b2lkIGJ1aWxkX2lucyhCdWlsZEN0eCAqY3R4LCBCQ09wIG9wLCBpbnQgZGVmb3Ap Ci0gICAgIHwgIGJlcSA+MwotICAgICB8MToKLSAgICAgfCAgY21wbHcgUkEsIFJDCQkJLy8gTGVz cyBhcmdzIHRoYW4gcGFyYW1ldGVycz8KLS0gICAgfCAgIGx3eiBUTVAwLCAwKFJBKQotLSAgICB8 ICAgbHd6IFRNUDMsIDQoUkEpCi0rICAgIHwgICBsd3ogVE1QMCwgV09SRF9ISShSQSkKLSsgICAg fCAgIGx3eiBUTVAzLCBXT1JEX0xPKFJBKQotICAgICB8ICBiZ2UgPjQKLS0gICAgfCAgICBzdHcg VElTTklMLCAwKFJBKQkJLy8gQ2xlYXIgb2xkIGZpeGFyZyBzbG90IChoZWxwIHRoZSBHQykuCi0r ICAgIHwgICAgc3R3IFRJU05JTCwgV09SRF9ISShSQSkJLy8gQ2xlYXIgb2xkIGZpeGFyZyBzbG90 IChoZWxwIHRoZSBHQykuCi0gICAgIHwgICAgYWRkaSBSQSwgUkEsIDgKLSAgICAgfDI6Ci0gICAg IHwgIGFkZGljLiBUTVAyLCBUTVAyLCAtMQotLSAgICB8ICAgc3R3IFRNUDAsIDgoVE1QMSkKLS0g ICAgfCAgIHN0dyBUTVAzLCAxMihUTVAxKQotKyAgICB8ICAgc3R3IFRNUDAsIFdPUkRfSEkrOChU TVAxKQotKyAgICB8ICAgc3R3IFRNUDMsIFdPUkRfTE8rOChUTVAxKQotICAgICB8ICAgIGFkZGkg VE1QMSwgVE1QMSwgOAotICAgICB8ICBibmUgPDEKLSAgICAgfDM6Ci0rICAgIHwgIGFkZGkgQkFT RVA0LCBCQVNFLCA0Ci0gICAgIHwgIGluc19uZXh0MgotICAgICB8Ci0gICAgIHw0OiAgLy8gQ2xl YXIgbWlzc2luZyBwYXJhbWV0ZXJzLgotQEAgLTUwNDksMzUgKzU0NDUsMzUgQEAgc3RhdGljIHZv aWQgYnVpbGRfaW5zKEJ1aWxkQ3R4ICpjdHgsIEJDT3Agb3AsIGludCBkZWZvcCkKLSAgIGNhc2Ug QkNfRlVOQ0NXOgotICAgICB8ICAvLyBCQVNFID0gbmV3IGJhc2UsIFJBID0gQkFTRStmcmFtZXNp emUqOCwgUkIgPSBDRlVOQywgUkMgPSBuYXJncyo4Ci0gICAgIGlmIChvcCA9PSBCQ19GVU5DQykg ewotLSAgICAgIHwgIGxwIFJELCBDRlVOQzpSQi0+ZgotKyAgICAgIHwgIGxwIEZVTkNSRUcsIENG VU5DOlJCLT5mCi0gICAgIH0gZWxzZSB7Ci0tICAgICAgfCAgbHAgUkQsIERJU1BBVENIX0dMKHdy YXBmKShESVNQQVRDSCkKLSsgICAgICB8ICBscCBGVU5DUkVHLCBESVNQQVRDSF9HTCh3cmFwZiko RElTUEFUQ0gpCi0gICAgIH0KLSAgICAgfCAgIGFkZCBUTVAxLCBSQSwgTkFSR1M4OlJDCi0gICAg IHwgICBsd3ogVE1QMiwgTC0+bWF4c3RhY2sKLS0gICAgfCAgLnRvYyBscCBUTVAzLCAwKFJEKQot KyAgICB8ICAub3BkIGxwIFRNUDMsIDAoRlVOQ1JFRykKLSAgICAgfCAgICBhZGQgUkMsIEJBU0Us IE5BUkdTODpSQwotICAgICB8ICAgc3RwIEJBU0UsIEwtPmJhc2UKLSAgICAgfCAgIGNtcGx3IFRN UDEsIFRNUDIKLSAgICAgfCAgICBzdHAgUkMsIEwtPnRvcAotICAgICB8ICAgICBsaV92bXN0YXRl IEMKLS0gICAgfC5pZiBUT0MKLSsgICAgfC5pZiBPUEQKLSAgICAgfCAgbXRjdHIgVE1QMwotICAg ICB8LmVsc2UKLS0gICAgfCAgbXRjdHIgUkQKLSsgICAgfCAgbXRjdHIgRlVOQ1JFRwotICAgICB8 LmVuZGlmCi0gICAgIGlmIChvcCA9PSBCQ19GVU5DQ1cpIHsKLSAgICAgICB8ICBscCBDQVJHMiwg Q0ZVTkM6UkItPmYKLSAgICAgfQotICAgICB8ICBtciBDQVJHMSwgTAotICAgICB8ICAgYmd0IC0+ dm1fZ3Jvd3N0YWNrX2MJCS8vIE5lZWQgdG8gZ3JvdyBzdGFjay4KLS0gICAgfCAgLnRvYyBscCBU T0NSRUcsIFRPQ19PRlMoUkQpCi0tICAgIHwgIC50b2NlbnYgbHAgRU5WUkVHLCBFTlZfT0ZTKFJE KQotKyAgICB8ICAub3BkIGxwIFRPQ1JFRywgVE9DX09GUyhGVU5DUkVHKQotKyAgICB8ICAub3Bk ZW52IGxwIEVOVlJFRywgRU5WX09GUyhGVU5DUkVHKQotICAgICB8ICAgICBzdF92bXN0YXRlCi0g ICAgIHwgIGJjdHJsCQkJCS8vIChsdWFfU3RhdGUgKkwgWywgbHVhX0NGdW5jdGlvbiBmXSkKLSsg ICAgfCAgLnRvYyBscCBUT0NSRUcsIFNBVkVfVE9DCi0gICAgIHwgIC8vIFJldHVybnMgbnJlc3Vs dHMuCi0gICAgIHwgIGxwIEJBU0UsIEwtPmJhc2UKLS0gICAgfCAgLnRvYyBsZCBUT0NSRUcsIFNB VkVfVE9DCi0gICAgIHwgICBzbHdpIFJELCBDUkVUMSwgMwotICAgICB8ICBscCBUTVAxLCBMLT50 b3AKLSAgICAgfCAgICBsaV92bXN0YXRlIElOVEVSUAotQEAgLTUxMjgsNyArNTUyNCwxMSBAQCBz dGF0aWMgdm9pZCBlbWl0X2FzbV9kZWJ1ZyhCdWlsZEN0eCAqY3R4KQotIAkiXHQuYnl0ZSAweDFc biIKLSAJIlx0LnN0cmluZyBcIlwiXG4iCi0gCSJcdC51bGViMTI4IDB4MVxuIgotKyNpZiBMSl9B UkNIX1BQQzMyT042NAotKwkiXHQuc2xlYjEyOCAtOFxuIgotKyNlbHNlCi0gCSJcdC5zbGViMTI4 IC00XG4iCi0rI2VuZGlmCi0gCSJcdC5ieXRlIDY1XG4iCi0gCSJcdC5ieXRlIDB4Y1xuXHQudWxl YjEyOCAxXG5cdC51bGViMTI4IDBcbiIKLSAJIlx0LmFsaWduIDJcbiIKLUBAIC01MTQxLDE0ICs1 NTQxLDI0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYXNtX2RlYnVnKEJ1aWxkQ3R4ICpjdHgpCi0gCSJc dC5sb25nIC5MYmVnaW5cbiIKLSAJIlx0LmxvbmcgJWRcbiIKLSAJIlx0LmJ5dGUgMHhlXG5cdC51 bGViMTI4ICVkXG4iCi0rI2lmIExKX0FSQ0hfUFBDMzJPTjY0Ci0rCSJcdC5ieXRlIDB4MTFcblx0 LnVsZWIxMjggNjVcblx0LnNsZWIxMjggLTJcbiIKLSsJIlx0LmJ5dGUgMHgxMVxuXHQudWxlYjEy OCA3MFxuXHQuc2xlYjEyOCAtMVxuIiwKLSsjZWxzZQotIAkiXHQuYnl0ZSAweDExXG5cdC51bGVi MTI4IDY1XG5cdC5zbGViMTI4IC0xXG4iCi0gCSJcdC5ieXRlIDB4NVxuXHQudWxlYjEyOCA3MFxu XHQudWxlYjEyOCA1NVxuIiwKLSsjZW5kaWYKLSAJZmNvZnMsIENGUkFNRV9TSVpFKTsKLSAgICAg Zm9yIChpID0gMTQ7IGkgPD0gMzE7IGkrKykKLSAgICAgICBmcHJpbnRmKGN0eC0+ZnAsCi0gCSJc dC5ieXRlICVkXG5cdC51bGViMTI4ICVkXG4iCi0gCSJcdC5ieXRlICVkXG5cdC51bGViMTI4ICVk XG4iLAotLQkweDgwK2ksIDM3KygzMS1pKSwgMHg4MCszMitpLCAyKzIqKDMxLWkpKTsKLSsjaWYg TEpfQVJDSF9QUEMzMk9ONjQKLSsJMHg4MCtpLCAxOSsoMzEtaSksIDB4ODArMzIraSwgMSsoMzEt aSkKLSsjZWxzZQotKwkweDgwK2ksIDM3KygzMS1pKSwgMHg4MCszMitpLCAyKzIqKDMxLWkpCi0r I2VuZGlmCi0rICAgICAgKTsKLSAgICAgZnByaW50ZihjdHgtPmZwLAotIAkiXHQuYWxpZ24gMlxu IgotIAkiLkxFRkRFMDpcblxuIik7Ci1AQCAtNTE2NCw4ICs1NTc0LDEyIEBAIHN0YXRpYyB2b2lk IGVtaXRfYXNtX2RlYnVnKEJ1aWxkQ3R4ICpjdHgpCi0gCSJcdC5sb25nIGxqX3ZtX2ZmaV9jYWxs XG4iCi0gI2VuZGlmCi0gCSJcdC5sb25nICVkXG4iCi0rI2lmIExKX0FSQ0hfUFBDMzJPTjY0Ci0r CSJcdC5ieXRlIDB4MTFcblx0LnVsZWIxMjggNjVcblx0LnNsZWIxMjggLTJcbiIKLSsjZWxzZQot IAkiXHQuYnl0ZSAweDExXG5cdC51bGViMTI4IDY1XG5cdC5zbGViMTI4IC0xXG4iCi0tCSJcdC5i eXRlIDB4OGVcblx0LnVsZWIxMjggMlxuIgotKyNlbmRpZgotKwkiXHQuYnl0ZSAweDhlXG5cdC51 bGViMTI4IDFcbiIKLSAJIlx0LmJ5dGUgMHhkXG5cdC51bGViMTI4IDB4ZVxuIgotIAkiXHQuYWxp Z24gMlxuIgotIAkiLkxFRkRFMTpcblxuIiwgKGludCljdHgtPmNvZGVzeiAtIGZjb2ZzKTsKLUBA IC01MTgwLDcgKzU1OTQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9hc21fZGVidWcoQnVpbGRDdHgg KmN0eCkKLSAJIlx0LmJ5dGUgMHgxXG4iCi0gCSJcdC5zdHJpbmcgXCJ6UFJcIlxuIgotIAkiXHQu dWxlYjEyOCAweDFcbiIKLSsjaWYgTEpfQVJDSF9QUEMzMk9ONjQKLSsJIlx0LnNsZWIxMjggLThc biIKLSsjZWxzZQotIAkiXHQuc2xlYjEyOCAtNFxuIgotKyNlbmRpZgotIAkiXHQuYnl0ZSA2NVxu IgotIAkiXHQudWxlYjEyOCA2XG4iCQkJLyogYXVnbWVudGF0aW9uIGxlbmd0aCAqLwotIAkiXHQu Ynl0ZSAweDFiXG4iCQkJLyogcGNyZWx8c2RhdGE0ICovCi1AQCAtNTE5OCwxNCArNTYxNiwyNCBA QCBzdGF0aWMgdm9pZCBlbWl0X2FzbV9kZWJ1ZyhCdWlsZEN0eCAqY3R4KQotIAkiXHQubG9uZyAl ZFxuIgotIAkiXHQudWxlYjEyOCAwXG4iCQkJLyogYXVnbWVudGF0aW9uIGxlbmd0aCAqLwotIAki XHQuYnl0ZSAweGVcblx0LnVsZWIxMjggJWRcbiIKLSsjaWYgTEpfQVJDSF9QUEMzMk9ONjQKLSsJ Ilx0LmJ5dGUgMHgxMVxuXHQudWxlYjEyOCA2NVxuXHQuc2xlYjEyOCAtMlxuIgotKwkiXHQuYnl0 ZSAweDExXG5cdC51bGViMTI4IDcwXG5cdC5zbGViMTI4IC0xXG4iLAotKyNlbHNlCi0gCSJcdC5i eXRlIDB4MTFcblx0LnVsZWIxMjggNjVcblx0LnNsZWIxMjggLTFcbiIKLSAJIlx0LmJ5dGUgMHg1 XG5cdC51bGViMTI4IDcwXG5cdC51bGViMTI4IDU1XG4iLAotKyNlbmRpZgotIAlmY29mcywgQ0ZS QU1FX1NJWkUpOwotICAgICBmb3IgKGkgPSAxNDsgaSA8PSAzMTsgaSsrKQotICAgICAgIGZwcmlu dGYoY3R4LT5mcCwKLSAJIlx0LmJ5dGUgJWRcblx0LnVsZWIxMjggJWRcbiIKLSAJIlx0LmJ5dGUg JWRcblx0LnVsZWIxMjggJWRcbiIsCi0tCTB4ODAraSwgMzcrKDMxLWkpLCAweDgwKzMyK2ksIDIr MiooMzEtaSkpOwotKyNpZiBMSl9BUkNIX1BQQzMyT042NAotKwkweDgwK2ksIDE5KygzMS1pKSwg MHg4MCszMitpLCAxKygzMS1pKQotKyNlbHNlCi0rCTB4ODAraSwgMzcrKDMxLWkpLCAweDgwKzMy K2ksIDIrMiooMzEtaSkKLSsjZW5kaWYKLSsgICAgICApOwotICAgICBmcHJpbnRmKGN0eC0+ZnAs Ci0gCSJcdC5hbGlnbiAyXG4iCi0gCSIuTEVGREUyOlxuXG4iKTsKLUBAIC01MjMzLDggKzU2NjEs MTIgQEAgc3RhdGljIHZvaWQgZW1pdF9hc21fZGVidWcoQnVpbGRDdHggKmN0eCkKLSAJIlx0Lmxv bmcgbGpfdm1fZmZpX2NhbGwtLlxuIgotIAkiXHQubG9uZyAlZFxuIgotIAkiXHQudWxlYjEyOCAw XG4iCQkJLyogYXVnbWVudGF0aW9uIGxlbmd0aCAqLwotKyNpZiBMSl9BUkNIX1BQQzMyT042NAot KwkiXHQuYnl0ZSAweDExXG5cdC51bGViMTI4IDY1XG5cdC5zbGViMTI4IC0yXG4iCi0rI2Vsc2UK LSAJIlx0LmJ5dGUgMHgxMVxuXHQudWxlYjEyOCA2NVxuXHQuc2xlYjEyOCAtMVxuIgotLQkiXHQu Ynl0ZSAweDhlXG5cdC51bGViMTI4IDJcbiIKLSsjZW5kaWYKLSsJIlx0LmJ5dGUgMHg4ZVxuXHQu dWxlYjEyOCAxXG4iCi0gCSJcdC5ieXRlIDB4ZFxuXHQudWxlYjEyOCAweGVcbiIKLSAJIlx0LmFs aWduIDJcbiIKLSAJIi5MRUZERTM6XG5cbiIsIChpbnQpY3R4LT5jb2Rlc3ogLSBmY29mcyk7CmRp ZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC9maWxlcy9wYXRjaGVzL3BwYzY0L2ZpeC12bS1qaXQt cHBjNjQucGF0Y2ggYi9zcmNwa2dzL0x1YUpJVC9maWxlcy9wYXRjaGVzL3BwYzY0L2ZpeC12bS1q aXQtcHBjNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZTc2MGI3Mzgz NjEuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9MdWFKSVQvZmlsZXMvcGF0Y2hlcy9wcGM2 NC9maXgtdm0taml0LXBwYzY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAot LS0tIGEvc3JjL3ZtX3BwYy5kYXNjCTIwMTktMDYtMDMgMTk6NDE6NTAuMjE0NjcxNzMxICswMjAw Ci0rKysgYi9zcmMvdm1fcHBjLmRhc2MJMjAxOS0wNi0wMyAxOTo0NDo0MC4yMjk2ODYxNDMgKzAy MDAKLUBAIC0yNzc0LDcgKzI3NzQsNyBAQAotICAgfAotICAgfC0+dm1fZXhpdF9oYW5kbGVyOgot ICAgfC5pZiBKSVQKLS0gIHwgIGFkZGkgc3AsIFRNUDAsIHNwLCAtKEVYSVRfT0ZGU0VUKzMyKjgr MzIqUFNJWkUpCi0rICB8ICBhZGRpIHNwLCBzcCwgLShFWElUX09GRlNFVCszMio4KzMyKlBTSVpF KQotICAgfCAgc2F2ZXIgMyAvLyBDQVJHMQotICAgfCAgc2F2ZXIgNCAvLyBDQVJHMgotICAgfCAg c2F2ZXIgNSAvLyBDQVJHMwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9hYXJj aDY0LUZpeC1leGl0LXN0dWItcGF0Y2hpbmcucGF0Y2ggYi9zcmNwa2dzL0x1YUpJVC9wYXRjaGVz L2FhcmNoNjQtRml4LWV4aXQtc3R1Yi1wYXRjaGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNDg3YTFjZDFjYTc4Ny4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL0x1 YUpJVC9wYXRjaGVzL2FhcmNoNjQtRml4LWV4aXQtc3R1Yi1wYXRjaGluZy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDIzMSArMCwwIEBACi1jb21taXQgOWRhMDY1MzUwOTJkNmQ5ZGVjNDQyNjQx YTI2YzY0YmNlNTU3NDMyMgotQXV0aG9yOiBNaWtlIFBhbGwgPG1pa2U+Ci1EYXRlOiAgIFN1biBK dW4gMjQgMTQ6MDg6NTkgMjAxOCArMDIwMAotCi0gICAgQVJNNjQ6IEZpeCBleGl0IHN0dWIgcGF0 Y2hpbmcuCi0gICAgCi0gICAgQ29udHJpYnV0ZWQgYnkgSmF2aWVyIEd1ZXJyYSBHaXJhbGRlei4K LQotZGlmZiAtLWdpdCBhL3NyYy9sal9hc21fYXJtNjQuaCBiL3NyYy9sal9hc21fYXJtNjQuaAot aW5kZXggY2JiMTg2ZDMuLmJhYWZhMjFhIDEwMDY0NAotLS0tIGEvc3JjL2xqX2FzbV9hcm02NC5o Ci0rKysgYi9zcmMvbGpfYXNtX2FybTY0LmgKLUBAIC01NiwxMSArNTYsMTEgQEAgc3RhdGljIHZv aWQgYXNtX2V4aXRzdHViX3NldHVwKEFTTVN0YXRlICphcywgRXhpdE5vIG5leGl0cykKLSAgICAg YXNtX21jbGltaXQoYXMpOwotICAgLyogMTogc3RyIGxyLFtzcF07IGJsIC0+dm1fZXhpdF9oYW5k bGVyOyBtb3Z6IHcwLHRyYWNlbm87IGJsIDwxOyBibCA8MTsgLi4uICovCi0gICBmb3IgKGkgPSBu ZXhpdHMtMTsgKGludDMyX3QpaSA+PSAwOyBpLS0pCi0tICAgICotLW14cCA9IEE2NElfTEUoQTY0 SV9CTHwoKC0zLWkpJjB4MDNmZmZmZmZ1KSk7Ci0tICAqLS1teHAgPSBBNjRJX0xFKEE2NElfTU9W Wnd8QTY0Rl9VMTYoYXMtPlQtPnRyYWNlbm8pKTsKLSsgICAgKi0tbXhwID0gQTY0SV9MRShBNjRJ X0JMIHwgQTY0Rl9TMjYoLTMtaSkpOwotKyAgKi0tbXhwID0gQTY0SV9MRShBNjRJX01PVlp3IHwg QTY0Rl9VMTYoYXMtPlQtPnRyYWNlbm8pKTsKLSAgIG14cC0tOwotLSAgKm14cCA9IEE2NElfTEUo QTY0SV9CTHwoKChNQ29kZSAqKSh2b2lkICopbGpfdm1fZXhpdF9oYW5kbGVyLW14cCkmMHgwM2Zm ZmZmZnUpKTsKLS0gICotLW14cCA9IEE2NElfTEUoQTY0SV9TVFJ4fEE2NEZfRChSSURfTFIpfEE2 NEZfTihSSURfU1ApKTsKLSsgICpteHAgPSBBNjRJX0xFKEE2NElfQkwgfCBBNjRGX1MyNigoKE1D b2RlICopKHZvaWQgKilsal92bV9leGl0X2hhbmRsZXItbXhwKSkpOwotKyAgKi0tbXhwID0gQTY0 SV9MRShBNjRJX1NUUnggfCBBNjRGX0QoUklEX0xSKSB8IEE2NEZfTihSSURfU1ApKTsKLSAgIGFz LT5tY3RvcCA9IG14cDsKLSB9Ci0gCi1AQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCBhc21f Z3VhcmRjYyhBU01TdGF0ZSAqYXMsIEE2NENDIGNjKQotICAgTUNvZGUgKnAgPSBhcy0+bWNwOwot ICAgaWYgKExKX1VOTElLRUxZKHAgPT0gYXMtPmludm1jcCkpIHsKLSAgICAgYXMtPmxvb3BpbnYg PSAxOwotLSAgICAqcCA9IEE2NElfQiB8ICgodGFyZ2V0LXApICYgMHgwM2ZmZmZmZnUpOwotKyAg ICAqcCA9IEE2NElfQiB8IEE2NEZfUzI2KHRhcmdldC1wKTsKLSAgICAgZW1pdF9jb25kX2JyYW5j aChhcywgY2NeMSwgcC0xKTsKLSAgICAgcmV0dXJuOwotICAgfQotQEAgLTkxLDcgKzkxLDcgQEAg c3RhdGljIHZvaWQgYXNtX2d1YXJkdG5iKEFTTVN0YXRlICphcywgQTY0SW5zIGFpLCBSZWcgciwg dWludDMyX3QgYml0KQotICAgTUNvZGUgKnAgPSBhcy0+bWNwOwotICAgaWYgKExKX1VOTElLRUxZ KHAgPT0gYXMtPmludm1jcCkpIHsKLSAgICAgYXMtPmxvb3BpbnYgPSAxOwotLSAgICAqcCA9IEE2 NElfQiB8ICgodGFyZ2V0LXApICYgMHgwM2ZmZmZmZnUpOwotKyAgICAqcCA9IEE2NElfQiB8IEE2 NEZfUzI2KHRhcmdldC1wKTsKLSAgICAgZW1pdF90bmIoYXMsIGFpXjB4MDEwMDAwMDB1LCByLCBi aXQsIHAtMSk7Ci0gICAgIHJldHVybjsKLSAgIH0KLUBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGlj IHZvaWQgYXNtX2d1YXJkY25iKEFTTVN0YXRlICphcywgQTY0SW5zIGFpLCBSZWcgcikKLSAgIE1D b2RlICpwID0gYXMtPm1jcDsKLSAgIGlmIChMSl9VTkxJS0VMWShwID09IGFzLT5pbnZtY3ApKSB7 Ci0gICAgIGFzLT5sb29waW52ID0gMTsKLS0gICAgKnAgPSBBNjRJX0IgfCAoKHRhcmdldC1wKSAm IDB4MDNmZmZmZmZ1KTsKLSsgICAgKnAgPSBBNjRJX0IgfCBBNjRGX1MyNih0YXJnZXQtcCk7Ci0g ICAgIGVtaXRfY25iKGFzLCBhaV4weDAxMDAwMDAwdSwgciwgcC0xKTsKLSAgICAgcmV0dXJuOwot ICAgfQotQEAgLTE4NTAsNyArMTg1MCw3IEBAIHN0YXRpYyB2b2lkIGFzbV9sb29wX2ZpeHVwKEFT TVN0YXRlICphcykKLSAgICAgcFstMl0gfD0gKCh1aW50MzJfdClkZWx0YSAmIG1hc2spIDw8IDU7 Ci0gICB9IGVsc2UgewotICAgICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSAocCAtIDEpOwot LSAgICBwWy0xXSA9IEE2NElfQiB8ICgodWludDMyX3QpKGRlbHRhKSAmIDB4MDNmZmZmZmZ1KTsK LSsgICAgcFstMV0gPSBBNjRJX0IgfCBBNjRGX1MyNihkZWx0YSk7Ci0gICB9Ci0gfQotIAotQEAg LTE5MTksNyArMTkxOSw3IEBAIHN0YXRpYyB2b2lkIGFzbV90YWlsX2ZpeHVwKEFTTVN0YXRlICph cywgVHJhY2VObyBsbmspCi0gICB9Ci0gICAvKiBQYXRjaCBleGl0IGJyYW5jaC4gKi8KLSAgIHRh cmdldCA9IGxuayA/IHRyYWNlcmVmKGFzLT5KLCBsbmspLT5tY29kZSA6IChNQ29kZSAqKWxqX3Zt X2V4aXRfaW50ZXJwOwotLSAgcFstMV0gPSBBNjRJX0IgfCAoKCh0YXJnZXQtcCkrMSkmMHgwM2Zm ZmZmZnUpOwotKyAgcFstMV0gPSBBNjRJX0IgfCBBNjRGX1MyNigodGFyZ2V0LXApKzEpOwotIH0K LSAKLSAvKiBQcmVwYXJlIHRhaWwgb2YgY29kZS4gKi8KLUBAIC0xOTgyLDQwICsxOTgyLDUwIEBA IHZvaWQgbGpfYXNtX3BhdGNoZXhpdChqaXRfU3RhdGUgKkosIEdDdHJhY2UgKlQsIEV4aXRObyBl eGl0bm8sIE1Db2RlICp0YXJnZXQpCi0gewotICAgTUNvZGUgKnAgPSBULT5tY29kZTsKLSAgIE1D b2RlICpwZSA9IChNQ29kZSAqKSgoY2hhciAqKXAgKyBULT5zem1jb2RlKTsKLS0gIE1Db2RlICpj c3RhcnQgPSBOVUxMLCAqY2VuZCA9IHA7Ci0rICBNQ29kZSAqY3N0YXJ0ID0gTlVMTDsKLSAgIE1D b2RlICptY2FyZWEgPSBsal9tY29kZV9wYXRjaChKLCBwLCAwKTsKLSAgIE1Db2RlICpweCA9IGV4 aXRzdHViX3RyYWNlX2FkZHIoVCwgZXhpdG5vKTsKLSsgIC8qIE5vdGU6IHRoaXMgYXNzdW1lcyBh IHRyYWNlIGV4aXQgaXMgb25seSBldmVyIHBhdGNoZWQgb25jZS4gKi8KLSAgIGZvciAoOyBwIDwg cGU7IHArKykgewotICAgICAvKiBMb29rIGZvciBleGl0c3R1YiBicmFuY2gsIHJlcGxhY2Ugd2l0 aCBicmFuY2ggdG8gdGFyZ2V0LiAqLwotKyAgICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBw OwotICAgICBNQ29kZSBpbnMgPSBBNjRJX0xFKCpwKTsKLSAgICAgaWYgKChpbnMgJiAweGZmMDAw MDAwdSkgPT0gMHg1NDAwMDAwMHUgJiYKLSAJKChpbnMgXiAoKHB4LXApPDw1KSkgJiAweDAwZmZm ZmUwdSkgPT0gMCkgewotLSAgICAgIC8qIFBhdGNoIGJjYyBleGl0c3R1Yi4gKi8KLS0gICAgICAq cCA9IEE2NElfTEUoKGlucyAmIDB4ZmYwMDAwMWZ1KSB8ICgoKHRhcmdldC1wKTw8NSkgJiAweDAw ZmZmZmUwdSkpOwotLSAgICAgIGNlbmQgPSBwKzE7Ci0tICAgICAgaWYgKCFjc3RhcnQpIGNzdGFy dCA9IHA7Ci0rICAgICAgLyogUGF0Y2ggYmNjLCBpZiB3aXRoaW4gcmFuZ2UuICovCi0rICAgICAg aWYgKEE2NEZfU19PSyhkZWx0YSwgMTkpKSB7Ci0rCSpwID0gQTY0SV9MRSgoaW5zICYgMHhmZjAw MDAxZnUpIHwgQTY0Rl9TMTkoZGVsdGEpKTsKLSsJaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7Ci0r ICAgICAgfQotICAgICB9IGVsc2UgaWYgKChpbnMgJiAweGZjMDAwMDAwdSkgPT0gMHgxNDAwMDAw MHUgJiYKLSAJICAgICAgICgoaW5zIF4gKHB4LXApKSAmIDB4MDNmZmZmZmZ1KSA9PSAwKSB7Ci0t ICAgICAgLyogUGF0Y2ggYiBleGl0c3R1Yi4gKi8KLS0gICAgICAqcCA9IEE2NElfTEUoKGlucyAm IDB4ZmMwMDAwMDB1KSB8ICgodGFyZ2V0LXApICYgMHgwM2ZmZmZmZnUpKTsKLS0gICAgICBjZW5k ID0gcCsxOwotKyAgICAgIC8qIFBhdGNoIGIuICovCi0rICAgICAgbHVhX2Fzc2VydChBNjRGX1Nf T0soZGVsdGEsIDI2KSk7Ci0rICAgICAgKnAgPSBBNjRJX0xFKChpbnMgJiAweGZjMDAwMDAwdSkg fCBBNjRGX1MyNihkZWx0YSkpOwotICAgICAgIGlmICghY3N0YXJ0KSBjc3RhcnQgPSBwOwotICAg ICB9IGVsc2UgaWYgKChpbnMgJiAweDdlMDAwMDAwdSkgPT0gMHgzNDAwMDAwMHUgJiYKLSAJICAg ICAgICgoaW5zIF4gKChweC1wKTw8NSkpICYgMHgwMGZmZmZlMHUpID09IDApIHsKLS0gICAgICAv KiBQYXRjaCBjYnovY2JueiBleGl0c3R1Yi4gKi8KLS0gICAgICAqcCA9IEE2NElfTEUoKGlucyAm IDB4ZmYwMDAwMWYpIHwgKCgodGFyZ2V0LXApPDw1KSAmIDB4MDBmZmZmZTB1KSk7Ci0tICAgICAg Y2VuZCA9IHArMTsKLS0gICAgICBpZiAoIWNzdGFydCkgY3N0YXJ0ID0gcDsKLSsgICAgICAvKiBQ YXRjaCBjYnovY2JueiwgaWYgd2l0aGluIHJhbmdlLiAqLwotKyAgICAgIGlmIChBNjRGX1NfT0so ZGVsdGEsIDE5KSkgewotKwkqcCA9IEE2NElfTEUoKGlucyAmIDB4ZmYwMDAwMWZ1KSB8IEE2NEZf UzE5KGRlbHRhKSk7Ci0rCWlmICghY3N0YXJ0KSBjc3RhcnQgPSBwOwotKyAgICAgIH0KLSAgICAg fSBlbHNlIGlmICgoaW5zICYgMHg3ZTAwMDAwMHUpID09IDB4MzYwMDAwMDB1ICYmCi0gCSAgICAg ICAoKGlucyBeICgocHgtcCk8PDUpKSAmIDB4MDAwN2ZmZTB1KSA9PSAwKSB7Ci0tICAgICAgLyog UGF0Y2ggdGJ6L3RibnogZXhpdHN0dWIuICovCi0tICAgICAgKnAgPSBBNjRJX0xFKChpbnMgJiAw eGZmZjgwMDFmdSkgfCAoKCh0YXJnZXQtcCk8PDUpICYgMHgwMDA3ZmZlMHUpKTsKLS0gICAgICBj ZW5kID0gcCsxOwotLSAgICAgIGlmICghY3N0YXJ0KSBjc3RhcnQgPSBwOwotKyAgICAgIC8qIFBh dGNoIHRiei90Ym56LCBpZiB3aXRoaW4gcmFuZ2UuICovCi0rICAgICAgaWYgKEE2NEZfU19PSyhk ZWx0YSwgMTQpKSB7Ci0rCSpwID0gQTY0SV9MRSgoaW5zICYgMHhmZmY4MDAxZnUpIHwgQTY0Rl9T MTQoZGVsdGEpKTsKLSsJaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7Ci0rICAgICAgfQotICAgICB9 Ci0gICB9Ci0tICBsdWFfYXNzZXJ0KGNzdGFydCAhPSBOVUxMKTsKLS0gIGxqX21jb2RlX3N5bmMo Y3N0YXJ0LCBjZW5kKTsKLSsgIHsgIC8qIEFsd2F5cyBwYXRjaCBsb25nLXJhbmdlIGJyYW5jaCBp biBleGl0IHN0dWIgaXRzZWxmLiAqLwotKyAgICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBw eDsKLSsgICAgbHVhX2Fzc2VydChBNjRGX1NfT0soZGVsdGEsIDI2KSk7Ci0rICAgICpweCA9IEE2 NElfQiB8IEE2NEZfUzI2KGRlbHRhKTsKLSsgICAgaWYgKCFjc3RhcnQpIGNzdGFydCA9IHB4Owot KyAgfQotKyAgbGpfbWNvZGVfc3luYyhjc3RhcnQsIHB4KzEpOwotICAgbGpfbWNvZGVfcGF0Y2go SiwgbWNhcmVhLCAxKTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xqX2VtaXRfYXJtNjQuaCBi L3NyYy9sal9lbWl0X2FybTY0LmgKLWluZGV4IDZkYTRjN2Q0Li4xMDAxYjFkOCAxMDA2NDQKLS0t LSBhL3NyYy9sal9lbWl0X2FybTY0LmgKLSsrKyBiL3NyYy9sal9lbWl0X2FybTY0LmgKLUBAIC0y NDEsNyArMjQxLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9sb2FkayhBU01TdGF0ZSAqYXMsIFJlZyBy ZCwgdWludDY0X3QgdTY0LCBpbnQgaXM2NCkKLSAjZGVmaW5lIG1jcG9mcyhhcywgaykgXAotICAg KChpbnRwdHJfdCkoKHVpbnRwdHJfdCkoaykgLSAodWludHB0cl90KShhcy0+bWNwIC0gMSkpKQot ICNkZWZpbmUgY2hlY2ttY3BvZnMoYXMsIGspIFwKLS0gICgoKChtY3BvZnMoYXMsIGspPj4yKSAr IDB4MDAwNDAwMDApID4+IDE5KSA9PSAwKQotKyAgKEE2NEZfU19PSyhtY3BvZnMoYXMsIGspPj4y LCAxOSkpCi0gCi0gc3RhdGljIFJlZyByYV9hbGxvY2soQVNNU3RhdGUgKmFzLCBpbnRwdHJfdCBr LCBSZWdTZXQgYWxsb3cpOwotIAotQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0 X2NvbmRfYnJhbmNoKEFTTVN0YXRlICphcywgQTY0Q0MgY29uZCwgTUNvZGUgKnRhcmdldCkKLSB7 Ci0gICBNQ29kZSAqcCA9IC0tYXMtPm1jcDsKLSAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAt IHA7Ci0tICBsdWFfYXNzZXJ0KCgoZGVsdGEgKyAweDQwMDAwKSA+PiAxOSkgPT0gMCk7Ci0rICBs dWFfYXNzZXJ0KEE2NEZfU19PSyhkZWx0YSwgMTkpKTsKLSAgICpwID0gQTY0SV9CQ0MgfCBBNjRG X1MxOShkZWx0YSkgfCBjb25kOwotIH0KLSAKLUBAIC0zMjAsMjQgKzMyMCwyNCBAQCBzdGF0aWMg dm9pZCBlbWl0X2JyYW5jaChBU01TdGF0ZSAqYXMsIEE2NElucyBhaSwgTUNvZGUgKnRhcmdldCkK LSB7Ci0gICBNQ29kZSAqcCA9IC0tYXMtPm1jcDsKLSAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdl dCAtIHA7Ci0tICBsdWFfYXNzZXJ0KCgoZGVsdGEgKyAweDAyMDAwMDAwKSA+PiAyNikgPT0gMCk7 Ci0tICAqcCA9IGFpIHwgKCh1aW50MzJfdClkZWx0YSAmIDB4MDNmZmZmZmZ1KTsKLSsgIGx1YV9h c3NlcnQoQTY0Rl9TX09LKGRlbHRhLCAyNikpOwotKyAgKnAgPSBhaSB8IEE2NEZfUzI2KGRlbHRh KTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgZW1pdF90bmIoQVNNU3RhdGUgKmFzLCBBNjRJbnMgYWks IFJlZyByLCB1aW50MzJfdCBiaXQsIE1Db2RlICp0YXJnZXQpCi0gewotICAgTUNvZGUgKnAgPSAt LWFzLT5tY3A7Ci0gICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBwOwotLSAgbHVhX2Fzc2Vy dChiaXQgPCA2MyAmJiAoKGRlbHRhICsgMHgyMDAwKSA+PiAxNCkgPT0gMCk7Ci0rICBsdWFfYXNz ZXJ0KGJpdCA8IDYzICYmIEE2NEZfU19PSyhkZWx0YSwgMTQpKTsKLSAgIGlmIChiaXQgPiAzMSkg YWkgfD0gQTY0SV9YOwotLSAgKnAgPSBhaSB8IEE2NEZfQklUKGJpdCAmIDMxKSB8IEE2NEZfUzE0 KCh1aW50MzJfdClkZWx0YSAmIDB4M2ZmZnUpIHwgcjsKLSsgICpwID0gYWkgfCBBNjRGX0JJVChi aXQgJiAzMSkgfCBBNjRGX1MxNChkZWx0YSkgfCByOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBlbWl0 X2NuYihBU01TdGF0ZSAqYXMsIEE2NElucyBhaSwgUmVnIHIsIE1Db2RlICp0YXJnZXQpCi0gewot ICAgTUNvZGUgKnAgPSAtLWFzLT5tY3A7Ci0gICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBw OwotLSAgbHVhX2Fzc2VydCgoKGRlbHRhICsgMHg0MDAwMCkgPj4gMTkpID09IDApOwotKyAgbHVh X2Fzc2VydChBNjRGX1NfT0soZGVsdGEsIDE5KSk7Ci0gICAqcCA9IGFpIHwgQTY0Rl9TMTkoZGVs dGEpIHwgcjsKLSB9Ci0gCi1AQCAtMzQ3LDggKzM0Nyw4IEBAIHN0YXRpYyB2b2lkIGVtaXRfY2Fs bChBU01TdGF0ZSAqYXMsIHZvaWQgKnRhcmdldCkKLSB7Ci0gICBNQ29kZSAqcCA9IC0tYXMtPm1j cDsKLSAgIHB0cmRpZmZfdCBkZWx0YSA9IChjaGFyICopdGFyZ2V0IC0gKGNoYXIgKilwOwotLSAg aWYgKCgoKGRlbHRhPj4yKSArIDB4MDIwMDAwMDApID4+IDI2KSA9PSAwKSB7Ci0tICAgICpwID0g QTY0SV9CTCB8ICgodWludDMyX3QpKGRlbHRhPj4yKSAmIDB4MDNmZmZmZmZ1KTsKLSsgIGlmIChB NjRGX1NfT0soZGVsdGE+PjIsIDI2KSkgewotKyAgICAqcCA9IEE2NElfQkwgfCBBNjRGX1MyNihk ZWx0YT4+Mik7Ci0gICB9IGVsc2UgeyAgLyogVGFyZ2V0IG91dCBvZiByYW5nZTogbmVlZCBpbmRp cmVjdCBjYWxsLiBCdXQgZG9uJ3QgdXNlIFIwLVI3LiAqLwotICAgICBSZWcgciA9IHJhX2FsbG9j ayhhcywgaTY0cHRyKHRhcmdldCksCi0gCQkgICAgICBSU0VUX1JBTkdFKFJJRF9YOCwgUklEX01B WF9HUFIpLVJTRVRfRklYRUQpOwotZGlmZiAtLWdpdCBhL3NyYy9sal90YXJnZXRfYXJtNjQuaCBi L3NyYy9sal90YXJnZXRfYXJtNjQuaAotaW5kZXggNTIwMDIzYWUuLmEyMDdhMmJhIDEwMDY0NAot LS0tIGEvc3JjL2xqX3RhcmdldF9hcm02NC5oCi0rKysgYi9zcmMvbGpfdGFyZ2V0X2FybTY0LmgK LUBAIC0xMzIsOSArMTMyLDkgQEAgc3RhdGljIExKX0FJTkxJTkUgdWludDMyX3QgKmV4aXRzdHVi X3RyYWNlX2FkZHJfKHVpbnQzMl90ICpwLCB1aW50MzJfdCBleGl0bm8pCi0gI2RlZmluZSBBNjRG X0lNTVIoeCkJKCh4KSA8PCAxNikKLSAjZGVmaW5lIEE2NEZfVTE2KHgpCSgoeCkgPDwgNSkKLSAj ZGVmaW5lIEE2NEZfVTEyKHgpCSgoeCkgPDwgMTApCi0tI2RlZmluZSBBNjRGX1MyNih4KQkoeCkK LSsjZGVmaW5lIEE2NEZfUzI2KHgpCSgoKHVpbnQzMl90KSh4KSAmIDB4MDNmZmZmZmZ1KSkKLSAj ZGVmaW5lIEE2NEZfUzE5KHgpCSgoKHVpbnQzMl90KSh4KSAmIDB4N2ZmZmZ1KSA8PCA1KQotLSNk ZWZpbmUgQTY0Rl9TMTQoeCkJKCh4KSA8PCA1KQotKyNkZWZpbmUgQTY0Rl9TMTQoeCkJKCgodWlu dDMyX3QpKHgpICYgMHgzZmZmdSkgPDwgNSkKLSAjZGVmaW5lIEE2NEZfUzkoeCkJKCh4KSA8PCAx MikKLSAjZGVmaW5lIEE2NEZfQklUKHgpCSgoeCkgPDwgMTkpCi0gI2RlZmluZSBBNjRGX1NIKHNo LCB4KQkoKChzaCkgPDwgMjIpIHwgKCh4KSA8PCAxMCkpCi1AQCAtMTQ1LDYgKzE0NSw5IEBAIHN0 YXRpYyBMSl9BSU5MSU5FIHVpbnQzMl90ICpleGl0c3R1Yl90cmFjZV9hZGRyXyh1aW50MzJfdCAq cCwgdWludDMyX3QgZXhpdG5vKQotICNkZWZpbmUgQTY0Rl9MU0wxNih4KQkoKCh4KSAvIDE2KSA8 PCAyMSkKLSAjZGVmaW5lIEE2NEZfQlNIKHNoKQkoKHNoKSA8PCAxMCkKLSAKLSsvKiBDaGVjayBm b3IgdmFsaWQgZmllbGQgcmFuZ2UuICovCi0rI2RlZmluZSBBNjRGX1NfT0soeCwgYikJKCgoKHgp ICsgKDEgPDwgKGItMSkpKSA+PiAoYikpID09IDApCi0rCi0gdHlwZWRlZiBlbnVtIEE2NElucyB7 Ci0gICBBNjRJX1MgPSAweDIwMDAwMDAwLAotICAgQTY0SV9YID0gMHg4MDAwMDAwMCwKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvYWFyY2g2NC1yZWdpc3Rlci1hbGxvY2F0aW9u LWJ1Zy1maXgucGF0Y2ggYi9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNoNjQtcmVnaXN0ZXIt YWxsb2NhdGlvbi1idWctZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj MzAyNjQ3ODY3NTVmLi4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMv YWFyY2g2NC1yZWdpc3Rlci1hbGxvY2F0aW9uLWJ1Zy1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyOSArMCwwIEBACi1Gcm9tOiBKYXNvbiBUZXBsaXR6IDxqYXNvbkB0ZW5zeXIuY29tPgot RGF0ZTogTW9uLCA5IE9jdCAyMDE3IDIzOjAzOjA5ICswMDAwCi1TdWJqZWN0OiBGaXggcmVnaXN0 ZXIgYWxsb2NhdGlvbiBidWcgaW4gYXJtNjQKLQotLS0tCi0gc3JjL2xqX2FzbV9hcm02NC5oIHwg MyArLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgc3JjL2xqX2FzbV9hcm02NC5oIHNyYy9sal9hc21fYXJtNjQuaAotaW5kZXgg OGZkOTJlNy4uNTQ5ZjhhNiAxMDA2NDQKLS0tLSBhL3NyYy9sal9hc21fYXJtNjQuaAotKysrIGIv c3JjL2xqX2FzbV9hcm02NC5oCi1AQCAtODcxLDcgKzg3MSw3IEBAIHN0YXRpYyB2b2lkIGFzbV9o cmVmayhBU01TdGF0ZSAqYXMsIElSSW5zICppcikKLSAgIGludCBiaWdvZnMgPSAhZW1pdF9jaGVj a29mcyhBNjRJX0xEUngsIG9mcyk7Ci0gICBSZWdTZXQgYWxsb3cgPSBSU0VUX0dQUjsKLSAgIFJl ZyBkZXN0ID0gKHJhX3VzZWQoaXIpIHx8IGJpZ29mcykgPyByYV9kZXN0KGFzLCBpciwgUlNFVF9H UFIpIDogUklEX05PTkU7Ci0tICBSZWcgbm9kZSA9IHJhX2FsbG9jMShhcywgaXItPm9wMSwgYWxs b3cpOwotKyAgUmVnIG5vZGUgPSByYV9hbGxvYzEoYXMsIGlyLT5vcDEsIHJhX2hhc3JlZyhkZXN0 KSA/IHJzZXRfY2xlYXIoYWxsb3csIGRlc3QpIDogYWxsb3cpOwotICAgUmVnIGtleSA9IHJhX3Nj cmF0Y2goYXMsIHJzZXRfY2xlYXIoYWxsb3csIG5vZGUpKTsKLSAgIFJlZyBpZHggPSBub2RlOwot ICAgdWludDY0X3QgazsKLUBAIC04NzksNyArODc5LDYgQEAgc3RhdGljIHZvaWQgYXNtX2hyZWZr KEFTTVN0YXRlICphcywgSVJJbnMgKmlyKQotICAgcnNldF9jbGVhcihhbGxvdywga2V5KTsKLSAg IGlmIChiaWdvZnMpIHsKLSAgICAgaWR4ID0gZGVzdDsKLS0gICAgcnNldF9jbGVhcihhbGxvdywg ZGVzdCk7Ci0gICAgIGtvZnMgPSAoaW50MzJfdClvZmZzZXRvZihOb2RlLCBrZXkpOwotICAgfSBl bHNlIGlmIChyYV9oYXNyZWcoZGVzdCkpIHsKLSAgICAgZW1pdF9vcGsoYXMsIEE2NElfQUREeCwg ZGVzdCwgbm9kZSwgb2ZzLCBhbGxvdyk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC9wYXRj aGVzL2U5YWYxYWJlYzU0MmU2Zjk4NTFmZjIzNjhlN2YxOTZiNjM4MmE0NGMucGF0Y2ggYi9zcmNw a2dzL0x1YUpJVC9wYXRjaGVzL2U5YWYxYWJlYzU0MmU2Zjk4NTFmZjIzNjhlN2YxOTZiNjM4MmE0 NGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMTc4NjZjMzkyY2YuLjAw MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9lOWFmMWFiZWM1NDJlNmY5 ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYyICsw LDAgQEAKLUZyb20gZTlhZjFhYmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0YyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pa2UgUGFsbCA8bWlrZT4KLURhdGU6IFdlZCwg MzAgU2VwIDIwMjAgMDE6MzE6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQg Zm9yIGZ1bGwtcmFuZ2UgNjQgYml0IGxpZ2h0dXNlcmRhdGEuCi0KLS0tLQotIGRvYy9zdGF0dXMu aHRtbCAgIHwgMTEgLS0tLS0tLS0tCi0gc3JjL2ppdC9kdW1wLmx1YSAgfCAgNCArKystCi0gc3Jj L2xpYl9kZWJ1Zy5jICAgfCAxMiArKysrKy0tLS0tCi0gc3JjL2xpYl9qaXQuYyAgICAgfCAxNCAr KysrKystLS0tLS0KLSBzcmMvbGliX3BhY2thZ2UuYyB8ICA4ICsrKy0tLS0KLSBzcmMvbGliX3N0 cmluZy5jICB8ICAyICstCi0gc3JjL2xqX2FwaS5jICAgICAgfCA0MCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KLSBzcmMvbGpfY2NhbGwuYyAgICB8ICAyICstCi0gc3JjL2xqX2Nj b252LmMgICAgfCAgMiArLQotIHNyYy9sal9jcmVjb3JkLmMgIHwgIDYgKystLS0KLSBzcmMvbGpf ZGlzcGF0Y2guYyB8ICAyICstCi0gc3JjL2xqX2lyLmMgICAgICAgfCAgNiArKystLQotIHNyYy9s al9vYmouYyAgICAgIHwgIDUgKysrLS0KLSBzcmMvbGpfb2JqLmggICAgICB8IDU3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2xqX3NuYXAuYyAg ICAgfCAgOSArKysrKysrLQotIHNyYy9sal9zdGF0ZS5jICAgIHwgIDYgKysrKysKLSBzcmMvbGpf c3RyZm10LmMgICB8ICAyICstCi0gMTcgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKyks IDY3IGRlbGV0aW9ucygtKQotCi0jZGlmZiAtLWdpdCBhL2RvYy9zdGF0dXMuaHRtbCBiL2RvYy9z dGF0dXMuaHRtbAotI2luZGV4IDBhYWZlMTNhMi4uZmQwYWU4YmFlIDEwMDY0NAotIy0tLSBhL2Rv Yy9zdGF0dXMuaHRtbAotIysrKyBiL2RvYy9zdGF0dXMuaHRtbAotI0BAIC05MSwxNyArOTEsNiBA QCA8aDI+Q3VycmVudCBTdGF0dXM8L2gyPgotIyA8dHQ+bHVhX2F0cGFuaWM8L3R0PiBvbiB4NjQu IFRoaXMgaXNzdWUgd2lsbCBiZSBmaXhlZCB3aXRoIHRoZSBuZXcKLSMgZ2FyYmFnZSBjb2xsZWN0 b3IuCi0jIDwvbGk+Ci0jLTxsaT4KLSMtTHVhSklUIG9uIDY0IGJpdCBzeXN0ZW1zIHByb3ZpZGVz IGEgPGI+bGltaXRlZCByYW5nZTwvYj4gb2YgNDcgYml0cyBmb3IgdGhlCi0jLTxiPmxlZ2FjeSA8 dHQ+bGlnaHR1c2VyZGF0YTwvdHQ+PC9iPiBkYXRhIHR5cGUuCi0jLVRoaXMgaXMgb25seSByZWxl dmFudCBvbiB4NjQgc3lzdGVtcyB3aGljaCB1c2UgdGhlIG5lZ2F0aXZlIHBhcnQgb2YgdGhlCi0j LXZpcnR1YWwgYWRkcmVzcyBzcGFjZSBpbiB1c2VyIG1vZGUsIGUuZy4gU29sYXJpcy94NjQsIGFu ZCBvbiBBUk02NCBzeXN0ZW1zCi0jLWNvbmZpZ3VyZWQgd2l0aCBhIDQ4IGJpdCBvciA1MiBiaXQg VkEuCi0jLUF2b2lkIHVzaW5nIDx0dD5saWdodHVzZXJkYXRhPC90dD4gdG8gaG9sZCBwb2ludGVy cyB0aGF0IG1heSBwb2ludCBvdXRzaWRlCi0jLW9mIHRoYXQgcmFuZ2UsIGUuZy4gdmFyaWFibGVz IG9uIHRoZSBzdGFjay4gSW4gZ2VuZXJhbCwgYXZvaWQgdGhpcyBkYXRhCi0jLXR5cGUgZm9yIG5l dyBjb2RlIGFuZCByZXBsYWNlIGl0IHdpdGggKG11Y2ggbW9yZSBwZXJmb3JtYW50KSBGRkkgYmlu ZGluZ3MuCi0jLUZGSSBjZGF0YSBwb2ludGVycyBjYW4gYWRkcmVzcyB0aGUgZnVsbCA2NCBiaXQg cmFuZ2UuCi0jLTwvbGk+Ci0jIDwvdWw+Ci0jIDxiciBjbGFzcz0iZmx1c2giPgotIyA8L2Rpdj4K LUluZGV4OiBsdWFqaXQvc3JjL2ppdC9kdW1wLmx1YQotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5v cmlnL3NyYy9qaXQvZHVtcC5sdWEKLSsrKyBsdWFqaXQvc3JjL2ppdC9kdW1wLmx1YQotQEAgLTMx NSw3ICszMTUsOSBAQAotICAgbG9jYWwgdG4gPSB0eXBlKGspCi0gICBsb2NhbCBzCi0gICBpZiB0 biA9PSAibnVtYmVyIiB0aGVuCi0tICAgIGlmIGJhbmQoc24gb3IgMCwgMHgzMDAwMCkgfj0gMCB0 aGVuCi0rICAgIGlmIHQgPCAxMiB0aGVuCi0rICAgICAgcyA9IGsgPT0gMCBhbmQgIk5VTEwiIG9y IGZvcm1hdCgiWzB4JTA4eF0iLCBrKQotKyAgICBlbHNlaWYgYmFuZChzbiBvciAwLCAweDMwMDAw KSB+PSAwIHRoZW4KLSAgICAgICBzID0gYmFuZChzbiwgMHgyMDAwMCkgfj0gMCBhbmQgImNvbnRw YyIgb3IgImZ0c3oiCi0gICAgIGVsc2VpZiBrID09IDJeNTIrMl41MSB0aGVuCi0gICAgICAgcyA9 ICJiaWFzIgotSW5kZXg6IGx1YWppdC9zcmMvbGliX2RlYnVnLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBs dWFqaXQub3JpZy9zcmMvbGliX2RlYnVnLmMKLSsrKyBsdWFqaXQvc3JjL2xpYl9kZWJ1Zy5jCi1A QCAtMjMxLDggKzIzMSw4IEBACi0gICBpbnQzMl90IG4gPSBsal9saWJfY2hlY2tpbnQoTCwgMikg LSAxOwotICAgaWYgKCh1aW50MzJfdCluID49IGZuLT5sLm51cHZhbHVlcykKLSAgICAgbGpfZXJy X2FyZyhMLCAyLCBMSl9FUlJfSURYUk5HKTsKLS0gIHNldGxpZ2h0dWRWKEwtPnRvcC0xLCBpc2x1 YWZ1bmMoZm4pID8gKHZvaWQgKilnY3JlZihmbi0+bC51dnB0cltuXSkgOgotLQkJCQkJKHZvaWQg KikmZm4tPmMudXB2YWx1ZVtuXSk7Ci0rICBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEoTCwgaXNsdWFm dW5jKGZuKSA/ICh2b2lkICopZ2NyZWYoZm4tPmwudXZwdHJbbl0pIDoKLSsJCQkJCSAgICh2b2lk ICopJmZuLT5jLnVwdmFsdWVbbl0pOwotICAgcmV0dXJuIDE7Ci0gfQotIAotQEAgLTI4MywxMyAr MjgzLDEzIEBACi0gCi0gLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0gCi0tI2RlZmluZSBLRVlfSE9P SwkoKHZvaWQgKikweDMwMDQpCi0rI2RlZmluZSBLRVlfSE9PSwkoVTY0eCg4MDAwMDAwMCwwMDAw MDAwMCl8J2gnKQotIAotIHN0YXRpYyB2b2lkIGhvb2tmKGx1YV9TdGF0ZSAqTCwgbHVhX0RlYnVn ICphcikKLSB7Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaG9va25hbWVzW10gPQotICAg ICB7ImNhbGwiLCAicmV0dXJuIiwgImxpbmUiLCAiY291bnQiLCAidGFpbCByZXR1cm4ifTsKLS0g IGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBLRVlfSE9PSyk7Ci0rICAoTC0+dG9wKyspLT51NjQg PSBLRVlfSE9PSzsKLSAgIGx1YV9yYXdnZXQoTCwgTFVBX1JFR0lTVFJZSU5ERVgpOwotICAgaWYg KGx1YV9pc2Z1bmN0aW9uKEwsIC0xKSkgewotICAgICBsdWFfcHVzaHN0cmluZyhMLCBob29rbmFt ZXNbKGludClhci0+ZXZlbnRdKTsKLUBAIC0zMzQsNyArMzM0LDcgQEAKLSAgICAgY291bnQgPSBs dWFMX29wdGludChMLCBhcmcrMywgMCk7Ci0gICAgIGZ1bmMgPSBob29rZjsgbWFzayA9IG1ha2Vt YXNrKHNtYXNrLCBjb3VudCk7Ci0gICB9Ci0tICBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEoTCwgS0VZ X0hPT0spOwotKyAgKEwtPnRvcCsrKS0+dTY0ID0gS0VZX0hPT0s7Ci0gICBsdWFfcHVzaHZhbHVl KEwsIGFyZysxKTsKLSAgIGx1YV9yYXdzZXQoTCwgTFVBX1JFR0lTVFJZSU5ERVgpOwotICAgbHVh X3NldGhvb2soTCwgZnVuYywgbWFzaywgY291bnQpOwotQEAgLTM0OSw3ICszNDksNyBAQAotICAg aWYgKGhvb2sgIT0gTlVMTCAmJiBob29rICE9IGhvb2tmKSB7ICAvKiBleHRlcm5hbCBob29rPyAq LwotICAgICBsdWFfcHVzaGxpdGVyYWwoTCwgImV4dGVybmFsIGhvb2siKTsKLSAgIH0gZWxzZSB7 Ci0tICAgIGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBLRVlfSE9PSyk7Ci0rICAgIChMLT50b3Ar KyktPnU2NCA9IEtFWV9IT09LOwotICAgICBsdWFfcmF3Z2V0KEwsIExVQV9SRUdJU1RSWUlOREVY KTsgICAvKiBnZXQgaG9vayAqLwotICAgfQotICAgbHVhX3B1c2hzdHJpbmcoTCwgdW5tYWtlbWFz ayhtYXNrLCBidWZmKSk7Ci1JbmRleDogbHVhaml0L3NyYy9saWJfaml0LmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBsdWFqaXQub3JpZy9zcmMvbGliX2ppdC5jCi0rKysgbHVhaml0L3NyYy9saWJfaml0LmMK LUBAIC01NDAsMTUgKzU0MCwxNSBAQAotIAotIC8qIE5vdCBsb2FkZWQgYnkgZGVmYXVsdCwgdXNl OiBsb2NhbCBwcm9maWxlID0gcmVxdWlyZSgiaml0LnByb2ZpbGUiKSAqLwotIAotLXN0YXRpYyBj b25zdCBjaGFyIEtFWV9QUk9GSUxFX1RIUkVBRCA9ICd0JzsKLS1zdGF0aWMgY29uc3QgY2hhciBL RVlfUFJPRklMRV9GVU5DID0gJ2YnOwotKyNkZWZpbmUgS0VZX1BST0ZJTEVfVEhSRUFECShVNjR4 KDgwMDAwMDAwLDAwMDAwMDAwKXwndCcpCi0rI2RlZmluZSBLRVlfUFJPRklMRV9GVU5DCShVNjR4 KDgwMDAwMDAwLDAwMDAwMDAwKXwnZicpCi0gCi0gc3RhdGljIHZvaWQgaml0X3Byb2ZpbGVfY2Fs bGJhY2sobHVhX1N0YXRlICpMMiwgbHVhX1N0YXRlICpMLCBpbnQgc2FtcGxlcywKLSAJCQkJIGlu dCB2bXN0YXRlKQotIHsKLSAgIFRWYWx1ZSBrZXk7Ci0gICBjVFZhbHVlICp0djsKLS0gIHNldGxp Z2h0dWRWKCZrZXksICh2b2lkICopJktFWV9QUk9GSUxFX0ZVTkMpOwotKyAga2V5LnU2NCA9IEtF WV9QUk9GSUxFX0ZVTkM7Ci0gICB0diA9IGxqX3RhYl9nZXQoTCwgdGFiVihyZWdpc3RyeShMKSks ICZrZXkpOwotICAgaWYgKHR2aXNmdW5jKHR2KSkgewotICAgICBjaGFyIHZtc3QgPSAoY2hhcil2 bXN0YXRlOwotQEAgLTU3NSw5ICs1NzUsOSBAQAotICAgbHVhX1N0YXRlICpMMiA9IGx1YV9uZXd0 aHJlYWQoTCk7ICAvKiBUaHJlYWQgdGhhdCBydW5zIHByb2ZpbGVyIGNhbGxiYWNrLiAqLwotICAg VFZhbHVlIGtleTsKLSAgIC8qIEFuY2hvciB0aHJlYWQgYW5kIGZ1bmN0aW9uIGluIHJlZ2lzdHJ5 LiAqLwotLSAgc2V0bGlnaHR1ZFYoJmtleSwgKHZvaWQgKikmS0VZX1BST0ZJTEVfVEhSRUFEKTsK LSsgIGtleS51NjQgPSBLRVlfUFJPRklMRV9USFJFQUQ7Ci0gICBzZXR0aHJlYWRWKEwsIGxqX3Rh Yl9zZXQoTCwgcmVnaXN0cnksICZrZXkpLCBMMik7Ci0tICBzZXRsaWdodHVkVigma2V5LCAodm9p ZCAqKSZLRVlfUFJPRklMRV9GVU5DKTsKLSsgIGtleS51NjQgPSBLRVlfUFJPRklMRV9GVU5DOwot ICAgc2V0ZnVuY1YoTCwgbGpfdGFiX3NldChMLCByZWdpc3RyeSwgJmtleSksIGZ1bmMpOwotICAg bGpfZ2NfYW55YmFycmllcnQoTCwgcmVnaXN0cnkpOwotICAgbHVhSklUX3Byb2ZpbGVfc3RhcnQo TCwgbW9kZSA/IHN0cmRhdGEobW9kZSkgOiAiIiwKLUBAIC01OTIsOSArNTkyLDkgQEAKLSAgIFRW YWx1ZSBrZXk7Ci0gICBsdWFKSVRfcHJvZmlsZV9zdG9wKEwpOwotICAgcmVnaXN0cnkgPSB0YWJW KHJlZ2lzdHJ5KEwpKTsKLS0gIHNldGxpZ2h0dWRWKCZrZXksICh2b2lkICopJktFWV9QUk9GSUxF X1RIUkVBRCk7Ci0rICBrZXkudTY0ID0gS0VZX1BST0ZJTEVfVEhSRUFEOwotICAgc2V0bmlsVihs al90YWJfc2V0KEwsIHJlZ2lzdHJ5LCAma2V5KSk7Ci0tICBzZXRsaWdodHVkVigma2V5LCAodm9p ZCAqKSZLRVlfUFJPRklMRV9GVU5DKTsKLSsgIGtleS51NjQgPSBLRVlfUFJPRklMRV9GVU5DOwot ICAgc2V0bmlsVihsal90YWJfc2V0KEwsIHJlZ2lzdHJ5LCAma2V5KSk7Ci0gICBsal9nY19hbnli YXJyaWVydChMLCByZWdpc3RyeSk7Ci0gICByZXR1cm4gMDsKLUluZGV4OiBsdWFqaXQvc3JjL2xp Yl9wYWNrYWdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGliX3BhY2thZ2Uu YwotKysrIGx1YWppdC9zcmMvbGliX3BhY2thZ2UuYwotQEAgLTM5OCw3ICszOTgsNyBAQAotIAot IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotIAotLSNkZWZpbmUgc2VudGluZWwJKCh2b2lkICopMHg0 MDA0KQotKyNkZWZpbmUgS0VZX1NFTlRJTkVMCShVNjR4KDgwMDAwMDAwLDAwMDAwMDAwKXwncycp Ci0gCi0gc3RhdGljIGludCBsal9jZl9wYWNrYWdlX3JlcXVpcmUobHVhX1N0YXRlICpMKQotIHsK LUBAIC00MDgsNyArNDA4LDcgQEAKLSAgIGx1YV9nZXRmaWVsZChMLCBMVUFfUkVHSVNUUllJTkRF WCwgIl9MT0FERUQiKTsKLSAgIGx1YV9nZXRmaWVsZChMLCAyLCBuYW1lKTsKLSAgIGlmIChsdWFf dG9ib29sZWFuKEwsIC0xKSkgeyAgLyogaXMgaXQgdGhlcmU/ICovCi0tICAgIGlmIChsdWFfdG91 c2VyZGF0YShMLCAtMSkgPT0gc2VudGluZWwpICAvKiBjaGVjayBsb29wcyAqLwotKyAgICBpZiAo KEwtPnRvcC0xKS0+dTY0ID09IEtFWV9TRU5USU5FTCkgIC8qIGNoZWNrIGxvb3BzICovCi0gICAg ICAgbHVhTF9lcnJvcihMLCAibG9vcCBvciBwcmV2aW91cyBlcnJvciBsb2FkaW5nIG1vZHVsZSAi IExVQV9RUywgbmFtZSk7Ci0gICAgIHJldHVybiAxOyAgLyogcGFja2FnZSBpcyBhbHJlYWR5IGxv YWRlZCAqLwotICAgfQotQEAgLTQzMSwxNCArNDMxLDE0IEBACi0gICAgIGVsc2UKLSAgICAgICBs dWFfcG9wKEwsIDEpOwotICAgfQotLSAgbHVhX3B1c2hsaWdodHVzZXJkYXRhKEwsIHNlbnRpbmVs KTsKLSsgIChMLT50b3ArKyktPnU2NCA9IEtFWV9TRU5USU5FTDsKLSAgIGx1YV9zZXRmaWVsZChM LCAyLCBuYW1lKTsgIC8qIF9MT0FERURbbmFtZV0gPSBzZW50aW5lbCAqLwotICAgbHVhX3B1c2hz dHJpbmcoTCwgbmFtZSk7ICAvKiBwYXNzIG5hbWUgYXMgYXJndW1lbnQgdG8gbW9kdWxlICovCi0g ICBsdWFfY2FsbChMLCAxLCAxKTsgIC8qIHJ1biBsb2FkZWQgbW9kdWxlICovCi0gICBpZiAoIWx1 YV9pc25pbChMLCAtMSkpICAvKiBub24tbmlsIHJldHVybj8gKi8KLSAgICAgbHVhX3NldGZpZWxk KEwsIDIsIG5hbWUpOyAgLyogX0xPQURFRFtuYW1lXSA9IHJldHVybmVkIHZhbHVlICovCi0gICBs dWFfZ2V0ZmllbGQoTCwgMiwgbmFtZSk7Ci0tICBpZiAobHVhX3RvdXNlcmRhdGEoTCwgLTEpID09 IHNlbnRpbmVsKSB7ICAgLyogbW9kdWxlIGRpZCBub3Qgc2V0IGEgdmFsdWU/ICovCi0rICBpZiAo KEwtPnRvcC0xKS0+dTY0ID09IEtFWV9TRU5USU5FTCkgeyAgIC8qIG1vZHVsZSBkaWQgbm90IHNl dCBhIHZhbHVlPyAqLwotICAgICBsdWFfcHVzaGJvb2xlYW4oTCwgMSk7ICAvKiB1c2UgdHJ1ZSBh cyByZXN1bHQgKi8KLSAgICAgbHVhX3B1c2h2YWx1ZShMLCAtMSk7ICAvKiBleHRyYSBjb3B5IHRv IGJlIHJldHVybmVkICovCi0gICAgIGx1YV9zZXRmaWVsZChMLCAyLCBuYW1lKTsgIC8qIF9MT0FE RURbbmFtZV0gPSB0cnVlICovCi1JbmRleDogbHVhaml0L3NyYy9saWJfc3RyaW5nLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGliX3N0cmluZy5jCi0rKysgbHVhaml0L3NyYy9s aWJfc3RyaW5nLmMKLUBAIC03MTQsNyArNzE0LDcgQEAKLSAJbGpfc3RyZm10X3B1dGZjaGFyKHNi LCBzZiwgbGpfbGliX2NoZWNraW50KEwsIGFyZykpOwotIAlicmVhazsKLSAgICAgICBjYXNlIFNU UkZNVF9QVFI6ICAvKiBObyBmb3JtYXR0aW5nLiAqLwotLQlsal9zdHJmbXRfcHV0cHRyKHNiLCBs al9vYmpfcHRyKEwtPmJhc2UrYXJnLTEpKTsKLSsJbGpfc3RyZm10X3B1dHB0cihzYiwgbGpfb2Jq X3B0cihHKEwpLCBMLT5iYXNlK2FyZy0xKSk7Ci0gCWJyZWFrOwotICAgICAgIGRlZmF1bHQ6Ci0g CWx1YV9hc3NlcnQoMCk7Ci1JbmRleDogbHVhaml0L3NyYy9sal9hcGkuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGx1YWppdC5vcmlnL3NyYy9sal9hcGkuYwotKysrIGx1YWppdC9zcmMvbGpfYXBpLmMKLUBA IC01OTUsNyArNTk1LDcgQEAKLSAgIGlmICh0dmlzdWRhdGEobykpCi0gICAgIHJldHVybiB1ZGRh dGEodWRhdGFWKG8pKTsKLSAgIGVsc2UgaWYgKHR2aXNsaWdodHVkKG8pKQotLSAgICByZXR1cm4g bGlnaHR1ZFYobyk7Ci0rICAgIHJldHVybiBsaWdodHVkVihHKEwpLCBvKTsKLSAgIGVsc2UKLSAg ICAgcmV0dXJuIE5VTEw7Ci0gfQotQEAgLTYwOCw3ICs2MDgsNyBAQAotIAotIExVQV9BUEkgY29u c3Qgdm9pZCAqbHVhX3RvcG9pbnRlcihsdWFfU3RhdGUgKkwsIGludCBpZHgpCi0gewotLSAgcmV0 dXJuIGxqX29ial9wdHIoaW5kZXgyYWRyKEwsIGlkeCkpOwotKyAgcmV0dXJuIGxqX29ial9wdHIo RyhMKSwgaW5kZXgyYWRyKEwsIGlkeCkpOwotIH0KLSAKLSAvKiAtLSBTdGFjayBzZXR0ZXJzIChv YmplY3QgY3JlYXRpb24pIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K LUBAIC02OTQsOSArNjk0LDM4IEBACi0gICBpbmNyX3RvcChMKTsKLSB9Ci0gCi0rI2lmIExKXzY0 Ci0rc3RhdGljIHZvaWQgKmxpZ2h0dWRfaW50ZXJuKGx1YV9TdGF0ZSAqTCwgdm9pZCAqcCkKLSt7 Ci0rICBnbG9iYWxfU3RhdGUgKmcgPSBHKEwpOwotKyAgdWludDY0X3QgdSA9ICh1aW50NjRfdClw OwotKyAgdWludDMyX3QgdXAgPSBsaWdodHVkdXAodSk7Ci0rICB1aW50MzJfdCAqc2VnbWFwID0g bXJlZihnLT5nYy5saWdodHVkc2VnLCB1aW50MzJfdCk7Ci0rICBNU2l6ZSBzZWdudW0gPSBnLT5n Yy5saWdodHVkbnVtOwotKyAgaWYgKHNlZ21hcCkgewotKyAgICBNU2l6ZSBzZWc7Ci0rICAgIGZv ciAoc2VnID0gMDsgc2VnIDw9IHNlZ251bTsgc2VnKyspCi0rICAgICAgaWYgKHNlZ21hcFtzZWdd ID09IHVwKSAgLyogRmFzdCBwYXRoLiAqLwotKwlyZXR1cm4gKHZvaWQgKikoKCh1aW50NjRfdClz ZWcgPDwgTEpfTElHSFRVRF9CSVRTX0xPKSB8IGxpZ2h0dWRsbyh1KSk7Ci0rICAgIHNlZ251bSsr OwotKyAgfQotKyAgaWYgKCEoKHNlZ251bS0xKSAmIHNlZ251bSkgJiYgc2VnbnVtICE9IDEpIHsK LSsgICAgaWYgKHNlZ251bSA+PSAoMSA8PCBMSl9MSUdIVFVEX0JJVFNfU0VHKSkgbGpfZXJyX21z ZyhMLCBMSl9FUlJfQkFETFUpOwotKyAgICBsal9tZW1fcmVhbGxvY3ZlYyhMLCBzZWdtYXAsIHNl Z251bSwgc2VnbnVtID8gMipzZWdudW0gOiAydSwgdWludDMyX3QpOwotKyAgICBzZXRtcmVmKGct PmdjLmxpZ2h0dWRzZWcsIHNlZ21hcCk7Ci0rICB9Ci0rICBnLT5nYy5saWdodHVkbnVtID0gc2Vn bnVtOwotKyAgc2VnbWFwW3NlZ251bV0gPSB1cDsKLSsgIHJldHVybiAodm9pZCAqKSgoKHVpbnQ2 NF90KXNlZ251bSA8PCBMSl9MSUdIVFVEX0JJVFNfTE8pIHwgbGlnaHR1ZGxvKHUpKTsKLSt9Ci0r I2VuZGlmCi0rCi0gTFVBX0FQSSB2b2lkIGx1YV9wdXNobGlnaHR1c2VyZGF0YShsdWFfU3RhdGUg KkwsIHZvaWQgKnApCi0gewotLSAgc2V0bGlnaHR1ZFYoTC0+dG9wLCBjaGVja2xpZ2h0dWRwdHIo TCwgcCkpOwotKyNpZiBMSl82NAotKyAgcCA9IGxpZ2h0dWRfaW50ZXJuKEwsIHApOwotKyNlbmRp ZgotKyAgc2V0cmF3bGlnaHR1ZFYoTC0+dG9wLCBwKTsKLSAgIGluY3JfdG9wKEwpOwotIH0KLSAK LUBAIC0xMTM4LDcgKzExNjcsMTAgQEAKLSAgIGZuLT5jLmYgPSBmdW5jOwotICAgc2V0ZnVuY1Yo TCwgdG9wKyssIGZuKTsKLSAgIGlmIChMSl9GUjIpIHNldG5pbFYodG9wKyspOwotLSAgc2V0bGln aHR1ZFYodG9wKyssIGNoZWNrbGlnaHR1ZHB0cihMLCB1ZCkpOwotKyNpZiBMSl82NAotKyAgdWQg PSBsaWdodHVkX2ludGVybihMLCB1ZCk7Ci0rI2VuZGlmCi0rICBzZXRyYXdsaWdodHVkVih0b3Ar KywgdWQpOwotICAgY2ZyYW1lX25yZXMoTC0+Y2ZyYW1lKSA9IDErMDsgIC8qIFplcm8gcmVzdWx0 cy4gKi8KLSAgIEwtPnRvcCA9IHRvcDsKLSAgIHJldHVybiB0b3AtMTsgIC8qIE5vdyBjYWxsIHRo ZSBuZXdseSBhbGxvY2F0ZWQgQyBmdW5jdGlvbi4gKi8KLUluZGV4OiBsdWFqaXQvc3JjL2xqX2Nj YWxsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfY2NhbGwuYwotKysrIGx1 YWppdC9zcmMvbGpfY2NhbGwuYwotQEAgLTEzMTQsNyArMTMxNCw3IEBACi0gICAgIGxqX3ZtX2Zm aV9jYWxsKCZjYyk7Ci0gICAgIGlmIChjdHMtPmNiLnNsb3QgIT0gfjB1KSB7ICAvKiBCbGFja2xp c3QgZnVuY3Rpb24gdGhhdCBjYWxsZWQgYSBjYWxsYmFjay4gKi8KLSAgICAgICBUVmFsdWUgdHY7 Ci0tICAgICAgc2V0bGlnaHR1ZFYoJnR2LCAodm9pZCAqKWNjLmZ1bmMpOwotKyAgICAgIHR2LnU2 NCA9ICgodWludHB0cl90KSh2b2lkICopY2MuZnVuYyA+PiAyKSB8IFU2NHgoODAwMDAwMDAwLCAw MDAwMDAwMCk7Ci0gICAgICAgc2V0Ym9vbFYobGpfdGFiX3NldChMLCBjdHMtPm1pc2NtYXAsICZ0 diksIDEpOwotICAgICB9Ci0gICAgIGN0ID0gKENUeXBlICopKChpbnRwdHJfdCljdCsoaW50cHRy X3QpY3RzLT50YWIpOyAgLyogTWF5IGJlIHJlYWxsb2NhdGVkLiAqLwotSW5kZXg6IGx1YWppdC9z cmMvbGpfY2NvbnYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9jY29udi5j Ci0rKysgbHVhaml0L3NyYy9sal9jY29udi5jCi1AQCAtNjExLDcgKzYxMSw3IEBACi0gICAgIGlm ICh1ZC0+dWR0eXBlID09IFVEVFlQRV9JT19GSUxFKQotICAgICAgIHRtcHB0ciA9ICoodm9pZCAq Kil0bXBwdHI7Ci0gICB9IGVsc2UgaWYgKHR2aXNsaWdodHVkKG8pKSB7Ci0tICAgIHRtcHB0ciA9 IGxpZ2h0dWRWKG8pOwotKyAgICB0bXBwdHIgPSBsaWdodHVkVihjdHMtPmcsIG8pOwotICAgfSBl bHNlIGlmICh0dmlzZnVuYyhvKSkgewotICAgICB2b2lkICpwID0gbGpfY2NhbGxiYWNrX25ldyhj dHMsIGQsIGZ1bmNWKG8pKTsKLSAgICAgaWYgKHApIHsKLUluZGV4OiBsdWFqaXQvc3JjL2xqX2Ny ZWNvcmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9jcmVjb3JkLmMKLSsr KyBsdWFqaXQvc3JjL2xqX2NyZWNvcmQuYwotQEAgLTY0Myw4ICs2NDMsNyBAQAotICAgICB9Ci0g ICB9IGVsc2UgaWYgKHRyZWZfaXNsaWdodHVkKHNwKSkgewotICNpZiBMSl82NAotLSAgICBzcCA9 IGVtaXRpcihJUlQoSVJfQkFORCwgSVJUX1A2NCksIHNwLAotLQkJbGpfaXJfa2ludDY0KEosIFU2 NHgoMDAwMDdmZmYsZmZmZmZmZmYpKSk7Ci0rICAgIGxqX3RyYWNlX2VycihKLCBMSl9UUkVSUl9O WUlDT05WKTsKLSAjZW5kaWYKLSAgIH0gZWxzZSB7ICAvKiBOWUk6IHRyZWZfaXN0YWIoc3ApLiAq LwotICAgICBJUlR5cGUgdDsKLUBAIC0xMjA5LDggKzEyMDgsNyBAQAotICAgICBUUmVmIHRyOwot ICAgICBUVmFsdWUgdHY7Ci0gICAgIC8qIENoZWNrIGZvciBibGFja2xpc3RlZCBDIGZ1bmN0aW9u cyB0aGF0IG1pZ2h0IGNhbGwgYSBjYWxsYmFjay4gKi8KLS0gICAgc2V0bGlnaHR1ZFYoJnR2LAot LQkJY2RhdGFfZ2V0cHRyKGNkYXRhcHRyKGNkKSwgKExKXzY0ICYmIHRwID09IElSVF9QNjQpID8g OCA6IDQpKTsKLSsgICAgdHYudTY0ID0gKCh1aW50cHRyX3QpY2RhdGFfZ2V0cHRyKGNkYXRhcHRy KGNkKSwgKExKXzY0ICYmIHRwID09IElSVF9QNjQpID8gOCA6IDQpID4+IDIpIHwgVTY0eCg4MDAw MDAwMDAsIDAwMDAwMDAwKTsKLSAgICAgaWYgKHR2aXN0cnVlKGxqX3RhYl9nZXQoSi0+TCwgY3Rz LT5taXNjbWFwLCAmdHYpKSkKLSAgICAgICBsal90cmFjZV9lcnIoSiwgTEpfVFJFUlJfQkxBQ0tM KTsKLSAgICAgaWYgKGN0eXBlX2lzdm9pZChjdHItPmluZm8pKSB7Ci1JbmRleDogbHVhaml0L3Ny Yy9sal9kaXNwYXRjaC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2Rpc3Bh dGNoLmMKLSsrKyBsdWFqaXQvc3JjL2xqX2Rpc3BhdGNoLmMKLUBAIC0zMDIsNyArMzAyLDcgQEAK LSAgICAgICBpZiAoaWR4ICE9IDApIHsKLSAJY1RWYWx1ZSAqdHYgPSBpZHggPiAwID8gTC0+YmFz ZSArIChpZHgtMSkgOiBMLT50b3AgKyBpZHg7Ci0gCWlmICh0dmlzbGlnaHR1ZCh0dikpCi0tCSAg Zy0+d3JhcGYgPSAobHVhX0NGdW5jdGlvbilsaWdodHVkVih0dik7Ci0rCSAgZy0+d3JhcGYgPSAo bHVhX0NGdW5jdGlvbilsaWdodHVkVihnLCB0dik7Ci0gCWVsc2UKLSAJICByZXR1cm4gMDsgIC8q IEZhaWxlZC4gKi8KLSAgICAgICB9IGVsc2UgewotSW5kZXg6IGx1YWppdC9zcmMvbGpfaXIuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9pci5jCi0rKysgbHVhaml0L3NyYy9s al9pci5jCi1AQCAtMzg2LDggKzM4NiwxMCBAQAotICAgY2FzZSBJUl9LUFJJOiBzZXRwcmlWKHR2 LCBpcnRfdG9pdHlwZShpci0+dCkpOyBicmVhazsKLSAgIGNhc2UgSVJfS0lOVDogc2V0aW50Vih0 diwgaXItPmkpOyBicmVhazsKLSAgIGNhc2UgSVJfS0dDOiBzZXRnY1YoTCwgdHYsIGlyX2tnYyhp ciksIGlydF90b2l0eXBlKGlyLT50KSk7IGJyZWFrOwotLSAgY2FzZSBJUl9LUFRSOiBjYXNlIElS X0tLUFRSOiBzZXRsaWdodHVkVih0diwgaXJfa3B0cihpcikpOyBicmVhazsKLS0gIGNhc2UgSVJf S05VTEw6IHNldGxpZ2h0dWRWKHR2LCBOVUxMKTsgYnJlYWs7Ci0rICBjYXNlIElSX0tQVFI6IGNh c2UgSVJfS0tQVFI6Ci0rICAgIHNldG51bVYodHYsIChsdWFfTnVtYmVyKSh1aW50cHRyX3QpaXJf a3B0cihpcikpOwotKyAgICBicmVhazsKLSsgIGNhc2UgSVJfS05VTEw6IHNldGludFYodHYsIDAp OyBicmVhazsKLSAgIGNhc2UgSVJfS05VTTogc2V0bnVtVih0diwgaXJfa251bShpciktPm4pOyBi cmVhazsKLSAjaWYgTEpfSEFTRkZJCi0gICBjYXNlIElSX0tJTlQ2NDogewotSW5kZXg6IGx1YWpp dC9zcmMvbGpfb2JqLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfb2JqLmMK LSsrKyBsdWFqaXQvc3JjL2xqX29iai5jCi1AQCAtMzQsMTIgKzM0LDEzIEBACi0gfQotIAotIC8q IFJldHVybiBwb2ludGVyIHRvIG9iamVjdCBvciBpdHMgb2JqZWN0IGRhdGEuICovCi0tY29uc3Qg dm9pZCAqIExKX0ZBU1RDQUxMIGxqX29ial9wdHIoY1RWYWx1ZSAqbykKLStjb25zdCB2b2lkICog TEpfRkFTVENBTEwgbGpfb2JqX3B0cihnbG9iYWxfU3RhdGUgKmcsIGNUVmFsdWUgKm8pCi0gewot KyAgVU5VU0VEKGcpOwotICAgaWYgKHR2aXN1ZGF0YShvKSkKLSAgICAgcmV0dXJuIHVkZGF0YSh1 ZGF0YVYobykpOwotICAgZWxzZSBpZiAodHZpc2xpZ2h0dWQobykpCi0tICAgIHJldHVybiBsaWdo dHVkVihvKTsKLSsgICAgcmV0dXJuIGxpZ2h0dWRWKGcsIG8pOwotICAgZWxzZSBpZiAoTEpfSEFT RkZJICYmIHR2aXNjZGF0YShvKSkKLSAgICAgcmV0dXJuIGNkYXRhcHRyKGNkYXRhVihvKSk7Ci0g ICBlbHNlIGlmICh0dmlzZ2N2KG8pKQotSW5kZXg6IGx1YWppdC9zcmMvbGpfb2JqLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfb2JqLmgKLSsrKyBsdWFqaXQvc3JjL2xqX29i ai5oCi1AQCAtMjMyLDcgKzIzMiw3IEBACi0gKiogICAgICAgICAgICAgICAgICAtLS1NU1ctLS0u LS0tTFNXLS0tCi0gKiogcHJpbWl0aXZlIHR5cGVzIHwgIGl0eXBlICB8ICAgICAgICAgfAotICoq IGxpZ2h0dXNlcmRhdGEgICB8ICBpdHlwZSAgfCAgdm9pZCAqIHwgICgzMiBiaXQgcGxhdGZvcm1z KQotLSoqIGxpZ2h0dXNlcmRhdGEgICB8ZmZmZnwgICAgdm9pZCAqICAgIHwgICg2NCBiaXQgcGxh dGZvcm1zLCA0NyBiaXQgcG9pbnRlcnMpCi0rKiogbGlnaHR1c2VyZGF0YSAgIHxmZmZmfHNlZ3wg ICAgb2ZzICAgfCAgKDY0IGJpdCBwbGF0Zm9ybXMpCi0gKiogR0Mgb2JqZWN0cyAgICAgIHwgIGl0 eXBlICB8ICBHQ1JlZiAgfAotICoqIGludCAoTEpfRFVBTE5VTSl8ICBpdHlwZSAgfCAgIGludCAg IHwKLSAqKiBudW1iZXIgICAgICAgICAgIC0tLS0tLS1kb3VibGUtLS0tLS0KLUBAIC0yNDUsNyAr MjQ1LDggQEAKLSAqKgotICoqICAgICAgICAgICAgICAgICAgICAgLS0tLS0tTVNXLS0tLS0tLi0t LS0tLUxTVy0tLS0tLQotICoqIHByaW1pdGl2ZSB0eXBlcyAgICB8MS4uMXxpdHlwZXwxLi4uLi4u Li4uLi4uLi4uLi4uMXwKLS0qKiBHQyBvYmplY3RzL2xpZ2h0dWQgfDEuLjF8aXR5cGV8LS0tLS0t LUdDUmVmLS0tLS0tLS18Ci0rKiogR0Mgb2JqZWN0cyAgICAgICAgIHwxLi4xfGl0eXBlfC0tLS0t LS1HQ1JlZi0tLS0tLS0tfAotKyoqIGxpZ2h0dXNlcmRhdGEgICAgICB8MS4uMXxpdHlwZXxzZWd8 LS0tLS0tb2ZzLS0tLS0tLXwKLSAqKiBpbnQgKExKX0RVQUxOVU0pICAgfDEuLjF8aXR5cGV8MC4u MHwtLS0tLWludC0tLS0tLS18Ci0gKiogbnVtYmVyICAgICAgICAgICAgICAtLS0tLS0tLS0tLS1k b3VibGUtLS0tLS0tLS0tLS0tCi0gKioKLUBAIC0yODUsNiArMjg2LDEyIEBACi0gI2RlZmluZSBM Sl9HQ1ZNQVNLCQkoKCh1aW50NjRfdCkxIDw8IDQ3KSAtIDEpCi0gI2VuZGlmCi0gCi0rI2lmIExK XzY0Ci0rLyogVG8gc3RheSB3aXRoaW4gNDcgYml0cywgbGlnaHR1c2VyZGF0YSBpcyBzZWdtZW50 ZWQuICovCi0rI2RlZmluZSBMSl9MSUdIVFVEX0JJVFNfU0VHCTgKLSsjZGVmaW5lIExKX0xJR0hU VURfQklUU19MTwkoNDcgLSBMSl9MSUdIVFVEX0JJVFNfU0VHKQotKyNlbmRpZgotKwotIC8qIC0t IFN0cmluZyBvYmplY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAqLwotIAotIC8qIFN0cmluZyBvYmplY3QgaGVhZGVyLiBTdHJpbmcgcGF5 bG9hZCBmb2xsb3dzLiAqLwotQEAgLTU3Niw3ICs1ODMsMTEgQEAKLSAgIHVpbnQ4X3QgY3VycmVu dHdoaXRlOwkvKiBDdXJyZW50IHdoaXRlIGNvbG9yLiAqLwotICAgdWludDhfdCBzdGF0ZTsJLyog R0Mgc3RhdGUuICovCi0gICB1aW50OF90IG5vY2RhdGFmaW47CS8qIE5vIGNkYXRhIGZpbmFsaXpl ciBjYWxsZWQuICovCi0tICB1aW50OF90IHVudXNlZDI7Ci0rI2lmIExKXzY0Ci0rICB1aW50OF90 IGxpZ2h0dWRudW07CS8qIE51bWJlciBvZiBsaWdodHVzZXJkYXRhIHNlZ21lbnRzIC0gMS4gKi8K LSsjZWxzZQotKyAgdWludDhfdCB1bnVzZWQxOwotKyNlbmRpZgotICAgTVNpemUgc3dlZXBzdHI7 CS8qIFN3ZWVwIHBvc2l0aW9uIGluIHN0cmluZyB0YWJsZS4gKi8KLSAgIEdDUmVmIHJvb3Q7CQkv KiBMaXN0IG9mIGFsbCBjb2xsZWN0YWJsZSBvYmplY3RzLiAqLwotICAgTVJlZiBzd2VlcDsJCS8q IFN3ZWVwIHBvc2l0aW9uIGluIHJvb3QgbGlzdC4gKi8KLUBAIC01ODgsNiArNTk5LDkgQEAKLSAg IEdDU2l6ZSBlc3RpbWF0ZTsJLyogRXN0aW1hdGUgb2YgbWVtb3J5IGFjdHVhbGx5IGluIHVzZS4g Ki8KLSAgIE1TaXplIHN0ZXBtdWw7CS8qIEluY3JlbWVudGFsIEdDIHN0ZXAgZ3JhbnVsYXJpdHku ICovCi0gICBNU2l6ZSBwYXVzZTsJCS8qIFBhdXNlIGJldHdlZW4gc3VjY2Vzc2l2ZSBHQyBjeWNs ZXMuICovCi0rI2lmIExKXzY0Ci0rICBNUmVmIGxpZ2h0dWRzZWc7CS8qIFVwcGVyIGJpdHMgb2Yg bGlnaHR1c2VyZGF0YSBzZWdtZW50cy4gKi8KLSsjZW5kaWYKLSB9IEdDU3RhdGU7Ci0gCi0gLyog R2xvYmFsIHN0YXRlLCBzaGFyZWQgYnkgYWxsIHRocmVhZHMgb2YgYSBMdWEgdW5pdmVyc2UuICov Ci1AQCAtNzk1LDEwICs4MDksMjMgQEAKLSAjZW5kaWYKLSAjZGVmaW5lIGJvb2xWKG8pCWNoZWNr X2V4cCh0dmlzYm9vbChvKSwgKExKX1RGQUxTRSAtIGl0eXBlKG8pKSkKLSAjaWYgTEpfNjQKLS0j ZGVmaW5lIGxpZ2h0dWRWKG8pIFwKLS0gIGNoZWNrX2V4cCh0dmlzbGlnaHR1ZChvKSwgKHZvaWQg KikoKG8pLT51NjQgJiBVNjR4KDAwMDA3ZmZmLGZmZmZmZmZmKSkpCi0rI2RlZmluZSBsaWdodHVk c2VnKHUpIFwKLSsgICgoKHUpID4+IExKX0xJR0hUVURfQklUU19MTykgJiAoKDEgPDwgTEpfTElH SFRVRF9CSVRTX1NFRyktMSkpCi0rI2RlZmluZSBsaWdodHVkbG8odSkgXAotKyAgKCh1KSAmICgo KHVpbnQ2NF90KTEgPDwgTEpfTElHSFRVRF9CSVRTX0xPKSAtIDEpKQotKyNkZWZpbmUgbGlnaHR1 ZHVwKHApIFwKLSsgICgodWludDMyX3QpKCgocCkgPj4gTEpfTElHSFRVRF9CSVRTX0xPKSA8PCAo TEpfTElHSFRVRF9CSVRTX0xPLTMyKSkpCi0rc3RhdGljIExKX0FJTkxJTkUgdm9pZCAqbGlnaHR1 ZFYoZ2xvYmFsX1N0YXRlICpnLCBjVFZhbHVlICpvKQotK3sKLSsgIHVpbnQ2NF90IHUgPSBvLT51 NjQ7Ci0rICB1aW50NjRfdCBzZWcgPSBsaWdodHVkc2VnKHUpOwotKyAgdWludDMyX3QgKnNlZ21h cCA9IG1yZWYoZy0+Z2MubGlnaHR1ZHNlZywgdWludDMyX3QpOwotKyAgbHVhX2Fzc2VydCh0dmlz bGlnaHR1ZChvKSk7Ci0rICBsdWFfYXNzZXJ0KHNlZyA8PSBnLT5nYy5saWdodHVkbnVtKTsKLSsg IHJldHVybiAodm9pZCAqKSgoKHVpbnQ2NF90KXNlZ21hcFtzZWddIDw8IDMyKSB8IGxpZ2h0dWRs byh1KSk7Ci0rfQotICNlbHNlCi0tI2RlZmluZSBsaWdodHVkVihvKQljaGVja19leHAodHZpc2xp Z2h0dWQobyksIGdjcmVmcCgobyktPmdjciwgdm9pZCkpCi0rI2RlZmluZSBsaWdodHVkVihnLCBv KQljaGVja19leHAodHZpc2xpZ2h0dWQobyksIGdjcmVmcCgobyktPmdjciwgdm9pZCkpCi0gI2Vu ZGlmCi0gI2RlZmluZSBnY1YobykJCWNoZWNrX2V4cCh0dmlzZ2N2KG8pLCBnY3ZhbChvKSkKLSAj ZGVmaW5lIHN0clYobykJCWNoZWNrX2V4cCh0dmlzc3RyKG8pLCAmZ2N2YWwobyktPnN0cikKLUBA IC04MjQsNyArODUxLDcgQEAKLSAjZGVmaW5lIHNldHByaVYobywgaSkJCShzZXRpdHlwZSgobyks IChpKSkpCi0gI2VuZGlmCi0gCi0tc3RhdGljIExKX0FJTkxJTkUgdm9pZCBzZXRsaWdodHVkVihU VmFsdWUgKm8sIHZvaWQgKnApCi0rc3RhdGljIExKX0FJTkxJTkUgdm9pZCBzZXRyYXdsaWdodHVk VihUVmFsdWUgKm8sIHZvaWQgKnApCi0gewotICNpZiBMSl9HQzY0Ci0gICBvLT51NjQgPSAodWlu dDY0X3QpcCB8ICgoKHVpbnQ2NF90KUxKX1RMSUdIVFVEKSA8PCA0Nyk7Ci1AQCAtODM1LDI0ICs4 NjIsMTQgQEAKLSAjZW5kaWYKLSB9Ci0gCi0tI2lmIExKXzY0Ci0tI2RlZmluZSBjaGVja2xpZ2h0 dWRwdHIoTCwgcCkgXAotLSAgKCgodWludDY0X3QpKHApID4+IDQ3KSA/IChsal9lcnJfbXNnKEws IExKX0VSUl9CQURMVSksIE5VTEwpIDogKHApKQotLSNlbHNlCi0tI2RlZmluZSBjaGVja2xpZ2h0 dWRwdHIoTCwgcCkJKHApCi0tI2VuZGlmCi0tCi0tI2lmIExKX0ZSMgotKyNpZiBMSl9GUjIgfHwg TEpfMzIKLSAjZGVmaW5lIGNvbnRwdHIoZikJCSgodm9pZCAqKShmKSkKLSAjZGVmaW5lIHNldGNv bnQobywgZikJCSgobyktPnU2NCA9ICh1aW50NjRfdCkodWludHB0cl90KWNvbnRwdHIoZikpCi0t I2VsaWYgTEpfNjQKLSsjZWxzZQotICNkZWZpbmUgY29udHB0cihmKSBcCi0gICAoKHZvaWQgKiko dWludHB0cl90KSh1aW50MzJfdCkoKGludHB0cl90KShmKSAtIChpbnRwdHJfdClsal92bV9hc21f YmVnaW4pKQotICNkZWZpbmUgc2V0Y29udChvLCBmKSBcCi0gICAoKG8pLT51NjQgPSAodWludDY0 X3QpKHZvaWQgKikoZikgLSAodWludDY0X3QpbGpfdm1fYXNtX2JlZ2luKQotLSNlbHNlCi0tI2Rl ZmluZSBjb250cHRyKGYpCQkoKHZvaWQgKikoZikpCi0tI2RlZmluZSBzZXRjb250KG8sIGYpCQlz ZXRsaWdodHVkVigobyksIGNvbnRwdHIoZikpCi0gI2VuZGlmCi0gCi0gI2RlZmluZSB0dmNoZWNr bGl2ZShMLCBvKSBcCi1AQCAtOTc4LDYgKzk5NSw2IEBACi0gCi0gLyogQ29tcGFyZSB0d28gb2Jq ZWN0cyB3aXRob3V0IGNhbGxpbmcgbWV0YW1ldGhvZHMuICovCi0gTEpfRlVOQyBpbnQgTEpfRkFT VENBTEwgbGpfb2JqX2VxdWFsKGNUVmFsdWUgKm8xLCBjVFZhbHVlICpvMik7Ci0tTEpfRlVOQyBj b25zdCB2b2lkICogTEpfRkFTVENBTEwgbGpfb2JqX3B0cihjVFZhbHVlICpvKTsKLStMSl9GVU5D IGNvbnN0IHZvaWQgKiBMSl9GQVNUQ0FMTCBsal9vYmpfcHRyKGdsb2JhbF9TdGF0ZSAqZywgY1RW YWx1ZSAqbyk7Ci0gCi0gI2VuZGlmCi1JbmRleDogbHVhaml0L3NyYy9sal9zbmFwLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfc25hcC5jCi0rKysgbHVhaml0L3NyYy9sal9z bmFwLmMKLUBAIC02MjYsNyArNjI2LDEyIEBACi0gICBJUlR5cGUxIHQgPSBpci0+dDsKLSAgIFJl Z1NQIHJzID0gaXItPnByZXY7Ci0gICBpZiAoaXJyZWZfaXNrKHJlZikpIHsgIC8qIFJlc3RvcmUg Y29uc3RhbnQgc2xvdC4gKi8KLS0gICAgbGpfaXJfa3ZhbHVlKEotPkwsIG8sIGlyKTsKLSsgICAg aWYgKGlyLT5vID09IElSX0tQVFIpIHsKLSsgICAgICBvLT51NjQgPSAodWludDY0X3QpKHVpbnRw dHJfdClpcl9rcHRyKGlyKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBsdWFfYXNzZXJ0KCEoaXIt Pm8gPT0gSVJfS0tQVFIgfHwgaXItPm8gPT0gSVJfS05VTEwpKTsKLSsgICAgICBsal9pcl9rdmFs dWUoSi0+TCwgbywgaXIpOwotKyAgICB9Ci0gICAgIHJldHVybjsKLSAgIH0KLSAgIGlmIChMSl9V TkxJS0VMWShibG9vbXRlc3QocmZpbHQsIHJlZikpKQotSW5kZXg6IGx1YWppdC9zcmMvbGpfc3Rh dGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9zdGF0ZS5jCi0rKysgbHVh aml0L3NyYy9sal9zdGF0ZS5jCi1AQCAtMTcxLDYgKzE3MSwxMiBAQAotICAgbGpfbWVtX2ZyZWV2 ZWMoZywgZy0+c3RyaGFzaCwgZy0+c3RybWFzaysxLCBHQ1JlZik7Ci0gICBsal9idWZfZnJlZShn LCAmZy0+dG1wYnVmKTsKLSAgIGxqX21lbV9mcmVldmVjKGcsIHR2cmVmKEwtPnN0YWNrKSwgTC0+ c3RhY2tzaXplLCBUVmFsdWUpOwotKyNpZiBMSl82NAotKyAgaWYgKG1yZWYoZy0+Z2MubGlnaHR1 ZHNlZywgdWludDMyX3QpKSB7Ci0rICAgIE1TaXplIHNlZ251bSA9IGctPmdjLmxpZ2h0dWRudW0g PyAoMiA8PCBsal9mbHMoZy0+Z2MubGlnaHR1ZG51bSkpIDogMjsKLSsgICAgbGpfbWVtX2ZyZWV2 ZWMoZywgbXJlZihnLT5nYy5saWdodHVkc2VnLCB1aW50MzJfdCksIHNlZ251bSwgdWludDMyX3Qp OwotKyAgfQotKyNlbmRpZgotICAgbHVhX2Fzc2VydChnLT5nYy50b3RhbCA9PSBzaXplb2YoR0df U3RhdGUpKTsKLSAjaWZuZGVmIExVQUpJVF9VU0VfU1lTTUFMTE9DCi0gICBpZiAoZy0+YWxsb2Nm ID09IGxqX2FsbG9jX2YpCi1JbmRleDogbHVhaml0L3NyYy9sal9zdHJmbXQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9zdHJmbXQuYwotKysrIGx1YWppdC9zcmMvbGpfc3Ry Zm10LmMKLUBAIC0zOTMsNyArMzkzLDcgQEAKLSAgICAgICBwID0gbGpfYnVmX3dtZW0ocCwgImJ1 aWx0aW4jIiwgOCk7Ci0gICAgICAgcCA9IGxqX3N0cmZtdF93aW50KHAsIGZ1bmNWKG8pLT5jLmZm aWQpOwotICAgICB9IGVsc2UgewotLSAgICAgIHAgPSBsal9zdHJmbXRfd3B0cihwLCBsal9vYmpf cHRyKG8pKTsKLSsgICAgICBwID0gbGpfc3RyZm10X3dwdHIocCwgbGpfb2JqX3B0cihHKEwpLCBv KSk7Ci0gICAgIH0KLSAgICAgcmV0dXJuIGxqX3N0cl9uZXcoTCwgYnVmLCAoc2l6ZV90KShwIC0g YnVmKSk7Ci0gICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2VuYWJsZS1k ZWJ1Zy1zeW1ib2xzLnBhdGNoIGIvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9lbmFibGUtZGVidWct c3ltYm9scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZlNGM5MTA2YWNm OS4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2VuYWJsZS1kZWJ1 Zy1zeW1ib2xzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRnJvbTogPT91 dGYtOD9xP09uZD1DNT05OWVqX1N1cj1DMz1CRD89IDxvbmRyZWpAc3VyeS5vcmc+Ci1EYXRlOiBU dWUsIDE3IE5vdiAyMDE1IDE2OjI3OjExICswMTAwCi1TdWJqZWN0OiBFbmFibGUgZGVidWdnaW5n IHN5bWJvbHMgaW4gdGhlIGJ1aWxkCi0KLS0tLQotIHNyYy9NYWtlZmlsZSB8IDQgKystLQotIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1n aXQgc3JjL01ha2VmaWxlIHNyYy9NYWtlZmlsZQotaW5kZXggOGEzOGVmZC4uNmI3M2E4OSAxMDA2 NDQKLS0tLSBhL3NyYy9NYWtlZmlsZQotKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtNTQsOSArNTQs OSBAQCBDQ09QVF9hcm02ND0KLSBDQ09QVF9wcGM9Ci0gQ0NPUFRfbWlwcz0KLSAjCi0tQ0NERUJV Rz0KLSsjQ0NERUJVRz0KLSAjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGdlbmVyYXRlIGRl YnVnIGluZm9ybWF0aW9uOgotLSNDQ0RFQlVHPSAtZwotK0NDREVCVUc9IC1nCi0gIwotIENDV0FS Tj0gLVdhbGwKLSAjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSBtb3JlIHdhcm5p bmdzOgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9maXgtYmNzYXZlLXBwYzY0 LnBhdGNoIGIvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9maXgtYmNzYXZlLXBwYzY0LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTNlMjExMDcxMDYzLi4wMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZml4LWJjc2F2ZS1wcGM2NC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS0tLSBhL3NyYy9qaXQvYmNzYXZlLmx1YQkyMDE4 LTEyLTE3IDE5OjA2OjI3LjIxNTA0MjQxNyArMDEwMAotKysrIGIvc3JjL2ppdC9iY3NhdmUubHVh CTIwMTgtMTItMTcgMTk6MTc6MTIuOTgyNDc3OTQ1ICswMTAwCi1AQCAtNjQsNyArNjQsNyBAQAot IAotIGxvY2FsIG1hcF9hcmNoID0gewotICAgeDg2ID0gdHJ1ZSwgeDY0ID0gdHJ1ZSwgYXJtID0g dHJ1ZSwgYXJtNjQgPSB0cnVlLCBhcm02NGJlID0gdHJ1ZSwKLS0gIHBwYyA9IHRydWUsIG1pcHMg PSB0cnVlLCBtaXBzZWwgPSB0cnVlLAotKyAgcHBjID0gdHJ1ZSwgcHBjNjQgPSB0cnVlLCBwcGM2 NGxlID0gdHJ1ZSwgbWlwcyA9IHRydWUsIG1pcHNlbCA9IHRydWUsCi0gfQotIAotIGxvY2FsIG1h cF9vcyA9IHsKLUBAIC0yMDAsOSArMjAwLDEwIEBACi0gXV0KLSAgIGxvY2FsIHN5bW5hbWUgPSBM SkJDX1BSRUZJWC4uY3R4Lm1vZG5hbWUKLSAgIGxvY2FsIGlzNjQsIGlzYmUgPSBmYWxzZSwgZmFs c2UKLS0gIGlmIGN0eC5hcmNoID09ICJ4NjQiIG9yIGN0eC5hcmNoID09ICJhcm02NCIgb3IgY3R4 LmFyY2ggPT0gImFybTY0YmUiIHRoZW4KLSsgIGlmIGN0eC5hcmNoID09ICJ4NjQiIG9yIGN0eC5h cmNoID09ICJhcm02NCIgb3IgY3R4LmFyY2ggPT0gImFybTY0YmUiIG9yIGN0eC5hcmNoID09ICJw cGM2NCIgb3IgY3R4LmFyY2ggPT0gInBwYzY0bGUiIHRoZW4KLSAgICAgaXM2NCA9IHRydWUKLS0g IGVsc2VpZiBjdHguYXJjaCA9PSAicHBjIiBvciBjdHguYXJjaCA9PSAibWlwcyIgdGhlbgotKyAg ZW5kCi0rICBpZiBjdHguYXJjaCA9PSAicHBjIiBvciBjdHguYXJjaCA9PSAicHBjNjQiIG9yIGN0 eC5hcmNoID09ICJtaXBzIiB0aGVuCi0gICAgIGlzYmUgPSB0cnVlCi0gICBlbmQKLSAKLUBAIC0y MzcsNyArMjM4LDcgQEAKLSAgIGhkci5lZW5kaWFuID0gaXNiZSBhbmQgMiBvciAxCi0gICBoZHIu ZXZlcnNpb24gPSAxCi0gICBoZHIudHlwZSA9IGYxNigxKQotLSAgaGRyLm1hY2hpbmUgPSBmMTYo KHsgeDg2PTMsIHg2ND02MiwgYXJtPTQwLCBhcm02ND0xODMsIGFybTY0YmU9MTgzLCBwcGM9MjAs IG1pcHM9OCwgbWlwc2VsPTggfSlbY3R4LmFyY2hdKQotKyAgaGRyLm1hY2hpbmUgPSBmMTYoKHsg eDg2PTMsIHg2ND02MiwgYXJtPTQwLCBhcm02ND0xODMsIGFybTY0YmU9MTgzLCBwcGM9MjAsIHBw YzY0PTIxLCBwcGM2NGxlPTIxLCBtaXBzPTgsIG1pcHNlbD04IH0pW2N0eC5hcmNoXSkKLSAgIGlm IGN0eC5hcmNoID09ICJtaXBzIiBvciBjdHguYXJjaCA9PSAibWlwc2VsIiB0aGVuCi0gICAgIGhk ci5mbGFncyA9IGYzMigweDUwMDAxMDA2KQotICAgZW5kCmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1 YUpJVC9wYXRjaGVzL2dldC1yaWQtb2YtbHVhaml0LXZlcnNpb24tc3ltLnBhdGNoIGIvc3JjcGtn cy9MdWFKSVQvcGF0Y2hlcy9nZXQtcmlkLW9mLWx1YWppdC12ZXJzaW9uLXN5bS5wYXRjaAppbmRl eCA1OWUxZWU3MmZjYmI4Li4yNTI3YmJlZjI5OTYxIDEwMDY0NAotLS0gYS9zcmNwa2dzL0x1YUpJ VC9wYXRjaGVzL2dldC1yaWQtb2YtbHVhaml0LXZlcnNpb24tc3ltLnBhdGNoCisrKyBiL3NyY3Br Z3MvTHVhSklUL3BhdGNoZXMvZ2V0LXJpZC1vZi1sdWFqaXQtdmVyc2lvbi1zeW0ucGF0Y2gKQEAg LTEsMTggKzEsOCBAQAotRnJvbTogPT91dGYtOD9xP09uZD1DNT05OWVqX1N1cj1DMz1CRD89IDxv bmRyZWpAc3VyeS5vcmc+Ci1EYXRlOiBUaHUsIDE5IE5vdiAyMDE1IDE2OjI5OjAyICswMjAwCi1T dWJqZWN0OiBHZXQgcmlkIG9mIExVQUpJVF9WRVJTSU9OX1NZTSB0aGF0IGNoYW5nZXMgQUJJIG9u IGV2ZXJ5IHBhdGNoIHJlbGVhc2UKLQotLS0tCi0gc3JjL2xqX2Rpc3BhdGNoLmMgfCA1IC0tLS0t Ci0gc3JjL2x1YWppdC5jICAgICAgfCAyIC0tCi0gc3JjL2x1YWppdC5oICAgICAgfCAzIC0tLQot IDMgZmlsZXMgY2hhbmdlZCwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgc3JjL2xqX2Rp c3BhdGNoLmMgc3JjL2xqX2Rpc3BhdGNoLmMKLWluZGV4IDVkNjc5NWYuLmU4NjVhNzggMTAwNjQ0 CitkaWZmIC0tZ2l0IGEvc3JjL2xqX2Rpc3BhdGNoLmMgYi9zcmMvbGpfZGlzcGF0Y2guYworaW5k ZXggYjk3NDhiYmEuLmQwOTIzOGY4IDEwMDY0NAogLS0tIGEvc3JjL2xqX2Rpc3BhdGNoLmMKICsr KyBiL3NyYy9sal9kaXNwYXRjaC5jCi1AQCAtMzE5LDExICszMTksNiBAQCBpbnQgbHVhSklUX3Nl dG1vZGUobHVhX1N0YXRlICpMLCBpbnQgaWR4LCBpbnQgbW9kZSkKK0BAIC0zMTgsMTEgKzMxOCw2 IEBAIGludCBsdWFKSVRfc2V0bW9kZShsdWFfU3RhdGUgKkwsIGludCBpZHgsIGludCBtb2RlKQog ICAgcmV0dXJuIDE7ICAvKiBPSy4gKi8KICB9CiAgCkBAIC0yNCwyOCArMTQsMjggQEAgaW5kZXgg NWQ2Nzk1Zi4uZTg2NWE3OCAxMDA2NDQKICAvKiAtLSBIb29rcyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICAKICAvKiBU aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkgKGUuZy4gZHVyaW5nIGEg c2lnbmFsKS4gKi8KLWRpZmYgLS1naXQgc3JjL2x1YWppdC5jIHNyYy9sdWFqaXQuYwotaW5kZXgg MWNhMjQzMC4uY2NmNDI1ZSAxMDA2NDQKK2RpZmYgLS1naXQgYS9zcmMvbHVhaml0LmMgYi9zcmMv bHVhaml0LmMKK2luZGV4IDczZTI5ZDQ0Li4zMWZkYmExOCAxMDA2NDQKIC0tLSBhL3NyYy9sdWFq aXQuYwogKysrIGIvc3JjL2x1YWppdC5jCi1AQCAtNTE2LDggKzUxNiw2IEBAIHN0YXRpYyBpbnQg cG1haW4obHVhX1N0YXRlICpMKQorQEAgLTUxNSw3ICs1MTUsNiBAQCBzdGF0aWMgaW50IHBtYWlu KGx1YV9TdGF0ZSAqTCkKKyAgIGludCBhcmduOworICAgaW50IGZsYWdzID0gMDsKICAgIGdsb2Jh bEwgPSBMOwotICAgaWYgKGFyZ3ZbMF0gJiYgYXJndlswXVswXSkgcHJvZ25hbWUgPSBhcmd2WzBd OwotIAogLSAgTFVBSklUX1ZFUlNJT05fU1lNKCk7ICAvKiBMaW5rZXItZW5mb3JjZWQgdmVyc2lv biBjaGVjay4gKi8KLS0KKyAKICAgIGFyZ24gPSBjb2xsZWN0YXJncyhhcmd2LCAmZmxhZ3MpOwog ICAgaWYgKGFyZ24gPCAwKSB7ICAvKiBJbnZhbGlkIGFyZ3M/ICovCi0gICAgIHByaW50X3VzYWdl KCk7Ci1kaWZmIC0tZ2l0IHNyYy9sdWFqaXQuaCBzcmMvbHVhaml0LmgKLWluZGV4IDcwOGE1YTEu LjM1YWUwMmMgMTAwNjQ0Ci0tLS0gYS9zcmMvbHVhaml0LmgKLSsrKyBiL3NyYy9sdWFqaXQuaAot QEAgLTczLDcgKzczLDQgQEAgTFVBX0FQSSB2b2lkIGx1YUpJVF9wcm9maWxlX3N0b3AobHVhX1N0 YXRlICpMKTsKK2RpZmYgLS1naXQgYS9zcmMvbHVhaml0X3JvbGxpbmcuaCBiL3NyYy9sdWFqaXRf cm9sbGluZy5oCitpbmRleCAyZDA0NDAyYy4uNWFiNDE2N2QgMTAwNjQ0CistLS0gYS9zcmMvbHVh aml0X3JvbGxpbmcuaAorKysrIGIvc3JjL2x1YWppdF9yb2xsaW5nLmgKK0BAIC03Myw4ICs3Myw1 IEBAIExVQV9BUEkgdm9pZCBsdWFKSVRfcHJvZmlsZV9zdG9wKGx1YV9TdGF0ZSAqTCk7CiAgTFVB X0FQSSBjb25zdCBjaGFyICpsdWFKSVRfcHJvZmlsZV9kdW1wc3RhY2sobHVhX1N0YXRlICpMLCBj b25zdCBjaGFyICpmbXQsCiAgCQkJCQkgICAgIGludCBkZXB0aCwgc2l6ZV90ICpsZW4pOwogIAog LS8qIEVuZm9yY2UgKGR5bmFtaWMpIGxpbmtlciBlcnJvciBmb3IgdmVyc2lvbiBtaXNtYXRjaGVz LiBDYWxsIGZyb20gbWFpbi4gKi8KIC1MVUFfQVBJIHZvaWQgTFVBSklUX1ZFUlNJT05fU1lNKHZv aWQpOwogLQorICNlcnJvciAiRE8gTk9UIFVTRSBsdWFqaXRfcm9sbGluZy5oIC0tIG9ubHkgaW5j bHVkZSBidWlsZC1nZW5lcmF0ZWQgbHVhaml0LmgiCiAgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNw a2dzL0x1YUpJVC9wYXRjaGVzL3VucG9sbHV0ZS1nbG9iYWwtbmFtZXNwYWNlLnBhdGNoIGIvc3Jj cGtncy9MdWFKSVQvcGF0Y2hlcy91bnBvbGx1dGUtZ2xvYmFsLW5hbWVzcGFjZS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVkYWFjYmFhZWE0Ni4uMDAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL3VucG9sbHV0ZS1nbG9iYWwtbmFtZXNwYWNlLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotRnJvbTogPT91dGYtOD9xP09uZD1D NT05OWVqX1N1cj1DMz1CRD89IDxvbmRyZWpAc3VyeS5vcmc+Ci1EYXRlOiBXZWQsIDExIE9jdCAy MDE3IDA4OjQyOjQxICswMDAwCi1TdWJqZWN0OiBNYWtlIGNjYWxsX2NvcHlfc3RydWN0IHN0YXRp YyB0byB1bnBvbGx1dGUgZ2xvYmFsIGxpYnJhcnkgbmFtZXNwYWNlCi0KLS0tLQotIHNyYy9sal9j Y2FsbC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQotCi1kaWZmIC0tZ2l0IHNyYy9sal9jY2FsbC5jIHNyYy9sal9jY2FsbC5jCi1pbmRleCBi ODkxNTkxLi5hN2RjYzFiIDEwMDY0NAotLS0tIGEvc3JjL2xqX2NjYWxsLmMKLSsrKyBiL3NyYy9s al9jY2FsbC5jCi1AQCAtOTYwLDcgKzk2MCw3IEBAIG5vdGg6ICAvKiBOb3QgYSBob21vZ2VuZW91 cyBmbG9hdC9kb3VibGUgYWdncmVnYXRlLiAqLwotICAgcmV0dXJuIDA7ICAvKiBTdHJ1Y3QgaXMg aW4gR1BScy4gKi8KLSB9Ci0gCi0tdm9pZCBjY2FsbF9jb3B5X3N0cnVjdChDQ2FsbFN0YXRlICpj YywgQ1R5cGUgKmN0ciwgdm9pZCAqZHAsIHZvaWQgKnNwLCBpbnQgZnQpCi0rc3RhdGljIHZvaWQg Y2NhbGxfY29weV9zdHJ1Y3QoQ0NhbGxTdGF0ZSAqY2MsIENUeXBlICpjdHIsIHZvaWQgKmRwLCB2 b2lkICpzcCwgaW50IGZ0KQotIHsKLSAgIGlmIChMSl9BQklfU09GVEZQID8gZnQgOgotICAgICAg ICgoZnQgJiAzKSA9PSBGVFlQRV9GTE9BVCB8fCAoZnQgPj4gMikgPT0gRlRZUEVfRkxPQVQpKSB7 CmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC90ZW1wbGF0ZSBiL3NyY3BrZ3MvTHVhSklUL3Rl bXBsYXRlCmluZGV4IDg1NDQ5YWMzZDZmNzMuLjg1YmFlYmIwNzRmNTIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvTHVhSklUL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvTHVhSklUL3RlbXBsYXRlCkBAIC0x LDcxICsxLDU2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdMdWFKSVQnCiBwa2duYW1lPUx1YUpJ VAotdmVyc2lvbj0yLjEuMGJldGEzCi1yZXZpc2lvbj0yCi1fc29fdmVyc2lvbj0yLjEuMAotX2Rp c3RfdmVyc2lvbj0ke19zb192ZXJzaW9ufS1iZXRhMworIyBzZXQgbGFzdCBudW1iZXIgdG8gY29u dGVudHMgb2YgLnJlbHZlciBhdCByZXBvIHJvb3QKK3ZlcnNpb249Mi4xLjE3MDcwNjE2MzQKK3Jl dmlzaW9uPTEKK19jb21taXRfaGFzaD0wZDMxM2IyNDMxOTRhMGI4ZDIzOTlkOGI1NDljYTVhMGZm MjM0ZGI1CitidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKK21ha2VfYnVpbGRfdGFyZ2V0PWFtYWxn CiBob3N0bWFrZWRlcGVuZHM9Imx1YTUyLUJpdE9wIgogc2hvcnRfZGVzYz0iSnVzdC1Jbi1UaW1l IENvbXBpbGVyIGZvciBMdWEiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51 eC5vcmc+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly93d3cubHVhaml0Lm9yZyIK LWRpc3RmaWxlcz0iaHR0cDovL2x1YWppdC5vcmcvZG93bmxvYWQvJHtwa2duYW1lfS0ke19kaXN0 X3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTFhZDJlMzRiMTExYzgwMmY5ZDBjZGYwMTllOTg2 OTA5MTIzMjM3YTI4Yzc0NmIyMTI5NWI2M2M5ZTc4NWQ5YzMKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9y ZXBvLm9yLmN6L2x1YWppdC0yLjAuZ2l0L3NuYXBzaG90LyR7X2NvbW1pdF9oYXNofS50YXIuZ3oi CitjaGVja3N1bT00YjI5ZjMxMGQ5ZTk4MmY4YmZhMThmMGRjZDRkOTc5YTIzNjY2OTQzZTY5MDcx NGJlZjA3NTBkNTZiMmNkNjRiCiAKIGJ1aWxkX29wdGlvbnM9Imx1YTUyY29tcGF0IgorZGVzY19v cHRpb25fbHVhNTJjb21wYXQ9ImhpZ2hlciBjb21wYXRpYmlsaXR5IHdpdGggbHVhIDUuMiIKIAot X2Nyb3NzX2NjPSJjYyIKLWlmIFsgIiRYQlBTX1dPUkRTSVpFIiAhPSAiJFhCUFNfVEFSR0VUX1dP UkRTSVpFIiBdOyB0aGVuCi0JaWYgWyAiJHtYQlBTX01BQ0hJTkUvLW11c2wvfSIgPSAieDg2XzY0 IiBdOyB0aGVuCi0JCWhvc3RtYWtlZGVwZW5kcys9IiBjcm9zcy1pNjg2LWxpbnV4LW11c2wiCi0J CV9jcm9zc19jYz0iaTY4Ni1saW51eC1tdXNsLWdjYyAtc3RhdGljIgotCWVsc2UKLQkJYnJva2Vu PSJIb3N0IGFuZCB0YXJnZXQgd29yZHNpemUgbXVzdCBtYXRjaCIKK19ob3N0X2NjPSJjYyIKK2lm IFsgLW4gIiRDUk9TU19CVUlMRCIgXTsgdGhlbgorCWlmIFsgIiRYQlBTX1dPUkRTSVpFIiAhPSAi JFhCUFNfVEFSR0VUX1dPUkRTSVpFIiBdOyB0aGVuCisJCWlmIFsgIiR7WEJQU19NQUNISU5FJSUt Kn0iID0gIng4Nl82NCIgXTsgdGhlbgorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIGNyb3NzLWk2ODYt bGludXgtbXVzbCIKKwkJCV9ob3N0X2NjPSJpNjg2LWxpbnV4LW11c2wtZ2NjIC1zdGF0aWMiCisJ CWVsc2UKKwkJCWJyb2tlbj0iSG9zdCBhbmQgdGFyZ2V0IHdvcmRzaXplIG11c3QgbWF0Y2ggd2hl biBub3Qgb24geDg2XzY0IgorCQlmaQogCWZpCi1maQotCi0jIHRoZSBwcGM2NCBwYXRjaHNldCBz dWJ0bHkgYnJlYWtzIHBwYywgbmVlZHMgaW52ZXN0aWdhdGlvbjsgZm9yCi0jIG5vdyBhcHBseSBw YXRjaGVzIGNvbmRpdGlvbmFsbHksIHNlcGFyYXRlbHkgZm9yIHBwYzY0IGFuZCBwcGMKLXBvc3Rf cGF0Y2goKSB7Ci0JbG9jYWwgcGF0Y2hkaXIKIAotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgotCQlwcGM2NCopIHBhdGNoZGlyPSJwcGM2NCI7OwotCQlwcGMqKSBwYXRjaGRpcj0icHBj Ijs7Ci0JCSopIHJldHVybjs7Ci0JZXNhYworCW1ha2VfYnVpbGRfYXJncys9IiBDUk9TUz0ke1hC UFNfQ1JPU1NfVFJJUExFVH0tIgorZmkKIAotCWZvciBpIGluICR7RklMRVNESVJ9L3BhdGNoZXMv JHtwYXRjaGRpcn0vKi5wYXRjaDsgZG8KLQkJbXNnX25vcm1hbCAicGF0Y2hpbmc6ICRpXG4iCi0J CXBhdGNoIC1zTnAxIC1pICR7aX0KLQlkb25lCitwcmVfYnVpbGQoKSB7CisJaWYgWyAiJGJ1aWxk X29wdGlvbl9sdWE1MmNvbXBhdCIgXTsgdGhlbgorCQltYWtlX2J1aWxkX2FyZ3MrPSIgWENGTEFH Uz0tRExVQUpJVF9FTkFCTEVfTFVBNTJDT01QQVQiCisJZmkKIH0KIAogZG9fYnVpbGQoKSB7CisJ IyBpZiB3ZSBkb24ndCB1bnNldCwgdGhlIGJ1aWxkIGZhaWxzIHRvIGNyb3NzLWNvbXBpbGUKKwkj IGR1ZSB0byBjb25mbGljdGlvbiB3aXRoIHRoZSBtYWtlZmlsZSBtYWNyb3MKIAlsb2NhbCBfY2Zs YWdzPSRDRkxBR1MKIAlsb2NhbCBfbGRmbGFncz0kTERGTEFHUwotCi0JaWYgWyAiJENST1NTX0JV SUxEIiBdOyB0aGVuCi0JCWxvY2FsIGNyb3NzPSJDUk9TUz0ke1hCUFNfQ1JPU1NfVFJJUExFVH0t IgotCWZpCi0KLQlpZiBbICIkYnVpbGRfb3B0aW9uX2x1YTUyY29tcGF0IiBdOyB0aGVuCi0JCWxv Y2FsIF94Y2ZsYWdzPSJYQ0ZMQUdTPS1ETFVBSklUX0VOQUJMRV9MVUE1MkNPTVBBVCIKLQlmaQot CiAJdW5zZXQgQ0ZMQUdTIExERkxBR1MKLQltYWtlICR7bWFrZWpvYnN9IFBSRUZJWD0vdXNyIEhP U1RfTFVBPWx1YTUuMiBIT1NUX0NDPSIke19jcm9zc19jY30iIFwKKworCW1ha2UgJHttYWtlam9i c30gUFJFRklYPS91c3IgSE9TVF9MVUE9bHVhNS4yIFwKIAkJSE9TVF9DRkxBR1M9IiRYQlBTX0NG TEFHUyIgSE9TVF9MREZMQUdTPSIkWEJQU19MREZMQUdTIiBcCiAJCVRBUkdFVF9DRkxBR1M9IiR7 X2NmbGFnc30iIFRBUkdFVF9MREZMQUdTPSIke19sZGZsYWdzfSIgXAotCQkke194Y2ZsYWdzfSAk e2Nyb3NzfQorCQlIT1NUX0NDPSIke19ob3N0X2NjfSIgJHttYWtlX2J1aWxkX2FyZ3N9CiB9CiAK LWRvX2luc3RhbGwoKSB7Ci0JbWFrZSBEUFJFRklYPSR7REVTVERJUn0vdXNyIERFU1RESVI9JHtE RVNURElSfSBcCi0JCUlOU1RBTExfU0hBUkU9JHtERVNURElSfS91c3Ivc2hhcmUgUFJFRklYPS91 c3IgaW5zdGFsbAotCi0JbXYgJHtERVNURElSfS91c3IvYmluL2x1YWppdC0qICR7REVTVERJUn0v dXNyL2Jpbi9sdWFqaXQKLQlsbiAtZnMgbGlibHVhaml0LTUuMS5zby4ke19zb192ZXJzaW9ufSAk e0RFU1RESVJ9L3Vzci9saWIvbGlibHVhaml0LTUuMS5zby4yCitwb3N0X2luc3RhbGwoKSB7CiAJ dmxpY2Vuc2UgQ09QWVJJR0hUCiB9CiAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvTHVhSklUL3VwZGF0 ZSBiL3NyY3BrZ3MvTHVhSklUL3VwZGF0ZQppbmRleCAxNTYxMzkxMDY3N2M5Li45NmJiYmQ0NTNj MzJjIDEwMDY0NAotLS0gYS9zcmNwa2dzL0x1YUpJVC91cGRhdGUKKysrIGIvc3JjcGtncy9MdWFK SVQvdXBkYXRlCkBAIC0xICsxIEBACi1zaXRlPSJodHRwOi8vbHVhaml0Lm9yZy9kb3dubG9hZC5o dG1sIgorZGlzYWJsZWQ9ImltcG9zc2libGUgdG8gZGV0ZXJtaW5lIGdpdmVuIHJlbGVhc2Ugc3R5 bGUgYW5kIHZlcnNpb25pbmcgc2NoZW1lIgo= --===============7714599502363162173==--