From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 671E949A1D for ; Mon, 26 Feb 2024 14:35:34 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1F2CF68C7FF; Mon, 26 Feb 2024 16:35:32 +0200 (EET) Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3FC2468BCDC for ; Mon, 26 Feb 2024 16:35:25 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1708958125; bh=B7fhYLjQEjjWN1pfbSALZblRjm4hnzAkUmGUaGzh7JI=; h=From:To:Cc:Subject:Date:From; b=jUFcF4dcJIeKvWqrECJxZtp0mL8hU4Gz9L2G0xDEU9gZoKqLb9DMA5KkBe/6/yaQB y8OGyQhXH18pCUw+gbaENuKOoBBT3tSXl8PsIqtMucV6h/Jz3Az4Zgqm/mo5eqkGeA 0BeVFhYri9WPn8qid9zxpS1ZROtgYqayzgpmbRoU= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id E9FC6402FF; Mon, 26 Feb 2024 15:35:24 +0100 (CET) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Mon, 26 Feb 2024 15:35:11 +0100 Message-ID: <20240226143521.57913-1-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.43.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] avcodec/aom_film_grain: add AOM film grain synthesis X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Niklas Haas Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: RnJvbTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+CgpJbXBsZW1lbnRhdGlvbiBjb3BpZWQg d2hvbGVzYWxlIGZyb20gZGF2MWQsIHNhbnMgU0lNRCwgdW5kZXIgcGVybWlzc2l2ZQpsaWNlbnNl LiBUaGlzIGltcGxlbWVudGF0aW9uIHdhcyBleHRlbnNpdmVseSB2ZXJpZmllZCB0byBiZSBiaXQt ZXhhY3QsCnNvIGl0IHNlcnZlcyBhcyBhIG11Y2ggYmV0dGVyIHN0YXJ0aW5nIHBvaW50IHRoYW4g dHJ5aW5nIHRvIHJlLWVuZ2luZWVyCnRoaXMgZnJvbSBzY3JhdGNoIGZvciBubyByZWFzb24uIChJ IGFsc28gYXV0aG9yZWQgdGhlIG9yaWdpbmFsCmltcGxlbWVudGF0aW9uIGluIGRhdjFkLCBzbyBh bnkgImNsZWFuIHJvb20iIGltcGxlbWVudGF0aW9uIHdvdWxkIGVuZCB1cApsb29raW5nIG11Y2gg dGhlIHNhbWUsIGFueXdheSkKClRoZSBub3RhYmxlIGNoYW5nZXMgSSBoYWQgdG8gbWFrZSB3aGls ZSBhZGFwdGluZyB0aGlzIGZyb20gdGhlIGRhdjFkCmNvZGUtYmFzZSB0byB0aGUgRkZtcGVnIGNv ZGViYXNlIGluY2x1ZGU6CgotIHJlcGxhY2luZyBiaXRkZXB0aCBwYXJhbWV0ZXJzIGJ5IHByZXBy b2Nlc3NvciBzeW1ib2wgKEJJVERFUFRIKQotIHJlb3JkZXJpbmcgdmFyaWFibGUgZGVjbGFyYXRp b25zIHRvIGF2b2lkIHRyaWdnZXJpbmcgd2FybmluZ3MKLSByZXBsYWNpbmcgc2V2ZXJhbCBpbmxp bmUgaGVscGVycyBieSBhdnV0aWwgZXF1aXZhbGVudHMKLSBjaGFuZ2luZyBjb2RlIHRoYXQgYWNj ZXNzZXMgZnJhbWUgbWV0YWRhdGEKLSByZXBsYWNpbmcgcmF3IHBsYW5lIGNvcHlpbmcgbG9naWMg YnkgYXZfaW1hZ2VfY29weV9wbGFuZQoKQXBhcnQgZnJvbSB0aGlzLCB0aGUgaW1wbGVtZW50YXRp b24gaXMgYmFzaWNhbGx5IHVubW9kaWZpZWQuCi0tLQogbGliYXZjb2RlYy9hb21fZmlsbV9ncmFp bi5jICAgICAgICAgIHwgMjg4ICsrKysrKysrKysrKysKIGxpYmF2Y29kZWMvYW9tX2ZpbG1fZ3Jh aW4uaCAgICAgICAgICB8ICAzOCArKwogbGliYXZjb2RlYy9hb21fZmlsbV9ncmFpbl90ZW1wbGF0 ZS5jIHwgNTk5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA5 MjUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYW9tX2ZpbG1f Z3JhaW4uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW4uaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW5fdGVtcGxhdGUuYwoK ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW4uYyBiL2xpYmF2Y29kZWMvYW9t X2ZpbG1fZ3JhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWJk YWFmYzM5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2FvbV9maWxtX2dyYWluLmMK QEAgLTAsMCArMSwyODggQEAKKy8qCisgKiBBT00gZmlsbSBncmFpbiBzeW50aGVzaXMKKyAqIENv cHlyaWdodCAoYykgMjAyMyBOaWtsYXMgSGFhcyA8ZmZtcGVnQGhhYXNuLnh5ej4KKyAqCisgKiBU aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl CisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBAZmlsZQorICogQU9NIGZp bG0gZ3JhaW4gc3ludGhlc2lzLgorICogQGF1dGhvciBOaWtsYXMgSGFhcyA8ZmZtcGVnQGhhYXNu Lnh5ej4KKyAqLworCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAi bGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisKKyNpbmNsdWRlICJhb21fZmlsbV9ncmFpbi5oIgorCisv LyBDb21tb24vc2hhcmVkIGhlbHBlcnMgKG5vdCBkZXBlbmRlbnQgb24gQklUREVQVEgpCitzdGF0 aWMgaW5saW5lIGludCBnZXRfcmFuZG9tX251bWJlcihjb25zdCBpbnQgYml0cywgdW5zaWduZWQg KmNvbnN0IHN0YXRlKSB7CisgICAgY29uc3QgaW50IHIgPSAqc3RhdGU7CisgICAgdW5zaWduZWQg Yml0ID0gKChyID4+IDApIF4gKHIgPj4gMSkgXiAociA+PiAzKSBeIChyID4+IDEyKSkgJiAxOwor ICAgICpzdGF0ZSA9IChyID4+IDEpIHwgKGJpdCA8PCAxNSk7CisKKyAgICByZXR1cm4gKCpzdGF0 ZSA+PiAoMTYgLSBiaXRzKSkgJiAoKDEgPDwgYml0cykgLSAxKTsKK30KKworc3RhdGljIGlubGlu ZSBpbnQgcm91bmQyKGNvbnN0IGludCB4LCBjb25zdCB1aW50NjRfdCBzaGlmdCkgeworICAgIHJl dHVybiAoeCArICgoMSA8PCBzaGlmdCkgPj4gMSkpID4+IHNoaWZ0OworfQorCitzdGF0aWMgY29u c3QgaW50MTZfdCBnYXVzc2lhbl9zZXF1ZW5jZVsyMDQ4XTsKKworI2RlZmluZSBCSVRERVBUSCAx MgorI2luY2x1ZGUgImFvbV9maWxtX2dyYWluX3RlbXBsYXRlLmMiCisjdW5kZWYgQklUREVQVEgK KworI2RlZmluZSBCSVRERVBUSCAxMAorI2luY2x1ZGUgImFvbV9maWxtX2dyYWluX3RlbXBsYXRl LmMiCisjdW5kZWYgQklUREVQVEgKKworI2RlZmluZSBCSVRERVBUSCA5CisjaW5jbHVkZSAiYW9t X2ZpbG1fZ3JhaW5fdGVtcGxhdGUuYyIKKyN1bmRlZiBCSVRERVBUSAorCisjZGVmaW5lIEJJVERF UFRIIDgKKyNpbmNsdWRlICJhb21fZmlsbV9ncmFpbl90ZW1wbGF0ZS5jIgorI3VuZGVmIEJJVERF UFRICisKKworaW50IGZmX2FvbV9hcHBseV9maWxtX2dyYWluKEFWRnJhbWUgKm91dCwgY29uc3Qg QVZGcmFtZSAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVZGaWxtR3Jh aW5QYXJhbXMgKnBhcmFtcykKK3sKKyAgICBhdl9hc3NlcnQwKG91dC0+Zm9ybWF0ID09IGluLT5m b3JtYXQpOworICAgIHN3aXRjaCAoaW4tPmZvcm1hdCkgeworICAgIGNhc2UgQVZfUElYX0ZNVF9H UkFZODoKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIwUDoKKyAgICBjYXNlIEFWX1BJWF9GTVRf WVVWNDIyUDoKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDQ0UDoKKyAgICBjYXNlIEFWX1BJWF9G TVRfWVVWSjQyMFA6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVko0MjJQOgorICAgIGNhc2UgQVZf UElYX0ZNVF9ZVVZKNDQ0UDoKKyAgICAgICAgcmV0dXJuIGFwcGx5X2ZpbG1fZ3JhaW5fOChvdXQs IGluLCBwYXJhbXMpOworICAgIGNhc2UgQVZfUElYX0ZNVF9HUkFZOToKKyAgICBjYXNlIEFWX1BJ WF9GTVRfWVVWNDIwUDk6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMlA5OgorICAgIGNhc2Ug QVZfUElYX0ZNVF9ZVVY0NDRQOToKKyAgICAgICAgcmV0dXJuIGFwcGx5X2ZpbG1fZ3JhaW5fOShv dXQsIGluLCBwYXJhbXMpOworICAgIGNhc2UgQVZfUElYX0ZNVF9HUkFZMTA6CisgICAgY2FzZSBB Vl9QSVhfRk1UX1lVVjQyMFAxMDoKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIyUDEwOgorICAg IGNhc2UgQVZfUElYX0ZNVF9ZVVY0NDRQMTA6CisgICAgICAgIHJldHVybiBhcHBseV9maWxtX2dy YWluXzEwKG91dCwgaW4sIHBhcmFtcyk7CisgICAgY2FzZSBBVl9QSVhfRk1UX0dSQVkxMjoKKyAg ICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIwUDEyOgorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjJQ MTI6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQ0NFAxMjoKKyAgICAgICAgcmV0dXJuIGFwcGx5 X2ZpbG1fZ3JhaW5fMTIob3V0LCBpbiwgcGFyYW1zKTsKKyAgICB9CisKKyAgICAvKiBUaGUgQVYx IHNwZWMgb25seSBkZWZpbmVzIGZpbG0gZ3JhaW4gc3ludGhlc2lzIGZvciB0aGVzZSBmb3JtYXRz ICovCisgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cit9CisKKy8vIFRha2VuIGZyb20g dGhlIEFWMSBzcGVjLiBSYW5nZSBpcyBbLTIwNDgsIDIwNDddLCBtZWFuIGlzIDAgYW5kIHN0ZGRl diBpcyA1MTIKK3N0YXRpYyBjb25zdCBpbnQxNl90IGdhdXNzaWFuX3NlcXVlbmNlWzIwNDhdID0g eworICAgIDU2LCAgICA1NjgsICAgLTE4MCwgIDE3MiwgICAxMjQsICAgLTg0LCAgIDE3MiwgICAt NjQsICAgLTkwMCwgIDI0LCAgIDgyMCwKKyAgICAyMjQsICAgMTI0OCwgIDk5NiwgICAyNzIsICAg LTgsICAgIC05MTYsICAtMzg4LCAgLTczMiwgIC0xMDQsICAtMTg4LCA4MDAsCisgICAgMTEyLCAg IC02NTIsICAtMzIwLCAgLTM3NiwgIDE0MCwgICAtMjUyLCAgNDkyLCAgIC0xNjgsICA0NCwgICAg LTc4OCwgNTg4LAorICAgIC01ODQsICA1MDAsICAgLTIyOCwgIDEyLCAgICA2ODAsICAgMjcyLCAg IC00NzYsICA5NzIsICAgLTEwMCwgIDY1MiwgIDM2OCwKKyAgICA0MzIsICAgLTE5NiwgIC03MjAs ICAtMTkyLCAgMTAwMCwgIC0zMzIsICA2NTIsICAgLTEzNiwgIC01NTIsICAtNjA0LCAtNCwKKyAg ICAxOTIsICAgLTIyMCwgIC0xMzYsICAxMDAwLCAgLTUyLCAgIDM3MiwgICAtOTYsICAgLTYyNCwg IDEyNCwgICAtMjQsICAzOTYsCisgICAgNTQwLCAgIC0xMiwgICAtMTA0LCAgNjQwLCAgIDQ2NCwg ICAyNDQsICAgLTIwOCwgIC04NCwgICAzNjgsICAgLTUyOCwgLTc0MCwKKyAgICAyNDgsICAgLTk2 OCwgIC04NDgsICA2MDgsICAgMzc2LCAgIC02MCwgICAtMjkyLCAgLTQwLCAgIC0xNTYsICAyNTIs ICAtMjkyLAorICAgIDI0OCwgICAyMjQsICAgLTI4MCwgIDQwMCwgICAtMjQ0LCAgMjQ0LCAgIC02 MCwgICA3NiwgICAgLTgwLCAgIDIxMiwgIDUzMiwKKyAgICAzNDAsICAgMTI4LCAgIC0zNiwgICA4 MjQsICAgLTM1MiwgIC02MCwgICAtMjY0LCAgLTk2LCAgIC02MTIsICA0MTYsICAtNzA0LAorICAg IDIyMCwgICAtMjA0LCAgNjQwLCAgIC0xNjAsICAxMjIwLCAgLTQwOCwgIDkwMCwgICAzMzYsICAg MjAsICAgIC0zMzYsIC05NiwKKyAgICAtNzkyLCAgMzA0LCAgIDQ4LCAgICAtMjgsICAgLTEyMzIs IC0xMTcyLCAtNDQ4LCAgMTA0LCAgIC0yOTIsICAtNTIwLCAyNDQsCisgICAgNjAsICAgIC05NDgs ICAwLCAgICAgLTcwOCwgIDI2OCwgICAxMDgsICAgMzU2LCAgIC01NDgsICA0ODgsICAgLTM0NCwg LTEzNiwKKyAgICA0ODgsICAgLTE5NiwgIC0yMjQsICA2NTYsICAgLTIzNiwgIC0xMTI4LCA2MCwg ICAgNCwgICAgIDE0MCwgICAyNzYsICAtNjc2LAorICAgIC0zNzYsICAxNjgsICAgLTEwOCwgIDQ2 NCwgICA4LCAgICAgNTY0LCAgIDY0LCAgICAyNDAsICAgMzA4LCAgIC0zMDAsIC00MDAsCisgICAg LTQ1NiwgIC0xMzYsICA1NiwgICAgMTIwLCAgIC00MDgsICAtMTE2LCAgNDM2LCAgIDUwNCwgICAt MjMyLCAgMzI4LCAgODQ0LAorICAgIC0xNjQsICAtODQsICAgNzg0LCAgIC0xNjgsICAyMzIsICAg LTIyNCwgIDM0OCwgICAtMzc2LCAgMTI4LCAgIDU2OCwgIDk2LAorICAgIC0xMjQ0LCAtMjg4LCAg Mjc2LCAgIDg0OCwgICA4MzIsICAgLTM2MCwgIDY1NiwgICA0NjQsICAgLTM4NCwgIC0zMzIsIC0z NTYsCisgICAgNzI4LCAgIC0zODgsICAxNjAsICAgLTE5MiwgIDQ2OCwgICAyOTYsICAgMjI0LCAg IDE0MCwgICAtNzc2LCAgLTEwMCwgMjgwLAorICAgIDQsICAgICAxOTYsICAgNDQsICAgIC0zNiwg ICAtNjQ4LCAgOTMyLCAgIDE2LCAgICAxNDI4LCAgMjgsICAgIDUyOCwgIDgwOCwKKyAgICA3NzIs ICAgMjAsICAgIDI2OCwgICA4OCwgICAgLTMzMiwgIC0yODQsICAxMjQsICAgLTM4NCwgIC00NDgs ICAyMDgsICAtMjI4LAorICAgIC0xMDQ0LCAtMzI4LCAgNjYwLCAgIDM4MCwgICAtMTQ4LCAgLTMw MCwgIDU4OCwgICAyNDAsICAgNTQwLCAgIDI4LCAgIDEzNiwKKyAgICAtODgsICAgLTQzNiwgIDI1 NiwgICAyOTYsICAgLTEwMDAsIDE0MDAsICAwLCAgICAgLTQ4LCAgIDEwNTYsICAtMTM2LCAyNjQs CisgICAgLTUyOCwgIC0xMTA4LCA2MzIsICAgLTQ4NCwgIC01OTIsICAtMzQ0LCAgNzk2LCAgIDEy NCwgICAtNjY4LCAgLTc2OCwgMzg4LAorICAgIDEyOTYsICAtMjMyLCAgLTE4OCwgIC0yMDAsICAt Mjg4LCAgLTQsICAgIDMwOCwgICAxMDAsICAgLTE2OCwgIDI1NiwgIC01MDAsCisgICAgMjA0LCAg IC01MDgsICA2NDgsICAgLTEzNiwgIDM3MiwgICAtMjcyLCAgLTEyMCwgIC0xMDA0LCAtNTUyLCAg LTU0OCwgLTM4NCwKKyAgICA1NDgsICAgLTI5NiwgIDQyOCwgICAtMTA4LCAgLTgsICAgIC05MTIs ICAtMzI0LCAgLTIyNCwgIC04OCwgICAtMTEyLCAtMjIwLAorICAgIC0xMDAsICA5OTYsICAgLTc5 NiwgIDU0OCwgICAzNjAsICAgLTIxNiwgIDE4MCwgICA0MjgsICAgLTIwMCwgIC0yMTIsIDE0OCwK KyAgICA5NiwgICAgMTQ4LCAgIDI4NCwgICAyMTYsICAgLTQxMiwgIC0zMjAsICAxMjAsICAgLTMw MCwgIC0zODQsICAtNjA0LCAtNTcyLAorICAgIC0zMzIsICAtOCwgICAgLTE4MCwgIC0xNzYsICA2 OTYsICAgMTE2LCAgIC04OCwgICA2MjgsICAgNzYsICAgIDQ0LCAgIC01MTYsCisgICAgMjQwLCAg IC0yMDgsICAtNDAsICAgMTAwLCAgIC01OTIsICAzNDQsICAgLTMwOCwgIC00NTIsICAtMjI4LCAg MjAsICAgOTE2LAorICAgIC0xNzUyLCAtMTM2LCAgLTM0MCwgIC04MDQsICAxNDAsICAgNDAsICAg IDUxMiwgICAzNDAsICAgMjQ4LCAgIDE4NCwgIC00OTIsCisgICAgODk2LCAgIC0xNTYsICA5MzIs ICAgLTYyOCwgIDMyOCwgICAtNjg4LCAgLTQ0OCwgIC02MTYsICAtNzUyLCAgLTEwMCwgNTYwLAor ICAgIC0xMDIwLCAxODAsICAgLTgwMCwgIC02NCwgICA3NiwgICAgNTc2LCAgIDEwNjgsICAzOTYs ICAgNjYwLCAgIDU1MiwgIC0xMDgsCisgICAgLTI4LCAgIDMyMCwgICAtNjI4LCAgMzEyLCAgIC05 MiwgICAtOTIsICAgLTQ3MiwgIDI2OCwgICAxNiwgICAgNTYwLCAgNTE2LAorICAgIC02NzIsICAt NTIsICAgNDkyLCAgIC0xMDAsICAyNjAsICAgMzg0LCAgIDI4NCwgICAyOTIsICAgMzA0LCAgIC0x NDgsIDg4LAorICAgIC0xNTIsICAxMDEyLCAgMTA2NCwgIC0yMjgsICAxNjQsICAgLTM3NiwgIC02 ODQsICA1OTIsICAgLTM5MiwgIDE1NiwgIDE5NiwKKyAgICAtNTI0LCAgLTY0LCAgIC04ODQsICAx NjAsICAgLTE3NiwgIDYzNiwgICA2NDgsICAgNDA0LCAgIC0zOTYsICAtNDM2LCA4NjQsCisgICAg NDI0LCAgIC03MjgsICA5ODgsICAgLTYwNCwgIDkwNCwgICAtNTkyLCAgMjk2LCAgIC0yMjQsICA1 MzYsICAgLTE3NiwgLTkyMCwKKyAgICA0MzYsICAgLTQ4LCAgIDExNzYsICAtODg0LCAgNDE2LCAg IC03NzYsICAtODI0LCAgLTg4NCwgIDUyNCwgICAtNTQ4LCAtNTY0LAorICAgIC02OCwgICAtMTY0 LCAgLTk2LCAgIDY5MiwgICAzNjQsICAgLTY5MiwgIC0xMDEyLCAtNjgsICAgMjYwLCAgIC00ODAs IDg3NiwKKyAgICAtMTExNiwgNDUyLCAgIC0zMzIsICAtMzUyLCAgODkyLCAgIC0xMDg4LCAxMjIw LCAgLTY3NiwgIDEyLCAgICAtMjkyLCAyNDQsCisgICAgNDk2LCAgIDM3MiwgICAtMzIsICAgMjgw LCAgIDIwMCwgICAxMTIsICAgLTQ0MCwgIC05NiwgICAyNCwgICAgLTY0NCwgLTE4NCwKKyAgICA1 NiwgICAgLTQzMiwgIDIyNCwgICAtOTgwLCAgMjcyLCAgIC0yNjAsICAxNDQsICAgLTQzNiwgIDQy MCwgICAzNTYsICAzNjQsCisgICAgLTUyOCwgIDc2LCAgICAxNzIsICAgLTc0NCwgIC0zNjgsICA0 MDQsICAgLTc1MiwgIC00MTYsICA2ODQsICAgLTY4OCwgNzIsCisgICAgNTQwLCAgIDQxNiwgICA5 MiwgICAgNDQ0LCAgIDQ4MCwgICAtNzIsICAgLTE0MTYsIDE2NCwgICAtMTE3MiwgLTY4LCAgMjQs CisgICAgNDI0LCAgIDI2NCwgICAxMDQwLCAgMTI4LCAgIC05MTIsICAtNTI0LCAgLTM1NiwgIDY0 LCAgICA4NzYsICAgLTEyLCAgNCwKKyAgICAtODgsICAgNTMyLCAgIDI3MiwgICAtNTI0LCAgMzIw LCAgIDI3NiwgICAtNTA4LCAgOTQwLCAgIDI0LCAgICAtNDAwLCAtMTIwLAorICAgIDc1NiwgICA2 MCwgICAgMjM2LCAgIC00MTIsICAxMDAsICAgMzc2LCAgIC00ODQsICA0MDAsICAgLTEwMCwgIC03 NDAsIC0xMDgsCisgICAgLTI2MCwgIDMyOCwgICAtMjY4LCAgMjI0LCAgIC0yMDAsICAtNDE2LCAg MTg0LCAgIC02MDQsICAtNTY0LCAgLTIwLCAgMjk2LAorICAgIDYwLCAgICA4OTIsICAgLTg4OCwg IDYwLCAgICAxNjQsICAgNjgsICAgIC03NjAsICAyMTYsICAgLTI5NiwgIDkwNCwgIC0zMzYsCisg ICAgLTI4LCAgIDQwNCwgICAtMzU2LCAgLTU2OCwgIC0yMDgsICAtMTQ4MCwgLTUxMiwgIDI5Niwg ICAzMjgsICAgLTM2MCwgLTE2NCwKKyAgICAtMTU2MCwgLTc3NiwgIDExNTYsICAtNDI4LCAgMTY0 LCAgIC01MDQsICAtMTEyLCAgMTIwLCAgIC0yMTYsICAtMTQ4LCAtMjY0LAorICAgIDMwOCwgICAz MiwgICAgNjQsICAgIC03MiwgICA3MiwgICAgMTE2LCAgIDE3NiwgICAtNjQsICAgLTI3MiwgIDQ2 MCwgIC01MzYsCisgICAgLTc4NCwgIC0yODAsICAzNDgsICAgMTA4LCAgIC03NTIsICAtMTMyLCAg NTI0LCAgIC01NDAsICAtNzc2LCAgMTE2LCAgLTI5NiwKKyAgICAtMTE5NiwgLTI4OCwgIC01NjAs ICAxMDQwLCAgLTQ3MiwgIDExNiwgICAtODQ4LCAgLTExMTYsIDExNiwgICA2MzYsICA2OTYsCisg ICAgMjg0LCAgIC0xNzYsICAxMDE2LCAgMjA0LCAgIC04NjQsICAtNjQ4LCAgLTI0OCwgIDM1Niwg ICA5NzIsICAgLTU4NCwgLTIwNCwKKyAgICAyNjQsICAgODgwLCAgIDUyOCwgICAtMjQsICAgLTE4 NCwgIDExNiwgICA0NDgsICAgLTE0NCwgIDgyOCwgICA1MjQsICAyMTIsCisgICAgLTIxMiwgIDUy LCAgICAxMiwgICAgMjAwLCAgIDI2OCwgICAtNDg4LCAgLTQwNCwgIC04ODAsICA4MjQsICAgLTY3 MiwgLTQwLAorICAgIDkwOCwgICAtMjQ4LCAgNTAwLCAgIDcxNiwgICAtNTc2LCAgNDkyLCAgIC01 NzYsICAxNiwgICAgNzIwLCAgIC0xMDgsIDM4NCwKKyAgICAxMjQsICAgMzQ0LCAgIDI4MCwgICA1 NzYsICAgLTUwMCwgIDI1MiwgICAxMDQsICAgLTMwOCwgIDE5NiwgICAtMTg4LCAtOCwKKyAgICAx MjY4LCAgMjk2LCAgIDEwMzIsICAtMTE5NiwgNDM2LCAgIDMxNiwgICAzNzIsICAgLTQzMiwgIC0y MDAsICAtNjYwLCA3MDQsCisgICAgLTIyNCwgIDU5NiwgICAtMTMyLCAgMjY4LCAgIDMyLCAgICAt NDUyLCAgODg0LCAgIDEwNCwgICAtMTAwOCwgNDI0LCAgLTEzNDgsCisgICAgLTI4MCwgIDQsICAg ICAtMTE2OCwgMzY4LCAgIDQ3NiwgICA2OTYsICAgMzAwLCAgIC04LCAgICAyNCwgICAgMTgwLCAg LTU5MiwKKyAgICAtMTk2LCAgMzg4LCAgIDMwNCwgICA1MDAsICAgNzI0LCAgIC0xNjAsICAyNDQs ICAgLTg0LCAgIDI3MiwgICAtMjU2LCAtNDIwLAorICAgIDMyMCwgICAyMDgsICAgLTE0NCwgIC0x NTYsICAxNTYsICAgMzY0LCAgIDQ1MiwgICAyOCwgICAgNTQwLCAgIDMxNiwgIDIyMCwKKyAgICAt NjQ0LCAgLTI0OCwgIDQ2NCwgICA3MiwgICAgMzYwLCAgIDMyLCAgICAtMzg4LCAgNDk2LCAgIC02 ODAsICAtNDgsICAyMDgsCisgICAgLTExNiwgIC00MDgsICA2MCwgICAgLTYwNCwgIC0zOTIsICA1 NDgsICAgLTg0MCwgIDc4NCwgICAtNDYwLCAgNjU2LCAgLTU0NCwKKyAgICAtMzg4LCAgLTI2NCwg IDkwOCwgICAtODAwLCAgLTYyOCwgIC02MTIsICAtNTY4LCAgNTcyLCAgIC0yMjAsICAxNjQsICAy ODgsCisgICAgLTE2LCAgIC0zMDgsICAzMDgsICAgLTExMiwgIC02MzYsICAtNzYwLCAgMjgwLCAg IC02NjgsICA0MzIsICAgMzY0LCAgMjQwLAorICAgIC0xOTYsICA2MDQsICAgMzQwLCAgIDM4NCwg ICAxOTYsICAgNTkyLCAgIC00NCwgICAtNTAwLCAgNDMyLCAgIC01ODAsIC0xMzIsCisgICAgNjM2 LCAgIC03NiwgICAzOTIsICAgNCwgICAgIC00MTIsICA1NDAsICAgNTA4LCAgIDMyOCwgICAtMzU2 LCAgLTM2LCAgMTYsCisgICAgLTIyMCwgIC02NCwgICAtMjQ4LCAgLTYwLCAgIDI0LCAgICAtMTky LCAgMzY4LCAgIDEwNDAsICA5MiwgICAgLTI0LCAgLTEwNDQsCisgICAgLTMyLCAgIDQwLCAgICAx MDQsICAgMTQ4LCAgIDE5MiwgICAtMTM2LCAgLTUyMCwgIDU2LCAgICAtODE2LCAgLTIyNCwgNzMy LAorICAgIDM5MiwgICAzNTYsICAgMjEyLCAgIC04MCwgICAtNDI0LCAgLTEwMDgsIC0zMjQsICA1 ODgsICAgLTE0OTYsIDU3NiwgIDQ2MCwKKyAgICAtODE2LCAgLTg0OCwgIDU2LCAgICAtNTgwLCAg LTkyLCAgIC0xMzcyLCAtMTEyLCAgLTQ5NiwgIDIwMCwgICAzNjQsICA1MiwKKyAgICAtMTQwLCAg NDgsICAgIC00OCwgICAtNjAsICAgODQsICAgIDcyLCAgICA0MCwgICAgMTMyLCAgIC0zNTYsICAt MjY4LCAtMTA0LAorICAgIC0yODQsICAtNDA0LCAgNzMyLCAgIC01MjAsICAxNjQsICAgLTMwNCwg IC01NDAsICAxMjAsICAgMzI4LCAgIC03NiwgIC00NjAsCisgICAgNzU2LCAgIDM4OCwgICA1ODgs ICAgMjM2LCAgIC00MzYsICAtNzIsICAgLTE3NiwgIC00MDQsICAtMzE2LCAgLTE0OCwgNzE2LAor ICAgIC02MDQsICA0MDQsICAgLTcyLCAgIC04OCwgICAtODg4LCAgLTY4LCAgIDk0NCwgICA4OCwg ICAgLTIyMCwgIC0zNDQsIDk2MCwKKyAgICA0NzIsICAgNDYwLCAgIC0yMzIsICA3MDQsICAgMTIw LCAgIDgzMiwgICAtMjI4LCAgNjkyLCAgIC01MDgsICAxMzIsICAtNDc2LAorICAgIDg0NCwgICAt NzQ4LCAgLTM2NCwgIC00NCwgICAxMTE2LCAgLTExMDQsIC0xMDU2LCA3NiwgICAgNDI4LCAgIDU1 MiwgIC02OTIsCisgICAgNjAsICAgIDM1NiwgICA5NiwgICAgLTM4NCwgIC0xODgsICAtNjEyLCAg LTU3NiwgIDczNiwgICA1MDgsICAgODkyLCAgMzUyLAorICAgIC0xMTMyLCA1MDQsICAgLTI0LCAg IC0zNTIsICAzMjQsICAgMzMyLCAgIC02MDAsICAtMzEyLCAgMjkyLCAgIDUwOCwgIC0xNDQsCisg ICAgLTgsICAgIDQ4NCwgICA0OCwgICAgMjg0LCAgIC0yNjAsICAtMjQwLCAgMjU2LCAgIC0xMDAs ICAtMjkyLCAgLTIwNCwgLTQ0LAorICAgIDQ3MiwgICAtMjA0LCAgOTA4LCAgIC0xODgsICAtMTAw MCwgLTI1NiwgIDkyLCAgICAxMTY0LCAgLTM5MiwgIDU2NCwgIDM1NiwKKyAgICA2NTIsICAgLTI4 LCAgIC04ODQsICAyNTYsICAgNDg0LCAgIC0xOTIsICA3NjAsICAgLTE3NiwgIDM3NiwgICAtNTI0 LCAtNDUyLAorICAgIC00MzYsICA4NjAsICAgLTczNiwgIDIxMiwgICAxMjQsICAgNTA0LCAgIC00 NzYsICA0NjgsICAgNzYsICAgIC00NzIsIDU1MiwKKyAgICAtNjkyLCAgLTk0NCwgIC02MjAsICA3 NDAsICAgLTI0MCwgIDQwMCwgICAxMzIsICAgMjAsICAgIDE5MiwgICAtMTk2LCAyNjQsCisgICAg LTY2OCwgIC0xMDEyLCAtNjAsICAgMjk2LCAgIC0zMTYsICAtODI4LCAgNzYsICAgIC0xNTYsICAy ODQsICAgLTc2OCwgLTQ0OCwKKyAgICAtODMyLCAgMTQ4LCAgIDI0OCwgICA2NTIsICAgNjE2LCAg IDEyMzYsICAyODgsICAgLTMyOCwgIC00MDAsICAtMTI0LCA1ODgsCisgICAgMjIwLCAgIDUyMCwg ICAtNjk2LCAgMTAzMiwgIDc2OCwgICAtNzQwLCAgLTkyLCAgIC0yNzIsICAyOTYsICAgNDQ4LCAg LTQ2NCwKKyAgICA0MTIsICAgLTIwMCwgIDM5MiwgICA0NDAsICAgLTIwMCwgIDI2NCwgICAtMTUy LCAgLTI2MCwgIDMyMCwgICAxMDMyLCAyMTYsCisgICAgMzIwLCAgIC04LCAgICAtNjQsICAgMTU2 LCAgIC0xMDE2LCAxMDg0LCAgMTE3MiwgIDUzNiwgICA0ODQsICAgLTQzMiwgMTMyLAorICAgIDM3 MiwgICAtNTIsICAgLTI1NiwgIDg0LCAgICAxMTYsICAgLTM1MiwgIDQ4LCAgICAxMTYsICAgMzA0 LCAgIC0zODQsIDQxMiwKKyAgICA5MjQsICAgLTMwMCwgIDUyOCwgICA2MjgsICAgMTgwLCAgIDY0 OCwgICA0NCwgICAgLTk4MCwgIC0yMjAsICAxMzIwLCA0OCwKKyAgICAzMzIsICAgNzQ4LCAgIDUy NCwgICAtMjY4LCAgLTcyMCwgIDU0MCwgICAtMjc2LCAgNTY0LCAgIC0zNDQsICAtMjA4LCAtMTk2 LAorICAgIDQzNiwgICA4OTYsICAgODgsICAgIC0zOTIsICAxMzIsICAgODAsICAgIC05NjQsICAt Mjg4LCAgNTY4LCAgIDU2LCAgIC00OCwKKyAgICAtNDU2LCAgODg4LCAgIDgsICAgICA1NTIsICAg LTE1NiwgIC0yOTIsICA5NDgsICAgMjg4LCAgIDEyOCwgICAtNzE2LCAtMjkyLAorICAgIDExOTIs ICAtMTUyLCAgODc2LCAgIDM1MiwgICAtNjAwLCAgLTI2MCwgIC04MTIsICAtNDY4LCAgLTI4LCAg IC0xMjAsIC0zMiwKKyAgICAtNDQsICAgMTI4NCwgIDQ5NiwgICAxOTIsICAgNDY0LCAgIDMxMiwg ICAtNzYsICAgLTUxNiwgIC0zODAsICAtNDU2LCAtMTAxMiwKKyAgICAtNDgsICAgMzA4LCAgIC0x NTYsICAzNiwgICAgNDkyLCAgIC0xNTYsICAtODA4LCAgMTg4LCAgIDE2NTIsICA2OCwgICAtMTIw LAorICAgIC0xMTYsICAzMTYsICAgMTYwLCAgIC0xNDAsICAzNTIsICAgODA4LCAgIC00MTYsICA1 OTIsICAgMzE2LCAgIC00ODAsIDU2LAorICAgIDUyOCwgICAtMjA0LCAgLTU2OCwgIDM3MiwgICAt MjMyLCAgNzUyLCAgIC0zNDQsICA3NDQsICAgLTQsICAgIDMyNCwgIC00MTYsCisgICAgLTYwMCwg IDc2OCwgICAyNjgsICAgLTI0OCwgIC04OCwgICAtMTMyLCAgLTQyMCwgIC00MzIsICA4MCwgICAg LTI4OCwgNDA0LAorICAgIC0zMTYsICAtMTIxNiwgLTU4OCwgIDUyMCwgICAtMTA4LCAgOTIsICAg IC0zMjAsICAzNjgsICAgLTQ4MCwgIC0yMTYsIC05MiwKKyAgICAxNjg4LCAgLTMwMCwgIDE4MCwg ICAxMDIwLCAgLTE3NiwgIDgyMCwgICAtNjgsICAgLTIyOCwgIC0yNjAsICA0MzYsICAtOTA0LAor ICAgIDIwLCAgICA0MCwgICAgLTUwOCwgIDQ0MCwgICAtNzM2LCAgMzEyLCAgIDMzMiwgICAyMDQs ICAgNzYwLCAgIC0zNzIsIDcyOCwKKyAgICA5NiwgICAgLTIwLCAgIC02MzIsICAtNTIwLCAgLTU2 MCwgIDMzNiwgICAxMDc2LCAgLTY0LCAgIC01MzIsICA3NzYsICA1ODQsCisgICAgMTkyLCAgIDM5 NiwgICAtNzI4LCAgLTUyMCwgIDI3NiwgICAtMTg4LCAgODAsICAgIC01MiwgICAtNjEyLCAgLTI1 MiwgLTQ4LAorICAgIDY0OCwgICAyMTIsICAgLTY4OCwgIDIyOCwgICAtNTIsICAgLTI2MCwgIDQy OCwgICAtNDEyLCAgLTI3MiwgIC00MDQsIDE4MCwKKyAgICA4MTYsICAgLTc5NiwgIDQ4LCAgICAx NTIsICAgNDg0LCAgIC04OCwgICAtMjE2LCAgOTg4LCAgIDY5NiwgICAxODgsICAtNTI4LAorICAg IDY0OCwgICAtMTE2LCAgLTE4MCwgIDMxNiwgICA0NzYsICAgMTIsICAgIC01NjQsICA5NiwgICAg NDc2LCAgIC0yNTIsIC0zNjQsCisgICAgLTM3NiwgIC0zOTIsICA1NTYsICAgLTI1NiwgIC01NzYs ICAyNjAsICAgLTM1MiwgIDEyMCwgICAtMTYsICAgLTEzNiwgLTI2MCwKKyAgICAtNDkyLCAgNzIs ICAgIDU1NiwgICA2NjAsICAgNTgwLCAgIDYxNiwgICA3NzIsICAgNDM2LCAgIDQyNCwgICAtMzIs ICAtMzI0LAorICAgIC0xMjY4LCA0MTYsICAgLTMyNCwgIC04MCwgICA5MjAsICAgMTYwLCAgIDIy OCwgICA3MjQsICAgMzIsICAgIC01MTYsIDY0LAorICAgIDM4NCwgICA2OCwgICAgLTEyOCwgIDEz NiwgICAyNDAsICAgMjQ4LCAgIC0yMDQsICAtNjgsICAgMjUyLCAgIC05MzIsIC0xMjAsCisgICAg LTQ4MCwgIC02MjgsICAtODQsICAgMTkyLCAgIDg1MiwgICAtNDA0LCAgLTI4OCwgIC0xMzIsICAy MDQsICAgMTAwLCAgMTY4LAorICAgIC02OCwgICAtMTk2LCAgLTg2OCwgIDQ2MCwgICAxMDgwLCAg MzgwLCAgIC04MCwgICAyNDQsICAgMCwgICAgIDQ4NCwgIC04ODgsCisgICAgNjQsICAgIDE4NCwg ICAzNTIsICAgNjAwLCAgIDQ2MCwgICAxNjQsICAgNjA0LCAgIC0xOTYsICAzMjAsICAgLTY0LCAg NTg4LAorICAgIC0xODQsICAyMjgsICAgMTIsICAgIDM3MiwgICA0OCwgICAgLTg0OCwgIC0zNDQs ICAyMjQsICAgMjA4LCAgIC0yMDAsIDQ4NCwKKyAgICAxMjgsICAgLTIwLCAgIDI3MiwgICAtNDY4 LCAgLTg0MCwgIDM4NCwgICAyNTYsICAgLTcyMCwgIC01MjAsICAtNDY0LCAtNTgwLAorICAgIDEx MiwgICAtMTIwLCAgNjQ0LCAgIC0zNTYsICAtMjA4LCAgLTYwOCwgIC01MjgsICA3MDQsICAgNTYw LCAgIC00MjQsIDM5MiwKKyAgICA4MjgsICAgNDAsICAgIDg0LCAgICAyMDAsICAgLTE1MiwgIDAs ICAgICAtMTQ0LCAgNTg0LCAgIDI4MCwgICAtMTIwLCA4MCwKKyAgICAtNTU2LCAgLTk3MiwgIC0x OTYsICAtNDcyLCAgNzI0LCAgIDgwLCAgICAxNjgsICAgLTMyLCAgIDg4LCAgICAxNjAsICAtNjg4 LAorICAgIDAsICAgICAxNjAsICAgMzU2LCAgIDM3MiwgICAtNzc2LCAgNzQwLCAgIC0xMjgsICA2 NzYsICAgLTI0OCwgIC00ODAsIDQsCisgICAgLTM2NCwgIDk2LCAgICA1NDQsICAgMjMyLCAgIC0x MDMyLCA5NTYsICAgMjM2LCAgIDM1NiwgICAyMCwgICAgLTQwLCAgMzAwLAorICAgIDI0LCAgICAt Njc2LCAgLTU5NiwgIDEzMiwgICAxMTIwLCAgLTEwNCwgIDUzMiwgICAtMTA5NiwgNTY4LCAgIDY0 OCwgIDQ0NCwKKyAgICA1MDgsICAgMzgwLCAgIDE4OCwgICAtMzc2LCAgLTYwNCwgIDE0ODgsICA0 MjQsICAgMjQsICAgIDc1NiwgICAtMjIwLCAtMTkyLAorICAgIDcxNiwgICAxMjAsICAgOTIwLCAg IDY4OCwgICAxNjgsICAgNDQsICAgIC00NjAsICA1NjgsICAgMjg0LCAgIDExNDQsIDExNjAsCisg ICAgNjAwLCAgIDQyNCwgICA4ODgsICAgNjU2LCAgIC0zNTYsICAtMzIwLCAgMjIwLCAgIDMxNiwg ICAtMTc2LCAgLTcyNCwgLTE4OCwKKyAgICAtODE2LCAgLTYyOCwgIC0zNDgsICAtMjI4LCAgLTM4 MCwgIDEwMTIsICAtNDUyLCAgLTY2MCwgIDczNiwgICA5MjgsICA0MDQsCisgICAgLTY5NiwgIC03 MiwgICAtMjY4LCAgLTg5MiwgIDEyOCwgICAxODQsICAgLTM0NCwgIC03ODAsICAzNjAsICAgMzM2 LCAgNDAwLAorICAgIDM0NCwgICA0MjgsICAgNTQ4LCAgIC0xMTIsICAxMzYsICAgLTIyOCwgIC0y MTYsICAtODIwLCAgLTUxNiwgIDM0MCwgIDkyLAorICAgIC0xMzYsICAxMTYsICAgLTMwMCwgIDM3 NiwgICAtMjQ0LCAgMTAwLCAgIC0zMTYsICAtNTIwLCAgLTI4NCwgIC0xMiwgIDgyNCwKKyAgICAx NjQsICAgLTU0OCwgIC0xODAsICAtMTI4LCAgMTE2LCAgIC05MjQsICAtODI4LCAgMjY4LCAgIC0z NjgsICAtNTgwLCA2MjAsCisgICAgMTkyLCAgIDE2MCwgICAwLCAgICAgLTE2NzYsIDEwNjgsICA0 MjQsICAgLTU2LCAgIC0zNjAsICA0NjgsICAgLTE1NiwgNzIwLAorICAgIDI4OCwgICAtNTI4LCAg NTU2LCAgIC0zNjQsICA1NDgsICAgLTE0OCwgIDUwNCwgICAzMTYsICAgMTUyLCAgIC02NDgsIC02 MjAsCisgICAgLTY4NCwgIC0yNCwgICAtMzc2LCAgLTM4NCwgIC0xMDgsICAtOTIwLCAgLTEwMzIs IDc2OCwgICAxODAsICAgLTI2NCwgLTUwOCwKKyAgICAtMTI2OCwgLTI2MCwgIC02MCwgICAzMDAs ICAgLTI0MCwgIDk4OCwgICA3MjQsICAgLTM3NiwgIC01NzYsICAtMjEyLCAtNzM2LAorICAgIDU1 NiwgICAxOTIsICAgMTA5MiwgIC02MjAsICAtODgwLCAgMzc2LCAgIC01NiwgICAtNCwgICAgLTIx NiwgIC0zMiwgIDgzNiwKKyAgICAyNjgsICAgMzk2LCAgIDEzMzIsICA4NjQsICAgLTYwMCwgIDEw MCwgICA1NiwgICAgLTQxMiwgIC05MiwgICAzNTYsICAxODAsCisgICAgODg0LCAgIC00NjgsICAt NDM2LCAgMjkyLCAgIC0zODgsICAtODA0LCAgLTcwNCwgIC04NDAsICAzNjgsICAgLTM0OCwgMTQw LAorICAgIC03MjQsICAxNTM2LCAgOTQwLCAgIDM3MiwgICAxMTIsICAgLTM3MiwgIDQzNiwgICAt NDgwLCAgMTEzNiwgIDI5NiwgIC0zMiwKKyAgICAtMjI4LCAgMTMyLCAgIC00OCwgICAtMjIwLCAg ODY4LCAgIC0xMDE2LCAtNjAsICAgLTEwNDQsIC00NjQsICAzMjgsICA5MTYsCisgICAgMjQ0LCAg IDEyLCAgICAtNzM2LCAgLTI5NiwgIDM2MCwgICA0NjgsICAgLTM3NiwgIC0xMDgsICAtOTIsICAg Nzg4LCAgMzY4LAorICAgIC01NiwgICA1NDQsICAgNDAwLCAgIC02NzIsICAtNDIwLCAgNzI4LCAg IDE2LCAgICAzMjAsICAgNDQsICAgIC0yODQsIC0zODAsCisgICAgLTc5NiwgIDQ4OCwgICAxMzIs ICAgMjA0LCAgIC01OTYsICAtMzcyLCAgODgsICAgIC0xNTIsICAtOTA4LCAgLTYzNiwgLTU3MiwK KyAgICAtNjI0LCAgLTExNiwgIC02OTIsICAtMjAwLCAgLTU2LCAgIDI3NiwgICAtODgsICAgNDg0 LCAgIC0zMjQsICA5NDgsICA4NjQsCisgICAgMTAwMCwgIC00NTYsICAtMTg0LCAgLTI3NiwgIDI5 MiwgICAtMjk2LCAgMTU2LCAgIDY3NiwgICAzMjAsICAgMTYwLCAgOTA4LAorICAgIC04NCwgICAt MTIzNiwgLTI4OCwgIC0xMTYsICAyNjAsICAgLTM3MiwgIC02NDQsICA3MzIsICAgLTc1NiwgIC05 NiwgIDg0LAorICAgIDM0NCwgICAtNTIwLCAgMzQ4LCAgIC02ODgsICAyNDAsICAgLTg0LCAgIDIx NiwgICAtMTA0NCwgLTEzNiwgIC02NzYsIC0zOTYsCisgICAgLTE1MDAsIDk2MCwgICAtNDAsICAg MTc2LCAgIDE2OCwgICAxNTE2LCAgNDIwLCAgIC01MDQsICAtMzQ0LCAgLTM2NCwgLTM2MCwKKyAg ICAxMjE2LCAgLTk0MCwgIC0zODAsICAtMjEyLCAgMjUyLCAgIC02NjAsICAtNzA4LCAgNDg0LCAg IC00NDQsICAtMTUyLCA5MjgsCisgICAgLTEyMCwgIDExMTIsICA0NzYsICAgLTI2MCwgIDU2MCwg ICAtMTQ4LCAgLTM0NCwgIDEwOCwgICAtMTk2LCAgMjI4LCAgLTI4OCwKKyAgICA1MDQsICAgNTYw LCAgIC0zMjgsICAtODgsICAgMjg4LCAgIC0xMDA4LCA0NjAsICAgLTIyOCwgIDQ2OCwgICAtODM2 LCAtMTk2LAorICAgIDc2LCAgICAzODgsICAgMjMyLCAgIDQxMiwgICAtMTE2OCwgLTcxNiwgIC02 NDQsICA3NTYsICAgLTE3MiwgIC0zNTYsIC01MDQsCisgICAgMTE2LCAgIDQzMiwgICA1MjgsICAg NDgsICAgIDQ3NiwgICAtMTY4LCAgLTYwOCwgIDQ0OCwgICAxNjAsICAgLTUzMiwgLTI3MiwKKyAg ICAyOCwgICAgLTY3NiwgIC0xMiwgICA4MjgsICAgOTgwLCAgIDQ1NiwgICA1MjAsICAgMTA0LCAg IC0xMDQsICAyNTYsICAtMzQ0LAorICAgIC00LCAgICAtMjgsICAgLTM2OCwgIC01MiwgICAtNTI0 LCAgLTU3MiwgIC01NTYsICAtMjAwLCAgNzY4LCAgIDExMjQsIC0yMDgsCisgICAgLTUxMiwgIDE3 NiwgICAyMzIsICAgMjQ4LCAgIC0xNDgsICAtODg4LCAgNjA0LCAgIC02MDAsICAtMzA0LCAgODA0 LCAgLTE1NiwKKyAgICAtMjEyLCAgNDg4LCAgIC0xOTIsICAtODA0LCAgLTI1NiwgIDM2OCwgICAt MzYwLCAgLTkxNiwgIC0zMjgsICAyMjgsICAtMjQwLAorICAgIC00NDgsICAtNDcyLCAgODU2LCAg IC01NTYsICAtMzY0LCAgNTcyLCAgIC0xMiwgICAtMTU2LCAgLTM2OCwgIC0zNDAsIDQzMiwKKyAg ICAyNTIsICAgLTc1MiwgIC0xNTIsICAyODgsICAgMjY4LCAgIC01ODAsICAtODQ4LCAgLTU5Miwg IDEwOCwgICAtNzYsICAyNDQsCisgICAgMzEyLCAgIC03MTYsICA1OTIsICAgLTgwLCAgIDQzNiwg ICAzNjAsICAgNCwgICAgIC0yNDgsICAxNjAsICAgNTE2LCAgNTg0LAorICAgIDczMiwgICA0NCwg ICAgLTQ2OCwgIC0yODAsICAtMjkyLCAgLTE1NiwgIC01ODgsICAyOCwgICAgMzA4LCAgIDkxMiwg IDI0LAorICAgIDEyNCwgICAxNTYsICAgMTgwLCAgIC0yNTIsICA5NDQsICAgLTkyNCwgIC03NzIs ICAtNTIwLCAgLTQyOCwgIC02MjQsIDMwMCwKKyAgICAtMjEyLCAgLTExNDQsIDMyLCAgICAtNzI0 LCAgODAwLCAgIC0xMTI4LCAtMjEyLCAgLTEyODgsIC04NDgsICAxODAsICAtNDE2LAorICAgIDQ0 MCwgICAxOTIsICAgLTU3NiwgIC03OTIsICAtNzYsICAgLTEwODAsIDgwLCAgICAtNTMyLCAgLTM1 MiwgIC0xMzIsIDM4MCwKKyAgICAtODIwLCAgMTQ4LCAgIDExMTIsICAxMjgsICAgMTY0LCAgIDQ1 NiwgICA3MDAsICAgLTkyNCwgIDE0NCwgICAtNjY4LCAtMzg0LAorICAgIDY0OCwgICAtODMyLCAg NTA4LCAgIDU1MiwgICAtNTIsICAgLTEwMCwgIC02NTYsICAyMDgsICAgLTU2OCwgIDc0OCwgIC04 OCwKKyAgICA2ODAsICAgMjMyLCAgIDMwMCwgICAxOTIsICAgLTQwOCwgIC0xMDEyLCAtMTUyLCAg LTI1MiwgIC0yNjgsICAyNzIsICAtODc2LAorICAgIC02NjQsICAtNjQ4LCAgLTMzMiwgIC0xMzYs ICAxNiwgICAgMTIsICAgIDExNTIsICAtMjgsICAgMzMyLCAgIC01MzYsIDMyMCwKKyAgICAtNjcy LCAgLTQ2MCwgIC0zMTYsICA1MzIsICAgLTI2MCwgIDIyOCwgICAtNDAsICAgMTA1MiwgIC04MTYs ICAxODAsICA4OCwKKyAgICAtNDk2LCAgLTU1NiwgIC02NzIsICAtMzY4LCAgNDI4LCAgIDkyLCAg ICAzNTYsICAgNDA0LCAgIC00MDgsICAyNTIsICAxOTYsCisgICAgLTE3NiwgIC01NTYsICA3OTIs ICAgMjY4LCAgIDMyLCAgICAzNzIsICAgNDAsICAgIDk2LCAgICAtMzMyLCAgMzI4LCAgMTIwLAor ICAgIDM3MiwgICAtOTAwLCAgLTQwLCAgIDQ3MiwgICAtMjY0LCAgLTU5MiwgIDk1MiwgICAxMjgs ICAgNjU2LCAgIDExMiwgIDY2NCwKKyAgICAtMjMyLCAgNDIwLCAgIDQsICAgICAtMzQ0LCAgLTQ2 NCwgIDU1NiwgICAyNDQsICAgLTQxNiwgIC0zMiwgICAyNTIsICAwLAorICAgIC00MTIsICAxODgs ICAgLTY5NiwgIDUwOCwgICAtNDc2LCAgMzI0LCAgIC0xMDk2LCA2NTYsICAgLTMxMiwgIDU2MCwg IDI2NCwKKyAgICAtMTM2LCAgMzA0LCAgIDE2MCwgICAtNjQsICAgLTU4MCwgIDI0OCwgICAzMzYs ICAgLTcyMCwgIDU2MCwgICAtMzQ4LCAtMjg4LAorICAgIC0yNzYsICAtMTk2LCAgLTUwMCwgIDg1 MiwgICAtNTQ0LCAgLTIzNiwgIC0xMTI4LCAtOTkyLCAgLTc3NiwgIDExNiwgIDU2LAorICAgIDUy LCAgICA4NjAsICAgODg0LCAgIDIxMiwgICAtMTIsICAgMTY4LCAgIDEwMjAsICA1MTIsICAgLTU1 MiwgIDkyNCwgIC0xNDgsCisgICAgNzE2LCAgIDE4OCwgICAxNjQsICAgLTM0MCwgIC01MjAsICAt MTg0LCAgODgwLCAgIC0xNTIsICAtNjgwLCAgLTIwOCwgLTExNTYsCisgICAgLTMwMCwgIC01Mjgs ICAtNDcyLCAgMzY0LCAgIDEwMCwgICAtNzQ0LCAgLTEwNTYsIC0zMiwgICA1NDAsICAgMjgwLCAg MTQ0LAorICAgIC02NzYsICAtMzIsICAgLTIzMiwgIC0yODAsICAtMjI0LCAgOTYsICAgIDU2OCwg ICAtNzYsICAgMTcyLCAgIDE0OCwgIDE0OCwKKyAgICAxMDQsICAgMzIsICAgIC0yOTYsICAtMzIs ICAgNzg4LCAgIC04MCwgICAzMiwgICAgLTE2LCAgIDI4MCwgICAyODgsICA5NDQsCisgICAgNDI4 LCAgIC00ODQKK307CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FvbV9maWxtX2dyYWluLmggYi9s aWJhdmNvZGVjL2FvbV9maWxtX2dyYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjVkNzcyYmQ3ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9hb21f ZmlsbV9ncmFpbi5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBBT00gZmlsbSBncmFpbiBzeW50 aGVzaXMKKyAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgSGFhcyA8ZmZtcGVnQGhhYXNuLnh5 ej4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBAZmls ZQorICogQU9NIGZpbG0gZ3JhaW4gc3ludGhlc2lzLgorICogQGF1dGhvciBOaWtsYXMgSGFhcyA8 ZmZtcGVnQGhhYXNuLnh5ej4KKyAqLworCisjaWZuZGVmIEFWQ09ERUNfQU9NX0ZJTE1fR1JBSU5f SAorI2RlZmluZSBBVkNPREVDX0FPTV9GSUxNX0dSQUlOX0gKKworI2luY2x1ZGUgImxpYmF2dXRp bC9maWxtX2dyYWluX3BhcmFtcy5oIgorCisvLyBTeW50aGVzaXplcyBmaWxtIGdyYWluIG9uIHRv cCBvZiBgaW5gIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCB0byBgb3V0YC4gYG91dGAKKy8vIG11c3Qg YWxyZWFkeSBoYXZlIGJlZW4gYWxsb2NhdGVkIGFuZCBzZXQgdG8gdGhlIHNhbWUgc2l6ZSBhbmQg Zm9ybWF0IGFzIGBpbmAuCitpbnQgZmZfYW9tX2FwcGx5X2ZpbG1fZ3JhaW4oQVZGcmFtZSAqb3V0 LCBjb25zdCBBVkZyYW1lICppbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB VkZpbG1HcmFpblBhcmFtcyAqcGFyYW1zKTsKKworI2VuZGlmIC8qIEFWQ09ERUNfQU9NX0ZJTE1f R1JBSU5fSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hb21fZmlsbV9ncmFpbl90ZW1wbGF0 ZS5jIGIvbGliYXZjb2RlYy9hb21fZmlsbV9ncmFpbl90ZW1wbGF0ZS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMDAzYjJmYWIzNAotLS0gL2Rldi9udWxsCisrKyBi L2xpYmF2Y29kZWMvYW9tX2ZpbG1fZ3JhaW5fdGVtcGxhdGUuYwpAQCAtMCwwICsxLDU5OSBAQAor LyoKKyAqIEFPTSBmaWxtIGdyYWluIHN5bnRoZXNpcworICogQ29weXJpZ2h0IChjKSAyMDIzIE5p a2xhcyBIYWFzIDxmZm1wZWdAaGFhc24ueHl6PgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBl ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIElu Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw MSBVU0EKKyAqLworCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTgsIE5pa2xhcyBIYWFzCisgKiBD b3B5cmlnaHQgwqkgMjAxOCwgVmlkZW9MQU4gYW5kIGRhdjFkIGF1dGhvcnMKKyAqIENvcHlyaWdo dCDCqSAyMDE4LCBUd28gT3Jpb2xlcywgTExDCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0 aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICog QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD SCBEQU1BR0UuCisgKi8KKworI3VuZGVmIFBJWEVMCisjdW5kZWYgRU5UUlkKKyN1bmRlZiBTQ0FM SU5HX1NJWkUKKyN1bmRlZiBhdl9jbGlwX3BpeGVsCisKKyNpZiBCSVRERVBUSCA+IDgKKyNkZWZp bmUgUElYRUwgdWludDE2X3QKKyNkZWZpbmUgRU5UUlkgaW50MTZfdAorI2RlZmluZSBTQ0FMSU5H X1NJWkUgNDA5NgorI2RlZmluZSBhdl9jbGlwX3BpeGVsKHgpIGF2X2NsaXAoeCwgMCwgKDEgPDwg QklUREVQVEgpIC0gMSkKKyNlbHNlCisjZGVmaW5lIFBJWEVMIHVpbnQ4X3QKKyNkZWZpbmUgRU5U UlkgaW50OF90CisjZGVmaW5lIFNDQUxJTkdfU0laRSAyNTYKKyNkZWZpbmUgYXZfY2xpcF9waXhl bCh4KSBhdl9jbGlwX3VpbnQ4KHgpCisjZW5kaWYKKworLy8gU3ltYm9scyB0aGF0IGRvIG5vdCBk ZXBlbmQgb24gYml0IGRlcHRoCisjaWZuZGVmIEZOCisjIGRlZmluZSBGTihuKSBBVl9KT0lOKG4g IyMgXywgQklUREVQVEgpCisjIGRlZmluZSBCSVRERVBUSF9NQVggKCgxIDw8IEJJVERFUFRIKSAt IDEpCisjIGRlZmluZSBQWFNUUklERSh4KSAoKHgpIC8gc2l6ZW9mKFBJWEVMKSkKKyMgZGVmaW5l IEdSQUlOX1dJRFRIIDgyCisjIGRlZmluZSBHUkFJTl9IRUlHSFQgNzMKKyMgZGVmaW5lIFNVQl9H UkFJTl9XSURUSCA0NAorIyBkZWZpbmUgU1VCX0dSQUlOX0hFSUdIVCAzOAorIyBkZWZpbmUgRkdf QkxPQ0tfU0laRSAzMgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIEZOKGdlbmVyYXRlX2dyYWluX3lf YykoRU5UUlkgYnVmW11bR1JBSU5fV0lEVEhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBBVkZpbG1HcmFpblBhcmFtcyAqY29uc3QgcGFyYW1zKQoreworICAgIGNv bnN0IEFWRmlsbUdyYWluQU9NUGFyYW1zICpjb25zdCBkYXRhID0gJnBhcmFtcy0+Y29kZWMuYW9t OworICAgIGNvbnN0IGludCBiaXRkZXB0aF9taW5fOCA9IEJJVERFUFRIIC0gODsKKyAgICB1bnNp Z25lZCBzZWVkID0gcGFyYW1zLT5zZWVkOworICAgIGNvbnN0IGludCBzaGlmdCA9IDQgLSBiaXRk ZXB0aF9taW5fOCArIGRhdGEtPmdyYWluX3NjYWxlX3NoaWZ0OworICAgIGNvbnN0IGludCBncmFp bl9jdHIgPSAxMjggPDwgYml0ZGVwdGhfbWluXzg7CisgICAgY29uc3QgaW50IGdyYWluX21pbiA9 IC1ncmFpbl9jdHIsIGdyYWluX21heCA9IGdyYWluX2N0ciAtIDE7CisKKyAgICBjb25zdCBpbnQg YXJfcGFkID0gMzsKKyAgICBjb25zdCBpbnQgYXJfbGFnID0gZGF0YS0+YXJfY29lZmZfbGFnOwor CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBHUkFJTl9IRUlHSFQ7IHkrKykgeworICAgICAgICBm b3IgKGludCB4ID0gMDsgeCA8IEdSQUlOX1dJRFRIOyB4KyspIHsKKyAgICAgICAgICAgIGNvbnN0 IGludCB2YWx1ZSA9IGdldF9yYW5kb21fbnVtYmVyKDExLCAmc2VlZCk7CisgICAgICAgICAgICBi dWZbeV1beF0gPSByb3VuZDIoZ2F1c3NpYW5fc2VxdWVuY2VbIHZhbHVlIF0sIHNoaWZ0KTsKKyAg ICAgICAgfQorICAgIH0KKworICAgIGZvciAoaW50IHkgPSBhcl9wYWQ7IHkgPCBHUkFJTl9IRUlH SFQ7IHkrKykgeworICAgICAgICBmb3IgKGludCB4ID0gYXJfcGFkOyB4IDwgR1JBSU5fV0lEVEgg LSBhcl9wYWQ7IHgrKykgeworICAgICAgICAgICAgY29uc3QgaW50OF90ICpjb2VmZiA9IGRhdGEt PmFyX2NvZWZmc195OworICAgICAgICAgICAgaW50IHN1bSA9IDAsIGdyYWluOworICAgICAgICAg ICAgZm9yIChpbnQgZHkgPSAtYXJfbGFnOyBkeSA8PSAwOyBkeSsrKSB7CisgICAgICAgICAgICAg ICAgZm9yIChpbnQgZHggPSAtYXJfbGFnOyBkeCA8PSBhcl9sYWc7IGR4KyspIHsKKyAgICAgICAg ICAgICAgICAgICAgaWYgKCFkeCAmJiAhZHkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICAgICAgICAgICAgc3VtICs9ICooY29lZmYrKykgKiBidWZbeSArIGR5XVt4 ICsgZHhdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg Z3JhaW4gPSBidWZbeV1beF0gKyByb3VuZDIoc3VtLCBkYXRhLT5hcl9jb2VmZl9zaGlmdCk7Cisg ICAgICAgICAgICBidWZbeV1beF0gPSBhdl9jbGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21h eCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitGTihnZW5lcmF0ZV9ncmFp bl91dl9jKShFTlRSWSBidWZbXVtHUkFJTl9XSURUSF0sCisgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBFTlRSWSBidWZfeVtdW0dSQUlOX1dJRFRIXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IEFWRmlsbUdyYWluUGFyYW1zICpjb25zdCBwYXJhbXMsIGNvbnN0IGludHB0cl90 IHV2LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHN1YngsIGNvbnN0IGludCBz dWJ5KQoreworICAgIGNvbnN0IEFWRmlsbUdyYWluQU9NUGFyYW1zICpjb25zdCBkYXRhID0gJnBh cmFtcy0+Y29kZWMuYW9tOworICAgIGNvbnN0IGludCBiaXRkZXB0aF9taW5fOCA9IEJJVERFUFRI IC0gODsKKyAgICB1bnNpZ25lZCBzZWVkID0gcGFyYW1zLT5zZWVkIF4gKHV2ID8gMHg0OWQ4IDog MHhiNTI0KTsKKyAgICBjb25zdCBpbnQgc2hpZnQgPSA0IC0gYml0ZGVwdGhfbWluXzggKyBkYXRh LT5ncmFpbl9zY2FsZV9zaGlmdDsKKyAgICBjb25zdCBpbnQgZ3JhaW5fY3RyID0gMTI4IDw8IGJp dGRlcHRoX21pbl84OworICAgIGNvbnN0IGludCBncmFpbl9taW4gPSAtZ3JhaW5fY3RyLCBncmFp bl9tYXggPSBncmFpbl9jdHIgLSAxOworCisgICAgY29uc3QgaW50IGNocm9tYVcgPSBzdWJ4ID8g U1VCX0dSQUlOX1dJRFRIICA6IEdSQUlOX1dJRFRIOworICAgIGNvbnN0IGludCBjaHJvbWFIID0g c3VieSA/IFNVQl9HUkFJTl9IRUlHSFQgOiBHUkFJTl9IRUlHSFQ7CisKKyAgICBjb25zdCBpbnQg YXJfcGFkID0gMzsKKyAgICBjb25zdCBpbnQgYXJfbGFnID0gZGF0YS0+YXJfY29lZmZfbGFnOwor CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBjaHJvbWFIOyB5KyspIHsKKyAgICAgICAgZm9yIChp bnQgeCA9IDA7IHggPCBjaHJvbWFXOyB4KyspIHsKKyAgICAgICAgICAgIGNvbnN0IGludCB2YWx1 ZSA9IGdldF9yYW5kb21fbnVtYmVyKDExLCAmc2VlZCk7CisgICAgICAgICAgICBidWZbeV1beF0g PSByb3VuZDIoZ2F1c3NpYW5fc2VxdWVuY2VbIHZhbHVlIF0sIHNoaWZ0KTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGZvciAoaW50IHkgPSBhcl9wYWQ7IHkgPCBjaHJvbWFIOyB5KyspIHsKKyAg ICAgICAgZm9yIChpbnQgeCA9IGFyX3BhZDsgeCA8IGNocm9tYVcgLSBhcl9wYWQ7IHgrKykgewor ICAgICAgICAgICAgY29uc3QgaW50OF90ICpjb2VmZiA9IGRhdGEtPmFyX2NvZWZmc191dlt1dl07 CisgICAgICAgICAgICBpbnQgc3VtID0gMCwgZ3JhaW47CisgICAgICAgICAgICBmb3IgKGludCBk eSA9IC1hcl9sYWc7IGR5IDw9IDA7IGR5KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBk eCA9IC1hcl9sYWc7IGR4IDw9IGFyX2xhZzsgZHgrKykgeworICAgICAgICAgICAgICAgICAgICAv LyBGb3IgdGhlIGZpbmFsIChjdXJyZW50KSBwaXhlbCwgd2UgbmVlZCB0byBhZGQgaW4gdGhlCisg ICAgICAgICAgICAgICAgICAgIC8vIGNvbnRyaWJ1dGlvbiBmcm9tIHRoZSBsdW1hIGdyYWluIHRl eHR1cmUKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkeCAmJiAhZHkpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGludCBsdW1hWCA9ICgoeCAtIGFyX3BhZCkgPDwgc3VieCkgKyBh cl9wYWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbHVtYVkgPSAoKHkgLSBh cl9wYWQpIDw8IHN1YnkpICsgYXJfcGFkOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGx1 bWEgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhLT5udW1feV9wb2ludHMp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBzdWJ5OyBpKyspIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8PSBzdWJ4OyBqKyspIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbHVtYSArPSBidWZfeVtsdW1hWSArIGldW2x1bWFYICsgal07 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgbHVtYSA9IHJvdW5kMihsdW1hLCBzdWJ4ICsgc3Vi eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdW0gKz0gbHVtYSAqICgqY29lZmYpOworICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgICAgICAgICBzdW0gKz0gKihjb2VmZisrKSAqIGJ1Zlt5ICsgZHldW3ggKyBkeF07 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBncmFpbiA9 IGJ1Zlt5XVt4XSArIHJvdW5kMihzdW0sIGRhdGEtPmFyX2NvZWZmX3NoaWZ0KTsKKyAgICAgICAg ICAgIGJ1Zlt5XVt4XSA9IGF2X2NsaXAoZ3JhaW4sIGdyYWluX21pbiwgZ3JhaW5fbWF4KTsKKyAg ICAgICAgfQorICAgIH0KK30KKworLy8gc2FtcGxlcyBmcm9tIHRoZSBjb3JyZWN0IGJsb2NrIG9m IGEgZ3JhaW4gTFVULCB3aGlsZSB0YWtpbmcgaW50byBhY2NvdW50IHRoZQorLy8gb2Zmc2V0cyBw cm92aWRlZCBieSB0aGUgb2Zmc2V0cyBjYWNoZQorc3RhdGljIGlubGluZSBFTlRSWSBGTihzYW1w bGVfbHV0KShjb25zdCBFTlRSWSBncmFpbl9sdXRbXVtHUkFJTl9XSURUSF0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBvZmZzZXRzWzJdWzJdLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc3VieCwgY29uc3QgaW50IHN1 YnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBieCwgY29u c3QgaW50IGJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQg eCwgY29uc3QgaW50IHkpCit7CisgICAgY29uc3QgaW50IHJhbmR2YWwgPSBvZmZzZXRzW2J4XVti eV07CisgICAgY29uc3QgaW50IG9mZnggPSAzICsgKDIgPj4gc3VieCkgKiAoMyArIChyYW5kdmFs ID4+IDQpKTsKKyAgICBjb25zdCBpbnQgb2ZmeSA9IDMgKyAoMiA+PiBzdWJ5KSAqICgzICsgKHJh bmR2YWwgJiAweEYpKTsKKyAgICByZXR1cm4gZ3JhaW5fbHV0W29mZnkgKyB5ICsgKEZHX0JMT0NL X1NJWkUgPj4gc3VieSkgKiBieV0KKyAgICAgICAgICAgICAgICAgICAgW29mZnggKyB4ICsgKEZH X0JMT0NLX1NJWkUgPj4gc3VieCkgKiBieF07Cit9CisKK3N0YXRpYyB2b2lkIEZOKGZneV8zMngz MnhuX2MpKFBJWEVMICpjb25zdCBkc3Rfcm93LCBjb25zdCBQSVhFTCAqY29uc3Qgc3JjX3JvdywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHB0cmRpZmZfdCBzdHJpZGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkZpbG1HcmFpblBhcmFtcyAqY29u c3QgcGFyYW1zLCBjb25zdCBzaXplX3QgcHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1aW50OF90IHNjYWxpbmdbU0NBTElOR19TSVpFXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEVOVFJZIGdyYWluX2x1dFtdW0dSQUlOX1dJRFRIXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBiaCwgY29uc3QgaW50IHJvd19udW0p Cit7CisgICAgY29uc3QgQVZGaWxtR3JhaW5BT01QYXJhbXMgKmNvbnN0IGRhdGEgPSAmcGFyYW1z LT5jb2RlYy5hb207CisgICAgY29uc3QgaW50IHJvd3MgPSAxICsgKGRhdGEtPm92ZXJsYXBfZmxh ZyAmJiByb3dfbnVtID4gMCk7CisgICAgY29uc3QgaW50IGJpdGRlcHRoX21pbl84ID0gQklUREVQ VEggLSA4OworICAgIGNvbnN0IGludCBncmFpbl9jdHIgPSAxMjggPDwgYml0ZGVwdGhfbWluXzg7 CisgICAgY29uc3QgaW50IGdyYWluX21pbiA9IC1ncmFpbl9jdHIsIGdyYWluX21heCA9IGdyYWlu X2N0ciAtIDE7CisgICAgdW5zaWduZWQgc2VlZFsyXTsKKyAgICBpbnQgb2Zmc2V0c1syIC8qIGNv bCBvZmZzZXQgKi9dWzIgLyogcm93IG9mZnNldCAqL107CisKKyAgICBpbnQgbWluX3ZhbHVlLCBt YXhfdmFsdWU7CisgICAgaWYgKGRhdGEtPmxpbWl0X291dHB1dF9yYW5nZSkgeworICAgICAgICBt aW5fdmFsdWUgPSAxNiA8PCBiaXRkZXB0aF9taW5fODsKKyAgICAgICAgbWF4X3ZhbHVlID0gMjM1 IDw8IGJpdGRlcHRoX21pbl84OworICAgIH0gZWxzZSB7CisgICAgICAgIG1pbl92YWx1ZSA9IDA7 CisgICAgICAgIG1heF92YWx1ZSA9IEJJVERFUFRIX01BWDsKKyAgICB9CisKKyAgICAvLyBzZWVk WzBdIGNvbnRhaW5zIHRoZSBjdXJyZW50IHJvdywgc2VlZFsxXSBjb250YWlucyB0aGUgcHJldmlv dXMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgeworICAgICAgICBzZWVkW2ld ID0gcGFyYW1zLT5zZWVkOworICAgICAgICBzZWVkW2ldIF49ICgoKHJvd19udW0gLSBpKSAqIDM3 ICArIDE3OCkgJiAweEZGKSA8PCA4OworICAgICAgICBzZWVkW2ldIF49ICgoKHJvd19udW0gLSBp KSAqIDE3MyArIDEwNSkgJiAweEZGKTsKKyAgICB9CisKKyAgICBhdl9hc3NlcnQxKHN0cmlkZSAl IChGR19CTE9DS19TSVpFICogc2l6ZW9mKFBJWEVMKSkgPT0gMCk7CisKKyAgICAvLyBwcm9jZXNz IHRoaXMgcm93IGluIEZHX0JMT0NLX1NJWkVeMiBibG9ja3MKKyAgICBmb3IgKHVuc2lnbmVkIGJ4 ID0gMDsgYnggPCBwdzsgYnggKz0gRkdfQkxPQ0tfU0laRSkgeworICAgICAgICBjb25zdCBpbnQg YncgPSBGRk1JTihGR19CTE9DS19TSVpFLCAoaW50KSBwdyAtIGJ4KTsKKyAgICAgICAgY29uc3Qg UElYRUwgKnNyYzsKKyAgICAgICAgUElYRUwgKmRzdDsKKyAgICAgICAgaW50IG5vaXNlOworCisg ICAgICAgIC8vIHgveSBibG9jayBvZmZzZXRzIHRvIGNvbXBlbnNhdGUgZm9yIG92ZXJsYXBwZWQg cmVnaW9ucworICAgICAgICBjb25zdCBpbnQgeXN0YXJ0ID0gZGF0YS0+b3ZlcmxhcF9mbGFnICYm IHJvd19udW0gPyBGRk1JTigyLCBiaCkgOiAwOworICAgICAgICBjb25zdCBpbnQgeHN0YXJ0ID0g ZGF0YS0+b3ZlcmxhcF9mbGFnICYmIGJ4ICAgICAgPyBGRk1JTigyLCBidykgOiAwOworCisgICAg ICAgIHN0YXRpYyBjb25zdCBpbnQgd1syXVsyXSA9IHsgeyAyNywgMTcgfSwgeyAxNywgMjcgfSB9 OworCisgICAgICAgIGlmIChkYXRhLT5vdmVybGFwX2ZsYWcgJiYgYngpIHsKKyAgICAgICAgICAg IC8vIHNoaWZ0IHByZXZpb3VzIG9mZnNldHMgbGVmdAorICAgICAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCByb3dzOyBpKyspCisgICAgICAgICAgICAgICAgb2Zmc2V0c1sxXVtpXSA9IG9mZnNl dHNbMF1baV07CisgICAgICAgIH0KKworICAgICAgICAvLyB1cGRhdGUgY3VycmVudCBvZmZzZXRz CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKQorICAgICAgICAgICAgb2Zm c2V0c1swXVtpXSA9IGdldF9yYW5kb21fbnVtYmVyKDgsICZzZWVkW2ldKTsKKworI2RlZmluZSBh ZGRfbm9pc2VfeSh4LCB5LCBncmFpbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICBzcmMgPSBzcmNfcm93ICsgKHkpICogUFhTVFJJREUoc3RyaWRlKSAr ICh4KSArIGJ4OyAgICAgICAgICAgICAgXAorICAgICAgICBkc3QgPSBkc3Rfcm93ICsgKHkpICog UFhTVFJJREUoc3RyaWRlKSArICh4KSArIGJ4OyAgICAgICAgICAgICAgXAorICAgICAgICBub2lz ZSA9IHJvdW5kMihzY2FsaW5nWyAqc3JjIF0gKiAoZ3JhaW4pLCBkYXRhLT5zY2FsaW5nX3NoaWZ0 KTsgXAorICAgICAgICAqZHN0ID0gYXZfY2xpcCgqc3JjICsgbm9pc2UsIG1pbl92YWx1ZSwgbWF4 X3ZhbHVlKTsKKworICAgICAgICBmb3IgKGludCB5ID0geXN0YXJ0OyB5IDwgYmg7IHkrKykgewor ICAgICAgICAgICAgLy8gTm9uLW92ZXJsYXBwZWQgaW1hZ2UgcmVnaW9uIChzdHJhaWdodGZvcndh cmQpCisgICAgICAgICAgICBmb3IgKGludCB4ID0geHN0YXJ0OyB4IDwgYnc7IHgrKykgeworICAg ICAgICAgICAgICAgIGludCBncmFpbiA9IEZOKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwgb2Zmc2V0 cywgMCwgMCwgMCwgMCwgeCwgeSk7CisgICAgICAgICAgICAgICAgYWRkX25vaXNlX3koeCwgeSwg Z3JhaW4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9y IG92ZXJsYXBwZWQgY29sdW1uCisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHhzdGFy dDsgeCsrKSB7CisgICAgICAgICAgICAgICAgaW50IGdyYWluID0gRk4oc2FtcGxlX2x1dCkoZ3Jh aW5fbHV0LCBvZmZzZXRzLCAwLCAwLCAwLCAwLCB4LCB5KTsKKyAgICAgICAgICAgICAgICBpbnQg b2xkICAgPSBGTihzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIDAsIDAsIDEsIDAsIHgs IHkpOworICAgICAgICAgICAgICAgIGdyYWluID0gcm91bmQyKG9sZCAqIHdbeF1bMF0gKyBncmFp biAqIHdbeF1bMV0sIDUpOworICAgICAgICAgICAgICAgIGdyYWluID0gYXZfY2xpcChncmFpbiwg Z3JhaW5fbWluLCBncmFpbl9tYXgpOworICAgICAgICAgICAgICAgIGFkZF9ub2lzZV95KHgsIHks IGdyYWluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IHkg PSAwOyB5IDwgeXN0YXJ0OyB5KyspIHsKKyAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Ig b3ZlcmxhcHBlZCByb3cgKHNhbnMgY29ybmVyKQorICAgICAgICAgICAgZm9yIChpbnQgeCA9IHhz dGFydDsgeCA8IGJ3OyB4KyspIHsKKyAgICAgICAgICAgICAgICBpbnQgZ3JhaW4gPSBGTihzYW1w bGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIDAsIDAsIDAsIDAsIHgsIHkpOworICAgICAgICAg ICAgICAgIGludCBvbGQgICA9IEZOKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwgb2Zmc2V0cywgMCwg MCwgMCwgMSwgeCwgeSk7CisgICAgICAgICAgICAgICAgZ3JhaW4gPSByb3VuZDIob2xkICogd1t5 XVswXSArIGdyYWluICogd1t5XVsxXSwgNSk7CisgICAgICAgICAgICAgICAgZ3JhaW4gPSBhdl9j bGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21heCk7CisgICAgICAgICAgICAgICAgYWRkX25v aXNlX3koeCwgeSwgZ3JhaW4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTcGVj aWFsIGNhc2UgZm9yIGRvdWJseS1vdmVybGFwcGVkIGNvcm5lcgorICAgICAgICAgICAgZm9yIChp bnQgeCA9IDA7IHggPCB4c3RhcnQ7IHgrKykgeworICAgICAgICAgICAgICAgIGludCBncmFpbiA9 IEZOKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwgb2Zmc2V0cywgMCwgMCwgMCwgMCwgeCwgeSk7Cisg ICAgICAgICAgICAgICAgaW50IHRvcCA9IEZOKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwgb2Zmc2V0 cywgMCwgMCwgMCwgMSwgeCwgeSk7CisgICAgICAgICAgICAgICAgaW50IG9sZCA9IEZOKHNhbXBs ZV9sdXQpKGdyYWluX2x1dCwgb2Zmc2V0cywgMCwgMCwgMSwgMSwgeCwgeSk7CisKKyAgICAgICAg ICAgICAgICAvLyBCbGVuZCB0aGUgdG9wIHBpeGVsIHdpdGggdGhlIHRvcCBsZWZ0IGJsb2NrCisg ICAgICAgICAgICAgICAgdG9wID0gcm91bmQyKG9sZCAqIHdbeF1bMF0gKyB0b3AgKiB3W3hdWzFd LCA1KTsKKyAgICAgICAgICAgICAgICB0b3AgPSBhdl9jbGlwKHRvcCwgZ3JhaW5fbWluLCBncmFp bl9tYXgpOworCisgICAgICAgICAgICAgICAgLy8gQmxlbmQgdGhlIGN1cnJlbnQgcGl4ZWwgd2l0 aCB0aGUgbGVmdCBibG9jaworICAgICAgICAgICAgICAgIG9sZCA9IEZOKHNhbXBsZV9sdXQpKGdy YWluX2x1dCwgb2Zmc2V0cywgMCwgMCwgMSwgMCwgeCwgeSk7CisgICAgICAgICAgICAgICAgZ3Jh aW4gPSByb3VuZDIob2xkICogd1t4XVswXSArIGdyYWluICogd1t4XVsxXSwgNSk7CisgICAgICAg ICAgICAgICAgZ3JhaW4gPSBhdl9jbGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21heCk7CisK KyAgICAgICAgICAgICAgICAvLyBNaXggdGhlIHJvdyByb3dzIHRvZ2V0aGVyIGFuZCBhcHBseSBn cmFpbgorICAgICAgICAgICAgICAgIGdyYWluID0gcm91bmQyKHRvcCAqIHdbeV1bMF0gKyBncmFp biAqIHdbeV1bMV0sIDUpOworICAgICAgICAgICAgICAgIGdyYWluID0gYXZfY2xpcChncmFpbiwg Z3JhaW5fbWluLCBncmFpbl9tYXgpOworICAgICAgICAgICAgICAgIGFkZF9ub2lzZV95KHgsIHks IGdyYWluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZv aWQKK0ZOKGZndXZfMzJ4MzJ4bl9jKShQSVhFTCAqY29uc3QgZHN0X3JvdywgY29uc3QgUElYRUwg KmNvbnN0IHNyY19yb3csCisgICAgICAgICAgICAgICAgICAgY29uc3QgcHRyZGlmZl90IHN0cmlk ZSwgY29uc3QgQVZGaWxtR3JhaW5QYXJhbXMgKmNvbnN0IHBhcmFtcywKKyAgICAgICAgICAgICAg ICAgICBjb25zdCBzaXplX3QgcHcsIGNvbnN0IHVpbnQ4X3Qgc2NhbGluZ1tTQ0FMSU5HX1NJWkVd LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEVOVFJZIGdyYWluX2x1dFtdW0dSQUlOX1dJRFRI XSwgY29uc3QgaW50IGJoLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCByb3dfbnVtLCBj b25zdCBQSVhFTCAqY29uc3QgbHVtYV9yb3csCisgICAgICAgICAgICAgICAgICAgY29uc3QgcHRy ZGlmZl90IGx1bWFfc3RyaWRlLCBjb25zdCBpbnQgdXYsIGNvbnN0IGludCBpc19pZCwKKyAgICAg ICAgICAgICAgICAgICBjb25zdCBpbnQgc3gsIGNvbnN0IGludCBzeSkKK3sKKyAgICBjb25zdCBB VkZpbG1HcmFpbkFPTVBhcmFtcyAqY29uc3QgZGF0YSA9ICZwYXJhbXMtPmNvZGVjLmFvbTsKKyAg ICBjb25zdCBpbnQgcm93cyA9IDEgKyAoZGF0YS0+b3ZlcmxhcF9mbGFnICYmIHJvd19udW0gPiAw KTsKKyAgICBjb25zdCBpbnQgYml0ZGVwdGhfbWluXzggPSBCSVRERVBUSCAtIDg7CisgICAgY29u c3QgaW50IGdyYWluX2N0ciA9IDEyOCA8PCBiaXRkZXB0aF9taW5fODsKKyAgICBjb25zdCBpbnQg Z3JhaW5fbWluID0gLWdyYWluX2N0ciwgZ3JhaW5fbWF4ID0gZ3JhaW5fY3RyIC0gMTsKKyAgICB1 bnNpZ25lZCBzZWVkWzJdOworICAgIGludCBvZmZzZXRzWzIgLyogY29sIG9mZnNldCAqL11bMiAv KiByb3cgb2Zmc2V0ICovXTsKKworICAgIGludCBtaW5fdmFsdWUsIG1heF92YWx1ZTsKKyAgICBp ZiAoZGF0YS0+bGltaXRfb3V0cHV0X3JhbmdlKSB7CisgICAgICAgIG1pbl92YWx1ZSA9IDE2IDw8 IGJpdGRlcHRoX21pbl84OworICAgICAgICBtYXhfdmFsdWUgPSAoaXNfaWQgPyAyMzUgOiAyNDAp IDw8IGJpdGRlcHRoX21pbl84OworICAgIH0gZWxzZSB7CisgICAgICAgIG1pbl92YWx1ZSA9IDA7 CisgICAgICAgIG1heF92YWx1ZSA9IEJJVERFUFRIX01BWDsKKyAgICB9CisKKyAgICAvLyBzZWVk WzBdIGNvbnRhaW5zIHRoZSBjdXJyZW50IHJvdywgc2VlZFsxXSBjb250YWlucyB0aGUgcHJldmlv dXMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgeworICAgICAgICBzZWVkW2ld ID0gcGFyYW1zLT5zZWVkOworICAgICAgICBzZWVkW2ldIF49ICgoKHJvd19udW0gLSBpKSAqIDM3 ICArIDE3OCkgJiAweEZGKSA8PCA4OworICAgICAgICBzZWVkW2ldIF49ICgoKHJvd19udW0gLSBp KSAqIDE3MyArIDEwNSkgJiAweEZGKTsKKyAgICB9CisKKyAgICBhdl9hc3NlcnQxKHN0cmlkZSAl IChGR19CTE9DS19TSVpFICogc2l6ZW9mKFBJWEVMKSkgPT0gMCk7CisKKyAgICAvLyBwcm9jZXNz IHRoaXMgcm93IGluIEZHX0JMT0NLX1NJWkVeMiBibG9ja3MgKHN1YnNhbXBsZWQpCisgICAgZm9y ICh1bnNpZ25lZCBieCA9IDA7IGJ4IDwgcHc7IGJ4ICs9IEZHX0JMT0NLX1NJWkUgPj4gc3gpIHsK KyAgICAgICAgY29uc3QgaW50IGJ3ID0gRkZNSU4oRkdfQkxPQ0tfU0laRSA+PiBzeCwgKGludCko cHcgLSBieCkpOworICAgICAgICBpbnQgdmFsLCBseCwgbHksIG5vaXNlOworICAgICAgICBjb25z dCBQSVhFTCAqc3JjLCAqbHVtYTsKKyAgICAgICAgUElYRUwgKmRzdCwgYXZnOworCisgICAgICAg IC8vIHgveSBibG9jayBvZmZzZXRzIHRvIGNvbXBlbnNhdGUgZm9yIG92ZXJsYXBwZWQgcmVnaW9u cworICAgICAgICBjb25zdCBpbnQgeXN0YXJ0ID0gZGF0YS0+b3ZlcmxhcF9mbGFnICYmIHJvd19u dW0gPyBGRk1JTigyID4+IHN5LCBiaCkgOiAwOworICAgICAgICBjb25zdCBpbnQgeHN0YXJ0ID0g ZGF0YS0+b3ZlcmxhcF9mbGFnICYmIGJ4ICAgICAgPyBGRk1JTigyID4+IHN4LCBidykgOiAwOwor CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgd1syIC8qIHN1YiAqL11bMiAvKiBvZmYgKi9dWzJd ID0geworICAgICAgICAgICAgeyB7IDI3LCAxNyB9LCB7IDE3LCAyNyB9IH0sCisgICAgICAgICAg ICB7IHsgMjMsIDIyIH0gfSwKKyAgICAgICAgfTsKKworICAgICAgICBpZiAoZGF0YS0+b3Zlcmxh cF9mbGFnICYmIGJ4KSB7CisgICAgICAgICAgICAvLyBzaGlmdCBwcmV2aW91cyBvZmZzZXRzIGxl ZnQKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKQorICAgICAgICAg ICAgICAgIG9mZnNldHNbMV1baV0gPSBvZmZzZXRzWzBdW2ldOworICAgICAgICB9CisKKyAgICAg ICAgLy8gdXBkYXRlIGN1cnJlbnQgb2Zmc2V0cworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IHJvd3M7IGkrKykKKyAgICAgICAgICAgIG9mZnNldHNbMF1baV0gPSBnZXRfcmFuZG9tX251bWJl cig4LCAmc2VlZFtpXSk7CisKKyNkZWZpbmUgYWRkX25vaXNlX3V2KHgsIHksIGdyYWluKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg ICAgICBseCA9IChieCArIHgpIDw8IHN4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgbHkgPSB5IDw8IHN5OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgIGx1bWEgPSBsdW1hX3JvdyArIGx5ICogUFhTVFJJREUobHVtYV9zdHJpZGUpICsg bHg7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhdmcgPSBsdW1hWzBdOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgaWYgKHN4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhdmcgPSAo YXZnICsgbHVtYVsxXSArIDEpID4+IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICBzcmMgPSBzcmNfcm93ICsgKHkpICogUFhTVFJJREUoc3RyaWRl KSArIChieCArICh4KSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZHN0ID0g ZHN0X3JvdyArICh5KSAqIFBYU1RSSURFKHN0cmlkZSkgKyAoYnggKyAoeCkpOyAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgIHZhbCA9IGF2ZzsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBp ZiAoIWRhdGEtPmNocm9tYV9zY2FsaW5nX2Zyb21fbHVtYSkgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGNvbnN0IGludCBjb21iaW5lZCA9IGF2 ZyAqIGRhdGEtPnV2X211bHRfbHVtYVt1dl0gKyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqc3JjICogZGF0YS0+dXZfbXVsdFt1dl07ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdmFsID0gYXZfY2xpcF9waXhl bCggKGNvbWJpbmVkID4+IDYpICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhLT51dl9vZmZzZXRbdXZdICog KDEgPDwgYml0ZGVwdGhfbWluXzgpKSApO1wKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgICAgICBub2lzZSA9IHJvdW5kMihzY2FsaW5nWyB2YWwgXSAqIChncmFpbiksIGRh dGEtPnNjYWxpbmdfc2hpZnQpOyAgICAgICAgICAgXAorICAgICAgICAgICAgKmRzdCA9IGF2X2Ns aXAoKnNyYyArIG5vaXNlLCBtaW5fdmFsdWUsIG1heF92YWx1ZSk7CisKKyAgICAgICAgZm9yIChp bnQgeSA9IHlzdGFydDsgeSA8IGJoOyB5KyspIHsKKyAgICAgICAgICAgIC8vIE5vbi1vdmVybGFw cGVkIGltYWdlIHJlZ2lvbiAoc3RyYWlnaHRmb3J3YXJkKQorICAgICAgICAgICAgZm9yIChpbnQg eCA9IHhzdGFydDsgeCA8IGJ3OyB4KyspIHsKKyAgICAgICAgICAgICAgICBpbnQgZ3JhaW4gPSBG TihzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMCwgMCwgeCwgeSk7Cisg ICAgICAgICAgICAgICAgYWRkX25vaXNlX3V2KHgsIHksIGdyYWluKTsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBvdmVybGFwcGVkIGNvbHVtbgorICAg ICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB4c3RhcnQ7IHgrKykgeworICAgICAgICAgICAg ICAgIGludCBncmFpbiA9IEZOKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwgb2Zmc2V0cywgc3gsIHN5 LCAwLCAwLCB4LCB5KTsKKyAgICAgICAgICAgICAgICBpbnQgb2xkICAgPSBGTihzYW1wbGVfbHV0 KShncmFpbl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMSwgMCwgeCwgeSk7CisgICAgICAgICAgICAg ICAgZ3JhaW4gPSByb3VuZDIob2xkICogd1tzeF1beF1bMF0gKyBncmFpbiAqIHdbc3hdW3hdWzFd LCA1KTsKKyAgICAgICAgICAgICAgICBncmFpbiA9IGF2X2NsaXAoZ3JhaW4sIGdyYWluX21pbiwg Z3JhaW5fbWF4KTsKKyAgICAgICAgICAgICAgICBhZGRfbm9pc2VfdXYoeCwgeSwgZ3JhaW4pOwor ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCB5 c3RhcnQ7IHkrKykgeworICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBvdmVybGFwcGVk IHJvdyAoc2FucyBjb3JuZXIpCisgICAgICAgICAgICBmb3IgKGludCB4ID0geHN0YXJ0OyB4IDwg Ync7IHgrKykgeworICAgICAgICAgICAgICAgIGludCBncmFpbiA9IEZOKHNhbXBsZV9sdXQpKGdy YWluX2x1dCwgb2Zmc2V0cywgc3gsIHN5LCAwLCAwLCB4LCB5KTsKKyAgICAgICAgICAgICAgICBp bnQgb2xkICAgPSBGTihzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMCwg MSwgeCwgeSk7CisgICAgICAgICAgICAgICAgZ3JhaW4gPSByb3VuZDIob2xkICogd1tzeV1beV1b MF0gKyBncmFpbiAqIHdbc3ldW3ldWzFdLCA1KTsKKyAgICAgICAgICAgICAgICBncmFpbiA9IGF2 X2NsaXAoZ3JhaW4sIGdyYWluX21pbiwgZ3JhaW5fbWF4KTsKKyAgICAgICAgICAgICAgICBhZGRf bm9pc2VfdXYoeCwgeSwgZ3JhaW4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBT cGVjaWFsIGNhc2UgZm9yIGRvdWJseS1vdmVybGFwcGVkIGNvcm5lcgorICAgICAgICAgICAgZm9y IChpbnQgeCA9IDA7IHggPCB4c3RhcnQ7IHgrKykgeworICAgICAgICAgICAgICAgIGludCB0b3Ag PSBGTihzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMCwgMSwgeCwgeSk7 CisgICAgICAgICAgICAgICAgaW50IG9sZCA9IEZOKHNhbXBsZV9sdXQpKGdyYWluX2x1dCwgb2Zm c2V0cywgc3gsIHN5LCAxLCAxLCB4LCB5KTsKKyAgICAgICAgICAgICAgICBpbnQgZ3JhaW4gPSBG TihzYW1wbGVfbHV0KShncmFpbl9sdXQsIG9mZnNldHMsIHN4LCBzeSwgMCwgMCwgeCwgeSk7CisK KyAgICAgICAgICAgICAgICAvLyBCbGVuZCB0aGUgdG9wIHBpeGVsIHdpdGggdGhlIHRvcCBsZWZ0 IGJsb2NrCisgICAgICAgICAgICAgICAgdG9wID0gcm91bmQyKG9sZCAqIHdbc3hdW3hdWzBdICsg dG9wICogd1tzeF1beF1bMV0sIDUpOworICAgICAgICAgICAgICAgIHRvcCA9IGF2X2NsaXAodG9w LCBncmFpbl9taW4sIGdyYWluX21heCk7CisKKyAgICAgICAgICAgICAgICAvLyBCbGVuZCB0aGUg Y3VycmVudCBwaXhlbCB3aXRoIHRoZSBsZWZ0IGJsb2NrCisgICAgICAgICAgICAgICAgb2xkID0g Rk4oc2FtcGxlX2x1dCkoZ3JhaW5fbHV0LCBvZmZzZXRzLCBzeCwgc3ksIDEsIDAsIHgsIHkpOwor ICAgICAgICAgICAgICAgIGdyYWluID0gcm91bmQyKG9sZCAqIHdbc3hdW3hdWzBdICsgZ3JhaW4g KiB3W3N4XVt4XVsxXSwgNSk7CisgICAgICAgICAgICAgICAgZ3JhaW4gPSBhdl9jbGlwKGdyYWlu LCBncmFpbl9taW4sIGdyYWluX21heCk7CisKKyAgICAgICAgICAgICAgICAvLyBNaXggdGhlIHJv dyByb3dzIHRvZ2V0aGVyIGFuZCBhcHBseSB0byBpbWFnZQorICAgICAgICAgICAgICAgIGdyYWlu ID0gcm91bmQyKHRvcCAqIHdbc3ldW3ldWzBdICsgZ3JhaW4gKiB3W3N5XVt5XVsxXSwgNSk7Cisg ICAgICAgICAgICAgICAgZ3JhaW4gPSBhdl9jbGlwKGdyYWluLCBncmFpbl9taW4sIGdyYWluX21h eCk7CisgICAgICAgICAgICAgICAgYWRkX25vaXNlX3V2KHgsIHksIGdyYWluKTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgRk4oZ2VuZXJhdGVfc2Nh bGluZykoY29uc3QgdWludDhfdCBwb2ludHNbXVsyXSwgY29uc3QgaW50IG51bSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc2NhbGluZ1tTQ0FMSU5HX1NJWkVdKQor eworICAgIGNvbnN0IGludCBzaGlmdF94ID0gQklUREVQVEggLSA4OworICAgIGNvbnN0IGludCBz Y2FsaW5nX3NpemUgPSAxIDw8IEJJVERFUFRIOworICAgIGNvbnN0IGludCBtYXhfdmFsdWUgPSBw b2ludHNbbnVtIC0gMV1bMF0gPDwgc2hpZnRfeDsKKyAgICBhdl9hc3NlcnQwKHNjYWxpbmdfc2l6 ZSA8PSBTQ0FMSU5HX1NJWkUpOworCisgICAgaWYgKG51bSA9PSAwKSB7CisgICAgICAgIG1lbXNl dChzY2FsaW5nLCAwLCBzY2FsaW5nX3NpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg ICAgLy8gRmlsbCB1cCB0aGUgcHJlY2VkaW5nIGVudHJpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1 ZQorICAgIG1lbXNldChzY2FsaW5nLCBwb2ludHNbMF1bMV0sIHBvaW50c1swXVswXSA8PCBzaGlm dF94KTsKKworICAgIC8vIExpbmVhcmx5IGludGVycG9sYXRlIHRoZSB2YWx1ZXMgaW4gdGhlIG1p ZGRsZQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtIC0gMTsgaSsrKSB7CisgICAgICAgIGNv bnN0IGludCBieCA9IHBvaW50c1tpXVswXTsKKyAgICAgICAgY29uc3QgaW50IGJ5ID0gcG9pbnRz W2ldWzFdOworICAgICAgICBjb25zdCBpbnQgZXggPSBwb2ludHNbaSsxXVswXTsKKyAgICAgICAg Y29uc3QgaW50IGV5ID0gcG9pbnRzW2krMV1bMV07CisgICAgICAgIGNvbnN0IGludCBkeCA9IGV4 IC0gYng7CisgICAgICAgIGNvbnN0IGludCBkeSA9IGV5IC0gYnk7CisgICAgICAgIGNvbnN0IGlu dCBkZWx0YSA9IGR5ICogKCgweDEwMDAwICsgKGR4ID4+IDEpKSAvIGR4KTsKKyAgICAgICAgYXZf YXNzZXJ0MShkeCA+IDApOworICAgICAgICBmb3IgKGludCB4ID0gMCwgZCA9IDB4ODAwMDsgeCA8 IGR4OyB4KyspIHsKKyAgICAgICAgICAgIHNjYWxpbmdbKGJ4ICsgeCkgPDwgc2hpZnRfeF0gPSBi eSArIChkID4+IDE2KTsKKyAgICAgICAgICAgIGQgKz0gZGVsdGE7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICAvLyBGaWxsIHVwIHRoZSByZW1haW5pbmcgZW50cmllcyB3aXRoIHRoZSBmaW5hbCB2 YWx1ZQorICAgIG1lbXNldCgmc2NhbGluZ1ttYXhfdmFsdWVdLCBwb2ludHNbbnVtIC0gMV1bMV0s IHNjYWxpbmdfc2l6ZSAtIG1heF92YWx1ZSk7CisKKyNpZiBCSVRERVBUSCAhPSA4CisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBudW0gLSAxOyBpKyspIHsKKyAgICAgICAgY29uc3QgaW50IHBhZCA9 IDEgPDwgc2hpZnRfeCwgcm5kID0gcGFkID4+IDE7CisgICAgICAgIGNvbnN0IGludCBieCA9IHBv aW50c1tpXVswXSA8PCBzaGlmdF94OworICAgICAgICBjb25zdCBpbnQgZXggPSBwb2ludHNbaSsx XVswXSA8PCBzaGlmdF94OworICAgICAgICBjb25zdCBpbnQgZHggPSBleCAtIGJ4OworICAgICAg ICBmb3IgKGludCB4ID0gMDsgeCA8IGR4OyB4ICs9IHBhZCkgeworICAgICAgICAgICAgY29uc3Qg aW50IHJhbmdlID0gc2NhbGluZ1tieCArIHggKyBwYWRdIC0gc2NhbGluZ1tieCArIHhdOworICAg ICAgICAgICAgZm9yIChpbnQgbiA9IDEsIHIgPSBybmQ7IG4gPCBwYWQ7IG4rKykgeworICAgICAg ICAgICAgICAgIHIgKz0gcmFuZ2U7CisgICAgICAgICAgICAgICAgc2NhbGluZ1tieCArIHggKyBu XSA9IHNjYWxpbmdbYnggKyB4XSArIChyID4+IHNoaWZ0X3gpOworICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQK K0ZOKGFwcGx5X2dyYWluX3JvdykoQVZGcmFtZSAqb3V0LCBjb25zdCBBVkZyYW1lICppbiwKKyAg ICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHNzX3gsIGNvbnN0IGludCBzc195LAorICAgICAg ICAgICAgICAgICAgICBjb25zdCB1aW50OF90IHNjYWxpbmdbM11bU0NBTElOR19TSVpFXSwKKyAg ICAgICAgICAgICAgICAgICAgY29uc3QgRU5UUlkgZ3JhaW5fbHV0WzNdW0dSQUlOX0hFSUdIVCsx XVtHUkFJTl9XSURUSF0sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWRmlsbUdyYWluUGFy YW1zICpwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCByb3cpCit7CisgICAg Ly8gU3ludGhlc2l6ZSBncmFpbiBmb3IgdGhlIGFmZmVjdGVkIHBsYW5lcworICAgIGNvbnN0IEFW RmlsbUdyYWluQU9NUGFyYW1zICpjb25zdCBkYXRhID0gJnBhcmFtcy0+Y29kZWMuYW9tOworICAg IGNvbnN0IGludCBjcHcgPSAob3V0LT53aWR0aCArIHNzX3gpID4+IHNzX3g7CisgICAgY29uc3Qg aW50IGlzX2lkID0gb3V0LT5jb2xvcnNwYWNlID09IEFWQ09MX1NQQ19SR0I7CisgICAgY29uc3Qg aW50IGJoID0gKEZGTUlOKG91dC0+aGVpZ2h0IC0gcm93ICogRkdfQkxPQ0tfU0laRSwgRkdfQkxP Q0tfU0laRSkgKyBzc195KSA+PiBzc195OworICAgIGNvbnN0IHB0cmRpZmZfdCB1dl9vZmYgPSBy b3cgKiBGR19CTE9DS19TSVpFICogUFhTVFJJREUob3V0LT5saW5lc2l6ZVsxXSkgPj4gc3NfeTsK KyAgICBQSVhFTCAqY29uc3QgbHVtYV9zcmMgPQorICAgICAgICAoKFBJWEVMICopIGluLT5kYXRh WzBdKSArIHJvdyAqIEZHX0JMT0NLX1NJWkUgKiBQWFNUUklERShpbi0+bGluZXNpemVbMF0pOwor CisgICAgaWYgKGRhdGEtPm51bV95X3BvaW50cykgeworICAgICAgICBjb25zdCBpbnQgYmggPSBG Rk1JTihvdXQtPmhlaWdodCAtIHJvdyAqIEZHX0JMT0NLX1NJWkUsIEZHX0JMT0NLX1NJWkUpOwor ICAgICAgICBjb25zdCBwdHJkaWZmX3Qgb2ZmID0gcm93ICogRkdfQkxPQ0tfU0laRSAqIFBYU1RS SURFKG91dC0+bGluZXNpemVbMF0pOworICAgICAgICBGTihmZ3lfMzJ4MzJ4bl9jKSgoKFBJWEVM ICopIG91dC0+ZGF0YVswXSkgKyBvZmYsIGx1bWFfc3JjLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBvdXQtPmxpbmVzaXplWzBdLCBwYXJhbXMsIG91dC0+d2lkdGgsIHNjYWxpbmdbMF0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWluX2x1dFswXSwgYmgsIHJvdyk7CisgICAgfQor CisgICAgaWYgKCFkYXRhLT5udW1fdXZfcG9pbnRzWzBdICYmICFkYXRhLT5udW1fdXZfcG9pbnRz WzFdICYmCisgICAgICAgICFkYXRhLT5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWEpCisgICAgewor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gZXh0ZW5kIHBhZGRpbmcgcGl4ZWxzCisg ICAgaWYgKG91dC0+d2lkdGggJiBzc194KSB7CisgICAgICAgIFBJWEVMICpwdHIgPSBsdW1hX3Ny YzsKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBiaDsgeSsrKSB7CisgICAgICAgICAgICBw dHJbb3V0LT53aWR0aF0gPSBwdHJbb3V0LT53aWR0aCAtIDFdOworICAgICAgICAgICAgcHRyICs9 IFBYU1RSSURFKGluLT5saW5lc2l6ZVswXSkgPDwgc3NfeTsKKyAgICAgICAgfQorICAgIH0KKwor ICAgIGlmIChkYXRhLT5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWEpIHsKKyAgICAgICAgZm9yIChp bnQgcGwgPSAwOyBwbCA8IDI7IHBsKyspCisgICAgICAgICAgICBGTihmZ3V2XzMyeDMyeG5fYyko KChQSVhFTCAqKSBvdXQtPmRhdGFbMSArIHBsXSkgKyB1dl9vZmYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChjb25zdCBQSVhFTCAqKSBpbi0+ZGF0YVsxICsgcGxdKSArIHV2X29m ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbi0+bGluZXNpemVbMV0sIHBhcmFt cywgY3B3LCBzY2FsaW5nWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWlu X2x1dFsxICsgcGxdLCBiaCwgcm93LCBsdW1hX3NyYywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbi0+bGluZXNpemVbMF0sIHBsLCBpc19pZCwgc3NfeCwgc3NfeSk7CisgICAgfSBl bHNlIHsKKyAgICAgICAgZm9yIChpbnQgcGwgPSAwOyBwbCA8IDI7IHBsKyspIHsKKyAgICAgICAg ICAgIGlmIChkYXRhLT5udW1fdXZfcG9pbnRzW3BsXSkgeworICAgICAgICAgICAgICAgIEZOKGZn dXZfMzJ4MzJ4bl9jKSgoKFBJWEVMICopIG91dC0+ZGF0YVsxICsgcGxdKSArIHV2X29mZiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjb25zdCBQSVhFTCAqKSBpbi0+ZGF0 YVsxICsgcGxdKSArIHV2X29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW4tPmxpbmVzaXplWzFdLCBwYXJhbXMsIGNwdywgc2NhbGluZ1sxICsgcGxdLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFpbl9sdXRbMSArIHBsXSwgYmgsIHJvdywgbHVt YV9zcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLT5saW5lc2l6ZVsw XSwgcGwsIGlzX2lkLCBzc194LCBzc195KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg IH0KK30KKworc3RhdGljIGludCBGTihhcHBseV9maWxtX2dyYWluKShBVkZyYW1lICpvdXRfZnJh bWUsIGNvbnN0IEFWRnJhbWUgKmluX2ZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBBVkZpbG1HcmFpblBhcmFtcyAqcGFyYW1zKQoreworICAgIEVOVFJZIGdyYWlu X2x1dFszXVtHUkFJTl9IRUlHSFQgKyAxXVtHUkFJTl9XSURUSF07CisgICAgdWludDhfdCBzY2Fs aW5nWzNdW1NDQUxJTkdfU0laRV07CisKKyAgICBjb25zdCBBVkZpbG1HcmFpbkFPTVBhcmFtcyAq Y29uc3QgZGF0YSA9ICZwYXJhbXMtPmNvZGVjLmFvbTsKKyAgICBjb25zdCBBVlBpeEZtdERlc2Ny aXB0b3IgKmRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KG91dF9mcmFtZS0+Zm9ybWF0KTsKKyAg ICBjb25zdCBpbnQgcm93cyA9IEFWX0NFSUxfUlNISUZUKG91dF9mcmFtZS0+aGVpZ2h0LCA1KTsg LyogbG9nMihGR19CTE9DS19TSVpFKSAqLworICAgIGNvbnN0IGludCBzdWJ4ID0gZGVzYy0+bG9n Ml9jaHJvbWFfdywgc3VieSA9IGRlc2MtPmxvZzJfY2hyb21hX2g7CisgICAgYXZfYXNzZXJ0MChw YXJhbXMtPnR5cGUgPT0gQVZfRklMTV9HUkFJTl9QQVJBTVNfQVYxKTsKKyAgICBhdl9hc3NlcnQw KG91dF9mcmFtZS0+Zm9ybWF0ID09IGluX2ZyYW1lLT5mb3JtYXQpOworICAgIGlmIChpbl9mcmFt ZS0+Zm9ybWF0ICE9IEFWX1BJWF9GTVRfWVVWNDIwUDEwTEUpCisgICAgICAgIHJldHVybiBBVkVS Uk9SX1BBVENIV0VMQ09NRTsKKworICAgIC8vIEdlbmVyYXRlIGdyYWluIExVVHMgYXMgbmVlZGVk CisgICAgRk4oZ2VuZXJhdGVfZ3JhaW5feV9jKShncmFpbl9sdXRbMF0sIHBhcmFtcyk7CisgICAg aWYgKGRhdGEtPm51bV91dl9wb2ludHNbMF0gfHwgZGF0YS0+Y2hyb21hX3NjYWxpbmdfZnJvbV9s dW1hKQorICAgICAgICBGTihnZW5lcmF0ZV9ncmFpbl91dl9jKShncmFpbl9sdXRbMV0sIGdyYWlu X2x1dFswXSwgcGFyYW1zLCAwLCBzdWJ4LCBzdWJ5KTsKKyAgICBpZiAoZGF0YS0+bnVtX3V2X3Bv aW50c1sxXSB8fCBkYXRhLT5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWEpCisgICAgICAgIEZOKGdl bmVyYXRlX2dyYWluX3V2X2MpKGdyYWluX2x1dFsyXSwgZ3JhaW5fbHV0WzBdLCBwYXJhbXMsIDEs IHN1YngsIHN1YnkpOworCisgICAgLy8gR2VuZXJhdGUgc2NhbGluZyBMVVRzIGFzIG5lZWRlZAor ICAgIGlmIChkYXRhLT5udW1feV9wb2ludHMgfHwgZGF0YS0+Y2hyb21hX3NjYWxpbmdfZnJvbV9s dW1hKQorICAgICAgICBGTihnZW5lcmF0ZV9zY2FsaW5nKShkYXRhLT55X3BvaW50cywgZGF0YS0+ bnVtX3lfcG9pbnRzLCBzY2FsaW5nWzBdKTsKKyAgICBpZiAoZGF0YS0+bnVtX3V2X3BvaW50c1sw XSkKKyAgICAgICAgRk4oZ2VuZXJhdGVfc2NhbGluZykoZGF0YS0+dXZfcG9pbnRzWzBdLCBkYXRh LT5udW1fdXZfcG9pbnRzWzBdLCBzY2FsaW5nWzFdKTsKKyAgICBpZiAoZGF0YS0+bnVtX3V2X3Bv aW50c1sxXSkKKyAgICAgICAgRk4oZ2VuZXJhdGVfc2NhbGluZykoZGF0YS0+dXZfcG9pbnRzWzFd LCBkYXRhLT5udW1fdXZfcG9pbnRzWzFdLCBzY2FsaW5nWzJdKTsKKworICAgIC8vIENvcHkgb3Zl ciB0aGUgbm9uLW1vZGlmaWVkIHBsYW5lcworICAgIGlmICghZGF0YS0+bnVtX3lfcG9pbnRzKSB7 CisgICAgICAgIGF2X2ltYWdlX2NvcHlfcGxhbmUob3V0X2ZyYW1lLT5kYXRhWzBdLCBvdXRfZnJh bWUtPmxpbmVzaXplWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2ZyYW1lLT5k YXRhWzBdLCBpbl9mcmFtZS0+bGluZXNpemVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3V0X2ZyYW1lLT53aWR0aCAqIHNpemVvZihQSVhFTCksIG91dF9mcmFtZS0+aGVpZ2h0KTsK KyAgICB9CisgICAgZm9yIChpbnQgdXYgPSAwOyB1diA8IDI7IHV2KyspIHsKKyAgICAgICAgaWYg KCFkYXRhLT5udW1fdXZfcG9pbnRzW3V2XSkgeworICAgICAgICAgICAgYXZfaW1hZ2VfY29weV9w bGFuZShvdXRfZnJhbWUtPmRhdGFbMSt1dl0sIG91dF9mcmFtZS0+bGluZXNpemVbMSt1dl0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2ZyYW1lLT5kYXRhWzErdXZdLCBpbl9m cmFtZS0+bGluZXNpemVbMSt1dl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFW X0NFSUxfUlNISUZUKG91dF9mcmFtZS0+d2lkdGgsIHN1YngpICogc2l6ZW9mKFBJWEVMKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfQ0VJTF9SU0hJRlQob3V0X2ZyYW1lLT5o ZWlnaHQsIHN1YnkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoaW50IHJvdyA9IDA7 IHJvdyA8IHJvd3M7IHJvdysrKSB7CisgICAgICAgIEZOKGFwcGx5X2dyYWluX3Jvdykob3V0X2Zy YW1lLCBpbl9mcmFtZSwgc3VieCwgc3VieSwgc2NhbGluZywgZ3JhaW5fbHV0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcm93KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KLS0gCjIuNDMuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpo dHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vi c2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=