From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Ondrej Holy To: git-commits@fedoraproject.org Subject: [rpms/freerdp2] main: Backport several CVE fixes Date: Tue, 01 Sep 2026 12:53:23 GMT Message-ID: <178826720338.1.11181084611060449532.rpms-freerdp2-4dbe5f4cac50@fedoraproject.org> List-ID: X-Git-Repo: rpms/freerdp2 X-Git-Branch: main X-Git-Rev: 4dbe5f4cac5039c804b879ae01e1fcfd2502e050 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZnJlZXJkcDIKICAgICAgICAgICAgQnJhbmNoIDogbWFpbgogICAgICAgICAg ICBDb21taXQgOiA0ZGJlNWY0Y2FjNTAzOWM4MDRiODc5YWUwMWUxZmNmZDI1MDJlMDUwCiAgICAg ICAgICAgIEF1dGhvciA6IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgogICAgICAgICAg ICBEYXRlICAgOiAyMDI2LTA5LTAxVDEyOjM0OjMzKzAwOjAwCiAgICAgICAgICAgIFN0YXRzICA6 ICs0NzA4Ly0xIGluIDUzIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMu ZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9mcmVlcmRwMi9jLzRkYmU1ZjRjYWM1MDM5YzgwNGI4Nzlh ZTAxZTFmY2ZkMjUwMmUwNTA/YnJhbmNoPW1haW4KCiAgICAgICAgICAgIExvZzoKICAgICAgICAg ICAgQmFja3BvcnQgc2V2ZXJhbCBDVkUgZml4ZXMKCkl0IGZpeGVzIENWRS0yMDI2LTIyODUyLCBD VkUtMjAyNi0yMjg1NCwgQ1ZFLTIwMjYtMjI4NTUsIENWRS0yMDI2LTIyODU2LApDVkUtMjAyNi0y Mjg1OCwgQ1ZFLTIwMjYtMjI4NTksIENWRS0yMDI2LTIzNTMwLCBDVkUtMjAyNi0yMzUzMSwgQ1ZF LTIwMjYtMjM1MzIsCkNWRS0yMDI2LTIzNTMzLCBDVkUtMjAyNi0yMzUzNCwgQ1ZFLTIwMjYtMjM3 MzIsIENWRS0yMDI2LTIzODgzLCBDVkUtMjAyNi0yMzg4NCwKQ1ZFLTIwMjYtMjM5NDgsIENWRS0y MDI2LTI0NDkxLCBDVkUtMjAyNi0yNDY3NSwgQ1ZFLTIwMjYtMjQ2NzYsIENWRS0yMDI2LTI0Njc5 LApDVkUtMjAyNi0yNDY4MSwgQ1ZFLTIwMjYtMjQ2ODMsIENWRS0yMDI2LTI0Njg0LCBDVkUtMjAy Ni0yNTk1MiwgQ1ZFLTIwMjYtMjY5NTUsCkNWRS0yMDI2LTI2OTY1LCBDVkUtMjAyNi0yNjk4Niwg Q1ZFLTIwMjYtMjc5NTEsIENWRS0yMDI2LTI5Nzc1LCBDVkUtMjAyNi0zMTgwNiwKQ1ZFLTIwMjYt MzE4ODMsIENWRS0yMDI2LTMxODg0LCBDVkUtMjAyNi0zMTg4NSwgQ1ZFLTIwMjYtMzM5ODMsIENW RS0yMDI2LTMzOTg0LApDVkUtMjAyNi0zMzk4NSwgQ1ZFLTIwMjYtNDU3MDAsIENWRS0yMDI2LTY0 NjI0LCBDVkUtMjAyNi02NzI4OSwgQ1ZFLTIwMjYtNjcyOTkgYW5kCkNWRS0yMDI2LTY4NTgwLgoK UmVzb2x2ZXM6IHJoYnojMjQzMDkxOSwgcmhieiMyNDMwOTA4LCByaGJ6IzI0MzA4OTgsIHJoYnoj MjQzMDkxNCwgcmhieiMyNDMwOTAzClJlc29sdmVzOiByaGJ6IzI0MzA5MjQsIHJoYnojMjQzMDkz MywgcmhieiMyNDI5ODA4LCByaGJ6IzI0Mjk4MjMsIHJoYnojMjQyOTc5NApSZXNvbHZlczogcmhi eiMyNDQzMTQ2LCByaGJ6IzI0NDI5NzUsIHJoYnojMjQyOTc5OSwgcmhieiMyNDI5ODE0LCByaGJ6 IzI0Mjk4MjEKUmVzb2x2ZXM6IHJoYnojMjQzODMwOSwgcmhieiMyNDM4MzIxLCByaGJ6IzI0Mzgz MDgsIHJoYnojMjQzODMyOCwgcmhieiMyNDM4MzI0ClJlc29sdmVzOiByaGJ6IzI0MzgzMDIsIHJo YnojMjQzODMxMCwgcmhieiMyNDM4MzAwLCByaGJ6IzI0NDczOTQsIHJoYnojMjQ1MzI0MwpSZXNv bHZlczogcmhieiMyNDUzMjQwLCByaGJ6IzI0NDI4MzcsIHJoYnojMjQ0MjgxMCwgcmhieiMyNDQ3 NDI2LCByaGJ6IzI0NDc0MjIKUmVzb2x2ZXM6IHJoYnojMjQ0NzQxMywgcmhieiMyNDQ3NDE2LCBy aGJ6IzI0NTMyNDcsIHJoYnojMjQ0Mjg1NywgcmhieiMyNDkxNjgzClJlc29sdmVzOiByaGJ6IzI1 MTAyOTUsIHJoYnojMjUxMDY0MywgcmhieiMyNTAzNjQ2LCByaGJ6IzI1MTA0NDgKCkNvLUF1dGhv cmVkLUJ5OiBDbGF1ZGUgU29ubmV0IDQuNiAoMU0gY29udGV4dCkgPG5vcmVwbHlAYW50aHJvcGlj LmNvbT4KCi0tLQpkaWZmIC0tZ2l0IGEvYWxsb2NhdGlvbnMtZml4LWdyb3d0aC1vZi1wcmVhbGxv Y2F0ZWQtYnVmZmVycy5wYXRjaCBiL2FsbG9jYXRpb25zLWZpeC1ncm93dGgtb2YtcHJlYWxsb2Nh dGVkLWJ1ZmZlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM0 ODM5ZAotLS0gL2Rldi9udWxsCisrKyBiL2FsbG9jYXRpb25zLWZpeC1ncm93dGgtb2YtcHJlYWxs b2NhdGVkLWJ1ZmZlcnMucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA1NjNhMTlhNjgzZDZl MGU3YjEyMThlNDU1OGEwZmI3NTMzM2I1YjM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDI2 IDA0OjE0OjIzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFthbGxvY2F0aW9uc10gZml4IGdyb3d0 aCBvZiBwcmVhbGxvY2F0ZWQgYnVmZmVycworCitQYXJ0aWFsIGJhY2twb3J0IG9mIGNvbW1pdCAx MThhZmMwYjk1NGJhOWQ1NjMyYjc4MzZhZDI0ZTQ1NDU1NWVkMTEzLgorCitPbmx5IHRoZSBgU3Ry ZWFtX0Vuc3VyZUNhcGFjaXR5YCBmaXggaXMgaW5jbHVkZWQuIE90aGVyIGNoYW5nZXMgZnJvbQor dGhlIHVwc3RyZWFtIGNvbW1pdCAoYHNpemVvZihXQ0hBUilgIHJlcGxhY2VtZW50cywgY29sbGVj dGlvbiBncm93dGgKK3BhdHRlcm5zLCBlbnZpcm9ubWVudCBibG9jayBoYW5kbGluZykgYXJlIHVu cmVsYXRlZCB0byBDVkUtMjAyNi0yNzk1MS4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIHdp bnByL2xpYndpbnByL3V0aWxzL3N0cmVhbS5jIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwg NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvd2lucHIvbGli d2lucHIvdXRpbHMvc3RyZWFtLmMgYi93aW5wci9saWJ3aW5wci91dGlscy9zdHJlYW0uYworaW5k ZXggY2MxMTljNy4uY2IxNDViMCAxMDA2NDQKKy0tLSBhL3dpbnByL2xpYndpbnByL3V0aWxzL3N0 cmVhbS5jCisrKysgYi93aW5wci9saWJ3aW5wci91dGlscy9zdHJlYW0uYworQEAgLTQwLDggKzQw LDEwIEBAIEJPT0wgU3RyZWFtX0Vuc3VyZUNhcGFjaXR5KHdTdHJlYW0qIHMsIHNpemVfdCBzaXpl KQorIAorIAkJZG8KKyAJCXsKKy0JCQluZXdfY2FwYWNpdHkgKj0gMjsKKy0JCX0gd2hpbGUgKG5l d19jYXBhY2l0eSA8IHNpemUpOworKwkJCWlmIChuZXdfY2FwYWNpdHkgPiBTSVpFX01BWCAtIDEy OHVsbCkKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJCW5ld19jYXBhY2l0eSArPSAxMjh1bGw7Cisr CQl9IHdoaWxlIChuZXdfY2FwYWNpdHkgPD0gc2l6ZSk7CisgCisgCQlwb3NpdGlvbiA9IFN0cmVh bV9HZXRQb3NpdGlvbihzKTsKKyAKKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jYWNoZS1i aXRtYXAtaW5pdGlhbGl6ZS1vdmVyYWxsb2NhdGVkLWJpdG1hcC1jYWNoZS1leHRyYS1zbG90LnBh dGNoIGIvY2FjaGUtYml0bWFwLWluaXRpYWxpemUtb3ZlcmFsbG9jYXRlZC1iaXRtYXAtY2FjaGUt ZXh0cmEtc2xvdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzAx ZmI3Ci0tLSAvZGV2L251bGwKKysrIGIvY2FjaGUtYml0bWFwLWluaXRpYWxpemUtb3ZlcmFsbG9j YXRlZC1iaXRtYXAtY2FjaGUtZXh0cmEtc2xvdC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9t IDIzMzIwYTZkNWYyZTFjOGE5YjdkNmY0ZTNjMmExYjA5ODc2NTQzMjEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1 ZSwgMjggQXByIDIwMjYgMDQ6MjU6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NhY2hlLGJp dG1hcF0gaW5pdGlhbGl6ZSBvdmVyYWxsb2NhdGVkIGJpdG1hcCBjYWNoZSBleHRyYQorIHNsb3QK KworQmFja3BvcnQgb2YgY29tbWl0IDgyNzBlMGJiM2Q2NzI2Yzk0N2Q1N2M5M2JhOWNhYTkyYTA1 MmI1NTcuCisKK0FkanVzdGVkIGh1bmsgb2Zmc2V0cyBmb3IgMi4xMS43LgorCitNYWRlLXdpdGg6 IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9jYWNoZS9iaXRtYXAuYyB8IDE2ICsrKysrKysrKysr KysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQor CitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jYWNoZS9iaXRtYXAuYyBiL2xpYmZyZWVyZHAvY2Fj aGUvYml0bWFwLmMKK2luZGV4IGI4YTRmMjEuLjIzMzIwYTYgMTAwNjQ0CistLS0gYS9saWJmcmVl cmRwL2NhY2hlL2JpdG1hcC5jCisrKysgYi9saWJmcmVlcmRwL2NhY2hlL2JpdG1hcC5jCitAQCAt MzAzLDYgKzMwMywxOSBAQCByZHBCaXRtYXBDYWNoZSogYml0bWFwX2NhY2hlX25ldyhyZHBTZXR0 aW5ncyogc2V0dGluZ3MpCisgCQljZWxsLT5udW1iZXIgPSBucjsKKyAJfQorIAorKwkvKiBpbml0 aWFsaXplIHRoZSBvdmVyYWxsb2NhdGVkIGV4dHJhIHNsb3QgZm9yIG9sZCBSRFAgc2VydmVycyB0 aGF0IHNlbmQKKysJICogY2FjaGVJZCA9PSBtYXhDZWxsczsgdXNlIGEgbWluaW1hbCBhbGxvY2F0 aW9uIHNpbmNlIG5vIHByb3RvY29sLW5lZ290aWF0ZWQKKysJICogY2FwYWNpdHkgZXhpc3RzIGZv ciB0aGlzIHNsb3QgKi8KKysJeworKwkJQklUTUFQX1YyX0NFTEwqIGV4dHJhID0gJmJpdG1hcENh Y2hlLT5jZWxsc1tiaXRtYXBDYWNoZS0+bWF4Q2VsbHNdOworKwkJLyogYWxsb2NhdGUgYW4gZXh0 cmEgZW50cnkgZm9yIEJJVE1BUF9DQUNIRV9XQUlUSU5HX0xJU1RfSU5ERVggKi8KKysJCWV4dHJh LT5lbnRyaWVzID0gKHJkcEJpdG1hcCoqKWNhbGxvYygxLCBzaXplb2YocmRwQml0bWFwKikpOwor KworKwkJaWYgKCFleHRyYS0+ZW50cmllcykKKysJCQlnb3RvIGZhaWw7CisrCQlleHRyYS0+bnVt YmVyID0gMDsKKysJfQorKworIAlyZXR1cm4gYml0bWFwQ2FjaGU7CisgZmFpbDoKKyAKK0BAIC0z MTUsNyArMzI4LDggQEAgdm9pZCBiaXRtYXBfY2FjaGVfZnJlZShyZHBCaXRtYXBDYWNoZSogYml0 bWFwQ2FjaGUpCisgCWlmIChiaXRtYXBDYWNoZSkKKyAJeworIAkJVUlOVDMyIGk7CistCQlmb3Ig KGkgPSAwOyBpIDwgYml0bWFwQ2FjaGUtPm1heENlbGxzOyBpKyspCisrCQkvKiBpdGVyYXRlIHRo cm91Z2ggbWF4Q2VsbHMgKyAxIHRvIGFsc28gZnJlZSB0aGUgb3ZlcmFsbG9jYXRlZCBleHRyYSBz bG90ICovCisrCQlmb3IgKGkgPSAwOyBpIDw9IGJpdG1hcENhY2hlLT5tYXhDZWxsczsgaSsrKQor IAkJeworIAkJCVVJTlQzMiBqOworIAkJCUJJVE1BUF9WMl9DRUxMKiBjZWxsID0gJmJpdG1hcENh Y2hlLT5jZWxsc1tpXTsKKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jYWNoZS1iaXRtYXAt b3ZlcmFsbG9jYXRlLWJpdG1hcC1jYWNoZS5wYXRjaCBiL2NhY2hlLWJpdG1hcC1vdmVyYWxsb2Nh dGUtYml0bWFwLWNhY2hlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmQ1ZjBlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9jYWNoZS1iaXRtYXAtb3ZlcmFsbG9jYXRlLWJp dG1hcC1jYWNoZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDYwOGM1ZDQwZjZhYjRjYWJk NGQ1NzkzYjJkNjQxZjQwMWUxNDYyMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBP bmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMjYgMDQ6 MjU6NTIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NhY2hlLGJpdG1hcF0gb3ZlcmFsbG9jYXRl IGJpdG1hcCBjYWNoZQorCitCYWNrcG9ydCBvZiBjb21taXQgZmZhZDU4ZmQyYjMyOWVmZDgxYTMy MzllOWQ3ZTNjOTI3YjhlNTAzZi4KKworQWRqdXN0ZWQgaHVuayBvZmZzZXRzIGZvciAyLjExLjcu CisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBsaWJmcmVlcmRwL2NhY2hlL2JpdG1hcC5jIHwg NSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK KworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY2FjaGUvYml0bWFwLmMgYi9saWJmcmVlcmRwL2Nh Y2hlL2JpdG1hcC5jCitpbmRleCAwY2UyNTk5Li5iOGE0ZjIxIDEwMDY0NAorLS0tIGEvbGliZnJl ZXJkcC9jYWNoZS9iaXRtYXAuYworKysrIGIvbGliZnJlZXJkcC9jYWNoZS9iaXRtYXAuYworQEAg LTI4MSw4ICsyODEsMTAgQEAgcmRwQml0bWFwQ2FjaGUqIGJpdG1hcF9jYWNoZV9uZXcocmRwU2V0 dGluZ3MqIHNldHRpbmdzKQorIAliaXRtYXBDYWNoZS0+c2V0dGluZ3MgPSBzZXR0aW5nczsKKyAJ Yml0bWFwQ2FjaGUtPnVwZGF0ZSA9ICgoZnJlZXJkcCopc2V0dGluZ3MtPmluc3RhbmNlKS0+dXBk YXRlOworIAliaXRtYXBDYWNoZS0+Y29udGV4dCA9IGJpdG1hcENhY2hlLT51cGRhdGUtPmNvbnRl eHQ7CisrCisrCS8qIG92ZXJhbGxvY2F0ZSBieSAxLiBvbGRlciBSRFAgc2VydmVycyBkbyBzZW5k IGEgb2ZmIGJ5IDEgY2FjaGUgaW5kZXguICovCisgCWJpdG1hcENhY2hlLT5jZWxscyA9CistCSAg ICAoQklUTUFQX1YyX0NFTEwqKWNhbGxvYyhzZXR0aW5ncy0+Qml0bWFwQ2FjaGVWMk51bUNlbGxz LCBzaXplb2YoQklUTUFQX1YyX0NFTEwpKTsKKysJICAgIChCSVRNQVBfVjJfQ0VMTCopY2FsbG9j KHNldHRpbmdzLT5CaXRtYXBDYWNoZVYyTnVtQ2VsbHMgKyAxdWxsLCBzaXplb2YoQklUTUFQX1Yy X0NFTEwpKTsKKyAKKyAJaWYgKCFiaXRtYXBDYWNoZS0+Y2VsbHMpCisgCQlnb3RvIGZhaWw7Cist LSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2FjaGUtb2Zmc2NyZWVuLWludmFsaWRhdGUtYml0 bWFwLWJlZm9yZS1mcmVlLnBhdGNoIGIvY2FjaGUtb2Zmc2NyZWVuLWludmFsaWRhdGUtYml0bWFw LWJlZm9yZS1mcmVlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMz ZTA5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9jYWNoZS1vZmZzY3JlZW4taW52YWxpZGF0ZS1iaXRt YXAtYmVmb3JlLWZyZWUucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA0YTQxMjYzODA0MzBh MzUxN2QxMDE1YjYyODQ3NWI4MTY3MDVjZWI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDIyIEphbiAyMDI2 IDEyOjUyOjE2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjYWNoZSxvZmZzY3JlZW5dIGludmFs aWRhdGUgYml0bWFwIGJlZm9yZSBmcmVlCisKK0JhY2twb3J0IG9mIGNvbW1pdCA1MjEwNmEyNjcy NmEyYWJhNzdhYTZkODYwMTRkMmViMzUwN2YwNzgzLgorCitDby1BdXRob3JlZC1CeTogQ2xhdWRl IDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBsaWJmcmVlcmRwL2NhY2hlL29mZnNjcmVl bi5jIHwgMTAgKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NhY2hlL29mZnNjcmVlbi5j IGIvbGliZnJlZXJkcC9jYWNoZS9vZmZzY3JlZW4uYworaW5kZXggY2RhZDU2YjRkLi4xMWU2Y2Fm MjEgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NhY2hlL29mZnNjcmVlbi5jCisrKysgYi9saWJm cmVlcmRwL2NhY2hlL29mZnNjcmVlbi5jCitAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgb2Zmc2Ny ZWVuX2NhY2hlX3B1dChyZHBPZmZzY3JlZW5DYWNoZSogb2Zmc2NyZWVuQ2FjaGUsIFVJTlQzMiBp bmRleCwgcmRwQml0CisgCisgdm9pZCBvZmZzY3JlZW5fY2FjaGVfZGVsZXRlKHJkcE9mZnNjcmVl bkNhY2hlKiBvZmZzY3JlZW5DYWNoZSwgVUlOVDMyIGluZGV4KQorIHsKKy0JcmRwQml0bWFwKiBw cmV2Qml0bWFwOworKwlXSU5QUl9BU1NFUlQob2Zmc2NyZWVuQ2FjaGUpOworIAorIAlpZiAoaW5k ZXggPj0gb2Zmc2NyZWVuQ2FjaGUtPm1heEVudHJpZXMpCisgCXsKK0BAIC0xNjgsMTAgKzE2OCwx NiBAQCB2b2lkIG9mZnNjcmVlbl9jYWNoZV9kZWxldGUocmRwT2Zmc2NyZWVuQ2FjaGUqIG9mZnNj cmVlbkNhY2hlLCBVSU5UMzIgaW5kZXgpCisgCQlyZXR1cm47CisgCX0KKyAKKy0JcHJldkJpdG1h cCA9IG9mZnNjcmVlbkNhY2hlLT5lbnRyaWVzW2luZGV4XTsKKysJcmRwQml0bWFwKiBwcmV2Qml0 bWFwID0gb2Zmc2NyZWVuQ2FjaGUtPmVudHJpZXNbaW5kZXhdOworIAorIAlpZiAocHJldkJpdG1h cCAhPSBOVUxMKQorKwl7CisrCQlXSU5QUl9BU1NFUlQob2Zmc2NyZWVuQ2FjaGUtPnVwZGF0ZS0+ Y29udGV4dCk7CisrCisrCQkvKiBFbnN1cmUgdGhhdCB0aGUgYml0bWFwIGlzIG5vIGxvbmdlciB1 c2VkIGluIEdESSAqLworKwkJSUZDQUxMKHByZXZCaXRtYXAtPlNldFN1cmZhY2UsIG9mZnNjcmVl bkNhY2hlLT51cGRhdGUtPmNvbnRleHQsIE5VTEwsIEZBTFNFKTsKKyAJCUJpdG1hcF9GcmVlKG9m ZnNjcmVlbkNhY2hlLT51cGRhdGUtPmNvbnRleHQsIHByZXZCaXRtYXApOworKwl9CisgCisgCW9m ZnNjcmVlbkNhY2hlLT5lbnRyaWVzW2luZGV4XSA9IE5VTEw7CisgfQorLS0gCisyLjUyLjAKKwoK ZGlmZiAtLWdpdCBhL2NoYW5uZWwtcmRwc25kLW9ubHktY2xlYW4tdXAtdGhyZWFkLWJlZm9yZS1m cmVlLnBhdGNoIGIvY2hhbm5lbC1yZHBzbmQtb25seS1jbGVhbi11cC10aHJlYWQtYmVmb3JlLWZy ZWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlOTgxYQotLS0g L2Rldi9udWxsCisrKyBiL2NoYW5uZWwtcmRwc25kLW9ubHktY2xlYW4tdXAtdGhyZWFkLWJlZm9y ZS1mcmVlLnBhdGNoCkBAIC0wLDAgKzEsMTE3IEBACitGcm9tIGI5NmJmYTQ4NWEyODYzMzViY2I0 YzY5OGZhNjQ5MGZiNGE5OGI5ZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRy ZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTMgTWFyIDIwMjYgMTU6NDc6 MTEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWwscmRwc25kXSBvbmx5IGNsZWFuIHVw IHRocmVhZCBiZWZvcmUgZnJlZQorCitCYWNrcG9ydCBvZiBjb21taXQgYWZhNjg1MWRjODA4MzVk MzEwMWU0MGZjZWY1MWI2YzVjMGY0M2VhNS4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNo YW5uZWxzL3JkcHNuZC9jbGllbnQvcmRwc25kX21haW4uYyB8IDM3ICsrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRp b25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWlu LmMgYi9jaGFubmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMKK2luZGV4IGM3NjYwYTg1 Ny4uNTc2ZTA2NWQyIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRf bWFpbi5jCisrKysgYi9jaGFubmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMKK0BAIC0x MzMsNiArMTMzLDggQEAgc3RydWN0IHJkcHNuZF9wbHVnaW4KKyAJQk9PTCBhcHBseVZvbHVtZTsK KyB9OworIAorK3N0YXRpYyBEV09SRCBXSU5BUEkgcGxheV90aHJlYWQoTFBWT0lEIGFyZyk7Cisr Cisgc3RhdGljIGNvbnN0IGNoYXIqIHJkcHNuZF9pc19keW5fc3RyKEJPT0wgZHluYW1pYykKKyB7 CisgCWlmIChkeW5hbWljKQorQEAgLTEyNjcsNyArMTI2OSw2IEBAIHN0YXRpYyB2b2lkIGNsZWFu dXBfaW50ZXJuYWxzKHJkcHNuZFBsdWdpbiogcmRwc25kKQorIAlpZiAoIXJkcHNuZCkKKyAJCXJl dHVybjsKKyAKKy0JcmRwc25kX3Rlcm1pbmF0ZV90aHJlYWQocmRwc25kKTsKKyAJaWYgKHJkcHNu ZC0+cG9vbCkKKyAJCVN0cmVhbVBvb2xfUmV0dXJuKHJkcHNuZC0+cG9vbCwgcmRwc25kLT5kYXRh X2luKTsKKyAKK0BAIC0xMzMxLDYgKzEzMzIsNyBAQCBzdGF0aWMgdm9pZCBmcmVlX2ludGVybmFs cyhyZHBzbmRQbHVnaW4qIHJkcHNuZCkKKyAJaWYgKCFyZHBzbmQpCisgCQlyZXR1cm47CisgCisr CXJkcHNuZF90ZXJtaW5hdGVfdGhyZWFkKHJkcHNuZCk7CisgCWZyZWVyZHBfZHNwX2NvbnRleHRf ZnJlZShyZHBzbmQtPmRzcF9jb250ZXh0KTsKKyAJU3RyZWFtUG9vbF9GcmVlKHJkcHNuZC0+cG9v bCk7CisgCXJkcHNuZC0+cG9vbCA9IE5VTEw7CitAQCAtMTM1Myw2ICsxMzU1LDIzIEBAIHN0YXRp YyBCT09MIGFsbG9jYXRlX2ludGVybmFscyhyZHBzbmRQbHVnaW4qIHJkcHNuZCkKKyAJCQlyZXR1 cm4gRkFMU0U7CisgCX0KKyAKKysJaWYgKCFyZHBzbmQtPnF1ZXVlKQorKwl7CisrCQl3T2JqZWN0 IG9iaiA9IHsgMCB9OworKworKwkJb2JqLmZuT2JqZWN0RnJlZSA9IF9xdWV1ZV9mcmVlOworKwkJ cmRwc25kLT5xdWV1ZSA9IE1lc3NhZ2VRdWV1ZV9OZXcoJm9iaik7CisrCQlpZiAoIXJkcHNuZC0+ cXVldWUpCisrCQkJcmV0dXJuIEZBTFNFOworKwl9CisrCisrCWlmICghcmRwc25kLT50aHJlYWQp CisrCXsKKysJCXJkcHNuZC0+dGhyZWFkID0gQ3JlYXRlVGhyZWFkKE5VTEwsIDAsIHBsYXlfdGhy ZWFkLCByZHBzbmQsIDAsIE5VTEwpOworKwkJaWYgKCFyZHBzbmQtPnRocmVhZCkKKysJCQlyZXR1 cm4gRkFMU0U7CisrCX0KKysKKyAJcmV0dXJuIFRSVUU7CisgfQorIAorQEAgLTEzOTEsMjMgKzE0 MTAsMTIgQEAgc3RhdGljIERXT1JEIFdJTkFQSSBwbGF5X3RocmVhZChMUFZPSUQgYXJnKQorIAor IHN0YXRpYyBVSU5UIHJkcHNuZF92aXJ0dWFsX2NoYW5uZWxfZXZlbnRfaW5pdGlhbGl6ZWQocmRw c25kUGx1Z2luKiByZHBzbmQpCisgeworLQl3T2JqZWN0IG9iaiA9IHsgMCB9OworLQorIAlpZiAo IXJkcHNuZCkKKyAJCXJldHVybiBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUjsKKyAKKy0Jb2JqLmZu T2JqZWN0RnJlZSA9IF9xdWV1ZV9mcmVlOworLQlyZHBzbmQtPnF1ZXVlID0gTWVzc2FnZVF1ZXVl X05ldygmb2JqKTsKKy0JaWYgKCFyZHBzbmQtPnF1ZXVlKQorLQkJcmV0dXJuIENIQU5ORUxfUkNf Tk9fTUVNT1JZOworLQorIAlpZiAoIWFsbG9jYXRlX2ludGVybmFscyhyZHBzbmQpKQorIAkJcmV0 dXJuIENIQU5ORUxfUkNfTk9fTUVNT1JZOworIAorLQlyZHBzbmQtPnRocmVhZCA9IENyZWF0ZVRo cmVhZChOVUxMLCAwLCBwbGF5X3RocmVhZCwgcmRwc25kLCAwLCBOVUxMKTsKKy0JaWYgKCFyZHBz bmQtPnRocmVhZCkKKy0JCXJldHVybiBDSEFOTkVMX1JDX0lOSVRJQUxJWkFUSU9OX0VSUk9SOwor LQorIAlyZXR1cm4gQ0hBTk5FTF9SQ19PSzsKKyB9CisgCitAQCAtMTQxNSw4ICsxNDIzLDYgQEAg dm9pZCByZHBzbmRfdmlydHVhbF9jaGFubmVsX2V2ZW50X3Rlcm1pbmF0ZWQocmRwc25kUGx1Z2lu KiByZHBzbmQpCisgeworIAlpZiAocmRwc25kKQorIAl7CistCQlyZHBzbmRfdGVybWluYXRlX3Ro cmVhZChyZHBzbmQpOworLQorIAkJZnJlZV9pbnRlcm5hbHMocmRwc25kKTsKKyAJCWF1ZGlvX2Zv cm1hdHNfZnJlZShyZHBzbmQtPmZpeGVkX2Zvcm1hdCwgMSk7CisgCQlmcmVlKHJkcHNuZC0+c3Vi c3lzdGVtKTsKK0BAIC0xNjA0LDE0ICsxNjEwLDEzIEBAIHN0YXRpYyBVSU5UIHJkcHNuZF9vbl9j bG9zZShJV1RTVmlydHVhbENoYW5uZWxDYWxsYmFjayogcENoYW5uZWxDYWxsYmFjaykKKyAJCUlG Q0FMTChyZHBzbmQtPmRldmljZS0+Q2xvc2UsIHJkcHNuZC0+ZGV2aWNlKTsKKyAKKyAJY2xlYW51 cF9pbnRlcm5hbHMocmRwc25kKTsKKy0KKysJZnJlZV9pbnRlcm5hbHMocmRwc25kKTsKKyAJaWYg KHJkcHNuZC0+ZGV2aWNlKQorIAl7CisgCQlJRkNBTEwocmRwc25kLT5kZXZpY2UtPkZyZWUsIHJk cHNuZC0+ZGV2aWNlKTsKKyAJCXJkcHNuZC0+ZGV2aWNlID0gTlVMTDsKKyAJfQorIAorLQlmcmVl X2ludGVybmFscyhyZHBzbmQpOworIAlmcmVlKHBDaGFubmVsQ2FsbGJhY2spOworIAlyZXR1cm4g Q0hBTk5FTF9SQ19PSzsKKyB9CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMt YWlucHV0LWxvY2stY29udGV4dC13aGVuLXVwZGF0aW5nLWxpc3RlbmVyLnBhdGNoIGIvY2hhbm5l bHMtYWlucHV0LWxvY2stY29udGV4dC13aGVuLXVwZGF0aW5nLWxpc3RlbmVyLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMmIwN2EKLS0tIC9kZXYvbnVsbAorKysg Yi9jaGFubmVscy1haW5wdXQtbG9jay1jb250ZXh0LXdoZW4tdXBkYXRpbmctbGlzdGVuZXIucGF0 Y2gKQEAgLTAsMCArMSwxMzIgQEAKK0Zyb20gNmJmNGUyNTU4ODYxZTA2ZmQ2OGVmODAzNjc5NmZm NDc1YTFjMjNmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxv aG9seUByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxMyBNYXIgMjAyNiAxNToyNDowOSArMDEwMAor U3ViamVjdDogW1BBVENIXSBbY2hhbm5lbHMsYWlucHV0XSBsb2NrIGNvbnRleHQgd2hlbiB1cGRh dGluZyBsaXN0ZW5lcgorCitCYWNrcG9ydCBvZiBjb21taXQgZDljYTI3MmRjZTdhNzc2YWI0NzVl OWIxYThlOGMzZDI5NjhjODQ4Ni4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNoYW5uZWxz L2FpbnB1dC9jbGllbnQvYWlucHV0X21haW4uYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9jaGFubmVscy9haW5wdXQvY2xpZW50L2FpbnB1dF9tYWluLmMgYi9j aGFubmVscy9haW5wdXQvY2xpZW50L2FpbnB1dF9tYWluLmMKK2luZGV4IGQ4ZWI4ZWM1OS4uZmY5 MDFkMmEwIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvYWlucHV0L2NsaWVudC9haW5wdXRfbWFpbi5j CisrKysgYi9jaGFubmVscy9haW5wdXQvY2xpZW50L2FpbnB1dF9tYWluLmMKK0BAIC0yOCw2ICsy OCw3IEBACisgI2luY2x1ZGUgPHdpbnByL2NydC5oPgorICNpbmNsdWRlIDx3aW5wci9hc3NlcnQu aD4KKyAjaW5jbHVkZSA8d2lucHIvc3RyZWFtLmg+CisrI2luY2x1ZGUgPHdpbnByL3N5bmNoLmg+ CisgI2luY2x1ZGUgPHdpbnByL3N5c2luZm8uaD4KKyAKKyAjaW5jbHVkZSAiYWlucHV0X21haW4u aCIKK0BAIC02OSw2ICs3MCw3IEBAIHN0cnVjdCBBSU5QVVRfUExVR0lOXworIAlVSU5UMzIgTWFq b3JWZXJzaW9uOworIAlVSU5UMzIgTWlub3JWZXJzaW9uOworIAlCT09MIGluaXRpYWxpemVkOwor KwlDUklUSUNBTF9TRUNUSU9OIGxvY2s7CisgfTsKKyAKKyAvKioKK0BAIC0xMDksMTAgKzExMSw3 IEBAIHN0YXRpYyBVSU5UIGFpbnB1dF9vbl9kYXRhX3JlY2VpdmVkKElXVFNWaXJ0dWFsQ2hhbm5l bENhbGxiYWNrKiBwQ2hhbm5lbENhbGxiYWNrCisgCisgc3RhdGljIFVJTlQgYWlucHV0X3NlbmRf aW5wdXRfZXZlbnQoQUlucHV0Q2xpZW50Q29udGV4dCogY29udGV4dCwgVUlOVDY0IGZsYWdzLCBJ TlQzMiB4LCBJTlQzMiB5KQorIHsKKy0JQUlOUFVUX1BMVUdJTiogYWlucHV0OworLQlBSU5QVVRf Q0hBTk5FTF9DQUxMQkFDSyogY2FsbGJhY2s7CisgCUJZVEUgYnVmZmVyWzMyXSA9IHsgMCB9Owor LQlVSU5UNjQgdGltZTsKKyAJd1N0cmVhbSBzYnVmZmVyID0geyAwIH07CisgCXdTdHJlYW0qIHMg PSAmc2J1ZmZlcjsKKyAKK0BAIC0xMjEsOCArMTIwLDggQEAgc3RhdGljIFVJTlQgYWlucHV0X3Nl bmRfaW5wdXRfZXZlbnQoQUlucHV0Q2xpZW50Q29udGV4dCogY29udGV4dCwgVUlOVDY0IGZsYWdz LAorIAlXSU5QUl9BU1NFUlQocyk7CisgCVdJTlBSX0FTU0VSVChjb250ZXh0KTsKKyAKKy0JdGlt ZSA9IEdldFRpY2tDb3VudDY0KCk7CistCWFpbnB1dCA9IChBSU5QVVRfUExVR0lOKiljb250ZXh0 LT5oYW5kbGU7CisrCWNvbnN0IFVJTlQ2NCB0aW1lID0gR2V0VGlja0NvdW50NjQoKTsKKysJQUlO UFVUX1BMVUdJTiogYWlucHV0ID0gKEFJTlBVVF9QTFVHSU4qKWNvbnRleHQtPmhhbmRsZTsKKyAJ V0lOUFJfQVNTRVJUKGFpbnB1dCk7CisgCVdJTlBSX0FTU0VSVChhaW5wdXQtPmxpc3RlbmVyX2Nh bGxiYWNrKTsKKyAKK0BAIC0xMzIsOCArMTMxLDYgQEAgc3RhdGljIFVJTlQgYWlucHV0X3NlbmRf aW5wdXRfZXZlbnQoQUlucHV0Q2xpZW50Q29udGV4dCogY29udGV4dCwgVUlOVDY0IGZsYWdzLAor IAkJICAgICAgICAgIGFpbnB1dC0+TWFqb3JWZXJzaW9uLCBhaW5wdXQtPk1pbm9yVmVyc2lvbik7 CisgCQlyZXR1cm4gQ0hBTk5FTF9SQ19VTlNVUFBPUlRFRF9WRVJTSU9OOworIAl9CistCWNhbGxi YWNrID0gYWlucHV0LT5saXN0ZW5lcl9jYWxsYmFjay0+Y2hhbm5lbF9jYWxsYmFjazsKKy0JV0lO UFJfQVNTRVJUKGNhbGxiYWNrKTsKKyAKKyAJeworIAkJY2hhciBidWZmZXJbMTI4XSA9IHsgMCB9 OworQEAgLTE1MiwxMCArMTQ5LDE1IEBAIHN0YXRpYyBVSU5UIGFpbnB1dF9zZW5kX2lucHV0X2V2 ZW50KEFJbnB1dENsaWVudENvbnRleHQqIGNvbnRleHQsIFVJTlQ2NCBmbGFncywKKyAJU3RyZWFt X1NlYWxMZW5ndGgocyk7CisgCisgCS8qIGFpbnB1dCBiYWNrIHdoYXQgd2UgaGF2ZSByZWNlaXZl ZC4gQUlOUFVUIGRvZXMgbm90IGhhdmUgYW55IG1lc3NhZ2UgSURzLiAqLworKwlFbnRlckNyaXRp Y2FsU2VjdGlvbigmYWlucHV0LT5sb2NrKTsKKysJQUlOUFVUX0NIQU5ORUxfQ0FMTEJBQ0sqIGNh bGxiYWNrID0gYWlucHV0LT5saXN0ZW5lcl9jYWxsYmFjay0+Y2hhbm5lbF9jYWxsYmFjazsKKysJ V0lOUFJfQVNTRVJUKGNhbGxiYWNrKTsKKyAJV0lOUFJfQVNTRVJUKGNhbGxiYWNrLT5jaGFubmVs KTsKKyAJV0lOUFJfQVNTRVJUKGNhbGxiYWNrLT5jaGFubmVsLT5Xcml0ZSk7CistCXJldHVybiBj YWxsYmFjay0+Y2hhbm5lbC0+V3JpdGUoY2FsbGJhY2stPmNoYW5uZWwsIChVTE9ORylTdHJlYW1f TGVuZ3RoKHMpLCBTdHJlYW1fQnVmZmVyKHMpLAorLQkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5VTEwpOworKwljb25zdCBVSU5UIHJjID0gY2FsbGJhY2stPmNoYW5uZWwtPldyaXRl KGNhbGxiYWNrLT5jaGFubmVsLCAoVUxPTkcpU3RyZWFtX0xlbmd0aChzKSwKKysJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1fQnVmZmVyKHMpLCBOVUxMKTsK KysJTGVhdmVDcml0aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCXJldHVybiByYzsKKyB9 CisgCisgLyoqCitAQCAtMTY3LDggKzE2OSwxNiBAQCBzdGF0aWMgVUlOVCBhaW5wdXRfb25fY2xv c2UoSVdUU1ZpcnR1YWxDaGFubmVsQ2FsbGJhY2sqIHBDaGFubmVsQ2FsbGJhY2spCisgeworIAlB SU5QVVRfQ0hBTk5FTF9DQUxMQkFDSyogY2FsbGJhY2sgPSAoQUlOUFVUX0NIQU5ORUxfQ0FMTEJB Q0sqKXBDaGFubmVsQ2FsbGJhY2s7CisgCistCWZyZWUoY2FsbGJhY2spOworKwlpZiAoY2FsbGJh Y2spCisrCXsKKysJCUFJTlBVVF9QTFVHSU4qIGFpbnB1dCA9IChBSU5QVVRfUExVR0lOKiljYWxs YmFjay0+cGx1Z2luOworKwkJV0lOUFJfQVNTRVJUKGFpbnB1dCk7CisgCisrCQkvKiBMb2NrIGhl cmUgdG8gZW5zdXJlIHRoYXQgbm8gYWlucHV0X3NlbmRfaW5wdXRfZXZlbnQgaXMgaW4gcHJvZ3Jl c3MuICovCisrCQlFbnRlckNyaXRpY2FsU2VjdGlvbigmYWlucHV0LT5sb2NrKTsKKysJCWZyZWUo Y2FsbGJhY2spOworKwkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCX0K KyAJcmV0dXJuIENIQU5ORUxfUkNfT0s7CisgfQorIAorQEAgLTI1NSw2ICsyNjUsNyBAQCBzdGF0 aWMgVUlOVCBhaW5wdXRfcGx1Z2luX2luaXRpYWxpemUoSVdUU1BsdWdpbiogcFBsdWdpbiwgSVdU U1ZpcnR1YWxDaGFubmVsTWFuYQorIHN0YXRpYyBVSU5UIGFpbnB1dF9wbHVnaW5fdGVybWluYXRl ZChJV1RTUGx1Z2luKiBwUGx1Z2luKQorIHsKKyAJQUlOUFVUX1BMVUdJTiogYWlucHV0ID0gKEFJ TlBVVF9QTFVHSU4qKXBQbHVnaW47CisrCisgCWlmIChhaW5wdXQgJiYgYWlucHV0LT5saXN0ZW5l cl9jYWxsYmFjaykKKyAJeworIAkJSVdUU1ZpcnR1YWxDaGFubmVsTWFuYWdlciogbWdyID0gYWlu cHV0LT5saXN0ZW5lcl9jYWxsYmFjay0+Y2hhbm5lbF9tZ3I7CitAQCAtMjYzLDYgKzI3NCw3IEBA IHN0YXRpYyBVSU5UIGFpbnB1dF9wbHVnaW5fdGVybWluYXRlZChJV1RTUGx1Z2luKiBwUGx1Z2lu KQorIAl9CisgCWlmIChhaW5wdXQpCisgCXsKKysJCURlbGV0ZUNyaXRpY2FsU2VjdGlvbigmYWlu cHV0LT5sb2NrKTsKKyAJCWZyZWUoYWlucHV0LT5saXN0ZW5lcl9jYWxsYmFjayk7CisgCQlmcmVl KGFpbnB1dC0+aWZhY2UucEludGVyZmFjZSk7CisgCX0KK0BAIC0zMDYsOCArMzE4LDEyIEBAIFVJ TlQgRFZDUGx1Z2luRW50cnkoSURSRFlOVkNfRU5UUllfUE9JTlRTKiBwRW50cnlQb2ludHMpCisg CisgCQljb250ZXh0LT5oYW5kbGUgPSAodm9pZCopYWlucHV0OworIAkJY29udGV4dC0+QUlucHV0 U2VuZElucHV0RXZlbnQgPSBhaW5wdXRfc2VuZF9pbnB1dF9ldmVudDsKKy0JCWFpbnB1dC0+aWZh Y2UucEludGVyZmFjZSA9ICh2b2lkKiljb250ZXh0OworIAorKwkJSW5pdGlhbGl6ZUNyaXRpY2Fs U2VjdGlvbigmYWlucHV0LT5sb2NrKTsKKysKKysJCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZhaW5w dXQtPmxvY2spOworKwkJYWlucHV0LT5pZmFjZS5wSW50ZXJmYWNlID0gKHZvaWQqKWNvbnRleHQ7 CisrCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmYWlucHV0LT5sb2NrKTsKKyAJCXN0YXR1cyA9IHBF bnRyeVBvaW50cy0+UmVnaXN0ZXJQbHVnaW4ocEVudHJ5UG9pbnRzLCBBSU5QVVRfQ0hBTk5FTF9O QU1FLCAmYWlucHV0LT5pZmFjZSk7CisgCX0KKyAKKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQg YS9jaGFubmVscy1hdWRpbi1mcmVlLXVwLW9sZC1hdWRpby1mb3JtYXRzLnBhdGNoIGIvY2hhbm5l bHMtYXVkaW4tZnJlZS11cC1vbGQtYXVkaW8tZm9ybWF0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iM2NjYzBiCi0tLSAvZGV2L251bGwKKysrIGIvY2hhbm5lbHMt YXVkaW4tZnJlZS11cC1vbGQtYXVkaW8tZm9ybWF0cy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitG cm9tIGNkMWZmYTExMmNmYmUxYjQwYTlmZDU3ZTI5OWE4ZWExMmUyM2RmMGQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBha2FsbGFiZXRoIDxha2FsbGFiZXRoQHBvc3Rlby5uZXQ+CitE YXRlOiBTYXQsIDEwIEphbiAyMDI2IDA4OjM2OjM4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtj aGFubmVscyxhdWRpbl0gZnJlZSB1cCBvbGQgYXVkaW8gZm9ybWF0cworCistLS0KKyBjaGFubmVs cy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQg aW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvYXVkaW4vY2xpZW50L2F1ZGlu X21haW4uYyBiL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKK2luZGV4IGJjYWYx YTY0Ni4uYjRjOGJhNTgwIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvYXVkaW4vY2xpZW50L2F1ZGlu X21haW4uYworKysrIGIvY2hhbm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYworQEAgLTIw Niw2ICsyMDYsMTAgQEAgc3RhdGljIFVJTlQgYXVkaW5fcHJvY2Vzc19mb3JtYXRzKEFVRElOX1BM VUdJTiogYXVkaW4sIEFVRElOX0NIQU5ORUxfQ0FMTEJBQ0sqIGMKKyAJfQorIAorIAlTdHJlYW1f U2Vla19VSU5UMzIocyk7IC8qIGNiU2l6ZUZvcm1hdHNQYWNrZXQgKi8KKysKKysJYXVkaW9fZm9y bWF0c19mcmVlKGNhbGxiYWNrLT5mb3JtYXRzLCBjYWxsYmFjay0+Zm9ybWF0c19jb3VudCk7Cisr CWNhbGxiYWNrLT5mb3JtYXRzX2NvdW50ID0gMDsKKysKKyAJY2FsbGJhY2stPmZvcm1hdHMgPSBh dWRpb19mb3JtYXRzX25ldyhOdW1Gb3JtYXRzKTsKKyAKKyAJaWYgKCFjYWxsYmFjay0+Zm9ybWF0 cykKKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy1hdWRpbi1saW1pdC1GcmFt ZXNQZXJQYWNrZXQucGF0Y2ggYi9jaGFubmVscy1hdWRpbi1saW1pdC1GcmFtZXNQZXJQYWNrZXQu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExOTU5ZgotLS0gL2Rl di9udWxsCisrKyBiL2NoYW5uZWxzLWF1ZGluLWxpbWl0LUZyYW1lc1BlclBhY2tldC5wYXRjaApA QCAtMCwwICsxLDM3IEBACitGcm9tIDk3ZTlkOTA1Mjg2OTBmNjk3MzM5OGM5ZDdlNGY4ZGE1MjE0 NWY2NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcm1pbiBOb3ZhayA8YXJtaW4u bm92YWtAdGhpbmNhc3QuY29tPgorRGF0ZTogU3VuLCAxMiBKdWwgMjAyNiAxNzozNzo0OCArMDIw MAorU3ViamVjdDogW1BBVENIXSBbY2hhbm5lbHMsYXVkaW5dIGxpbWl0IEZyYW1lc1BlclBhY2tl dAorCistLS0KKyBjaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jIHwgMTAgKysrKysr KysrLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKwor ZGlmZiAtLWdpdCBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMgYi9jaGFubmVs cy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCitpbmRleCAzMzJhZWY5ZGEuLjE4NmUzNTZjZCAx MDA2NDQKKy0tLSBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKKysrKyBiL2No YW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKK0BAIC00ODgsNyArNDg4LDYgQEAgc3Rh dGljIFVJTlQgYXVkaW5fcHJvY2Vzc19vcGVuKEFVRElOX1BMVUdJTiogYXVkaW4sIEFVRElOX0NI QU5ORUxfQ0FMTEJBQ0sqIGNhbAorIAlTdHJlYW1fUmVhZF9VSU5UMzIocywgaW5pdGlhbEZvcm1h dCk7CisgCVdMb2dfUHJpbnQoYXVkaW4tPmxvZywgV0xPR19ERUJVRywgIkZyYW1lc1BlclBhY2tl dD0lIiBQUkl1MzIgIiBpbml0aWFsRm9ybWF0PSUiIFBSSXUzMiAiIiwKKyAJICAgICAgICAgICBG cmFtZXNQZXJQYWNrZXQsIGluaXRpYWxGb3JtYXQpOworLQlhdWRpbi0+RnJhbWVzUGVyUGFja2V0 ID0gRnJhbWVzUGVyUGFja2V0OworCisgCWlmIChpbml0aWFsRm9ybWF0ID49IGNhbGxiYWNrLT5m b3JtYXRzX2NvdW50KQorIAl7CitAQCAtNDk2LDYgKzQ5NiwxNSBAQCBzdGF0aWMgVUlOVCBhdWRp bl9wcm9jZXNzX29wZW4oQVVESU5fUExVR0lOKiBhdWRpbiwgQVVESU5fQ0hBTk5FTF9DQUxMQkFD SyogY2FsCisgCQlyZXR1cm4gRVJST1JfSU5WQUxJRF9EQVRBOworIAl9CisKKysJLyogVGhlIFJE UCBwcm90b2NvbCBmaWVsZCBhbGxvd3MgVUlOVDMyX01BWCwgYnV0IG1vc3QgYmFja2VuZCBBUEkg dXNlIElOVDMyIGFzIGlucHV0IHBhcmFtZXRlcgorKwkgKiBvciBkbyBzb21lIG1hdGggd2l0aCBp dCwgc28gZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGRvZXMgbm90IGV4Y2VlZCByZWFzb25hYmxlIGxp bWl0cyAqLworKwlpZiAoRnJhbWVzUGVyUGFja2V0ID49IElOVDMyX01BWCkKKysJeworKwkJV0xv Z19QcmludChhdWRpbi0+bG9nLCBXTE9HX0VSUk9SLCAiaW52YWxpZCBmcmFtZXMgcGVyIHBhY2tl dCAlIiBQUkl1MzIsIEZyYW1lc1BlclBhY2tldCk7CisrCQlyZXR1cm4gRVJST1JfSU5WQUxJRF9E QVRBOworKwl9CisrCisrCWF1ZGluLT5GcmFtZXNQZXJQYWNrZXQgPSBGcmFtZXNQZXJQYWNrZXQ7 CisgCWF1ZGluLT5mb3JtYXQgPSAmY2FsbGJhY2stPmZvcm1hdHNbaW5pdGlhbEZvcm1hdF07CisK KyAJaWYgKCFhdWRpbl9vcGVuX2RldmljZShhdWRpbiwgY2FsbGJhY2spKQoKZGlmZiAtLWdpdCBh L2NoYW5uZWxzLWF1ZGluLXJlc2V0LWF1ZGluLWZvcm1hdC5wYXRjaCBiL2NoYW5uZWxzLWF1ZGlu LXJlc2V0LWF1ZGluLWZvcm1hdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hMDRjZWU0Ci0tLSAvZGV2L251bGwKKysrIGIvY2hhbm5lbHMtYXVkaW4tcmVzZXQtYXVk aW4tZm9ybWF0LnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZmEzM2VkZjUzYTIwODdjMTA2 YjI4MDE3NDViZGZmMGY0YTU4OTQyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFr YWxsYWJldGggPGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IE1vbiwgMjYgSmFuIDIwMjYg MTA6MjA6MjMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLGF1ZGluXSByZXNldCBh dWRpbi0+Zm9ybWF0CisKK1doZW5ldmVyIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZSBjaGFuZ2Vz IHJlc2V0IHRoZSBwb2ludGVyIHRvIE5VTEwKKy0tLQorIGNoYW5uZWxzL2F1ZGluL2NsaWVudC9h dWRpbl9tYWluLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitk aWZmIC0tZ2l0IGEvY2hhbm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYyBiL2NoYW5uZWxz L2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKK2luZGV4IDVmZmUwOTEyNy4uMzMyYWVmOWRhIDEw MDY0NAorLS0tIGEvY2hhbm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYworKysrIGIvY2hh bm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYworQEAgLTIyMCw2ICsyMjAsNyBAQCBzdGF0 aWMgVUlOVCBhdWRpbl9wcm9jZXNzX2Zvcm1hdHMoQVVESU5fUExVR0lOKiBhdWRpbiwgQVVESU5f Q0hBTk5FTF9DQUxMQkFDSyogYworIAorIAlTdHJlYW1fU2Vla19VSU5UMzIocyk7IC8qIGNiU2l6 ZUZvcm1hdHNQYWNrZXQgKi8KKyAKKysJYXVkaW4tPmZvcm1hdCA9IE5VTEw7CisgCWF1ZGlvX2Zv cm1hdHNfZnJlZShjYWxsYmFjay0+Zm9ybWF0cywgY2FsbGJhY2stPmZvcm1hdHNfY291bnQpOwor IAljYWxsYmFjay0+Zm9ybWF0c19jb3VudCA9IDA7CisgCitAQCAtMjk3LDYgKzI5OCw3IEBAIG91 dDoKKyAKKyAJaWYgKGVycm9yICE9IENIQU5ORUxfUkNfT0spCisgCXsKKysJCWF1ZGluLT5mb3Jt YXQgPSBOVUxMOworIAkJYXVkaW9fZm9ybWF0c19mcmVlKGNhbGxiYWNrLT5mb3JtYXRzLCBOdW1G b3JtYXRzKTsKKyAJCWNhbGxiYWNrLT5mb3JtYXRzID0gTlVMTDsKKyAJfQorLS0gCisyLjUzLjAK KwoKZGlmZiAtLWdpdCBhL2NoYW5uZWxzLWRyZHludmMtcmVzZXQtY2hhbm5lbF9jYWxsYmFjay1i ZWZvcmUtY2xvc2UucGF0Y2ggYi9jaGFubmVscy1kcmR5bnZjLXJlc2V0LWNoYW5uZWxfY2FsbGJh Y2stYmVmb3JlLWNsb3NlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjZjMzZkZGQKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVscy1kcmR5bnZjLXJlc2V0LWNoYW5u ZWxfY2FsbGJhY2stYmVmb3JlLWNsb3NlLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNzg2 NWEyODMyZWJkZmQwNDM3NGM3ODdjOTE3YjNlYTdmMDc4YmEyYyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAx MSBNYXIgMjAyNiAxNjo1NTo0NCArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2hhbm5lbHMsZHJk eW52Y10gcmVzZXQgY2hhbm5lbF9jYWxsYmFjayBiZWZvcmUgY2xvc2UKKworQmFja3BvcnQgb2Yg Y29tbWl0IGUwMmUwNTJmNjY5MjU1MGU1MzlkMTBmOTlkZTljMzVhMjM0OTJkYjIuCisKK01hZGUt d2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy9kcmR5bnZjL2NsaWVudC9kcmR5bnZjX21haW4u YyB8IDcgKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy9kcmR5bnZjL2NsaWVudC9kcmR5bnZjX21h aW4uYyBiL2NoYW5uZWxzL2RyZHludmMvY2xpZW50L2RyZHludmNfbWFpbi5jCitpbmRleCBiMjAw NWE5MDMuLjBhNGFmNzE3OSAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL2RyZHludmMvY2xpZW50L2Ry ZHludmNfbWFpbi5jCisrKysgYi9jaGFubmVscy9kcmR5bnZjL2NsaWVudC9kcmR5bnZjX21haW4u YworQEAgLTM0NiwxMCArMzQ2LDExIEBAIHN0YXRpYyB2b2lkIGR2Y21hbl9jaGFubmVsX2ZyZWUo dm9pZCogYXJnKQorIAorIAlpZiAoY2hhbm5lbCkKKyAJeworLQkJaWYgKGNoYW5uZWwtPmNoYW5u ZWxfY2FsbGJhY2spCisrCQlJV1RTVmlydHVhbENoYW5uZWxDYWxsYmFjayogY2IgPSBjaGFubmVs LT5jaGFubmVsX2NhbGxiYWNrOworKwkJY2hhbm5lbC0+Y2hhbm5lbF9jYWxsYmFjayA9IE5VTEw7 CisrCQlpZiAoY2IpCisgCQl7CistCQkJSUZDQUxMKGNoYW5uZWwtPmNoYW5uZWxfY2FsbGJhY2st Pk9uQ2xvc2UsIGNoYW5uZWwtPmNoYW5uZWxfY2FsbGJhY2spOworLQkJCWNoYW5uZWwtPmNoYW5u ZWxfY2FsbGJhY2sgPSBOVUxMOworKwkJCUlGQ0FMTChjYi0+T25DbG9zZSwgY2IpOworIAkJfQor IAorIAkJaWYgKGNoYW5uZWwtPnN0YXR1cyA9PSBDSEFOTkVMX1JDX09LKQorLS0gCisyLjUzLjAK KwoKZGlmZiAtLWdpdCBhL2NoYW5uZWxzLWRyaXZlLWZpeC1jb25zdGFudC10eXBlLnBhdGNoIGIv Y2hhbm5lbHMtZHJpdmUtZml4LWNvbnN0YW50LXR5cGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uOWJmMGM4YQotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLWRy aXZlLWZpeC1jb25zdGFudC10eXBlLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gM2RhMzE5 NTcwYzhhNmJlMGE3OWIzMzA2ZjFlZDM1NGM0YTk0MzI1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IGFrYWxsYWJldGggPGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IE1vbiwg MTIgSmFuIDIwMjYgMDM6NDQ6MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLGRy aXZlXSBmaXggY29uc3RhbnQgdHlwZQorCitlbnN1cmUgY29uc3RhbnQgaXMgb2YgNjRiaXQgaW50 ZWdlciB0eXBlCistLS0KKyBjaGFubmVscy9kcml2ZS9jbGllbnQvZHJpdmVfbWFpbi5jIHwgMiAr LQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZm IC0tZ2l0IGEvY2hhbm5lbHMvZHJpdmUvY2xpZW50L2RyaXZlX21haW4uYyBiL2NoYW5uZWxzL2Ry aXZlL2NsaWVudC9kcml2ZV9tYWluLmMKK2luZGV4IDFkY2U1YzM0OC4uMTMxODhmYmM2IDEwMDY0 NAorLS0tIGEvY2hhbm5lbHMvZHJpdmUvY2xpZW50L2RyaXZlX21haW4uYworKysrIGIvY2hhbm5l bHMvZHJpdmUvY2xpZW50L2RyaXZlX21haW4uYworQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMg VUlOVCBkcml2ZV9wcm9jZXNzX2lycF9yZWFkKERSSVZFX0RFVklDRSogZHJpdmUsIElSUCogaXJw KQorIAkJTGVuZ3RoID0gMDsKKyAJfQorIAorLQlpZiAoIVN0cmVhbV9FbnN1cmVSZW1haW5pbmdD YXBhY2l0eShpcnAtPm91dHB1dCwgTGVuZ3RoICsgNCkpCisrCWlmICghU3RyZWFtX0Vuc3VyZVJl bWFpbmluZ0NhcGFjaXR5KGlycC0+b3V0cHV0LCA0dWxsICsgTGVuZ3RoKSkKKyAJeworIAkJV0xv Z19FUlIoVEFHLCAiU3RyZWFtX0Vuc3VyZVJlbWFpbmluZ0NhcGFjaXR5IGZhaWxlZCEiKTsKKyAJ CXJldHVybiBFUlJPUl9JTlRFUk5BTF9FUlJPUjsKKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQg YS9jaGFubmVscy1yZHBzbmQtdGVybWluYXRlLXRocmVhZC1iZWZvcmUtZnJlZS5wYXRjaCBiL2No YW5uZWxzLXJkcHNuZC10ZXJtaW5hdGUtdGhyZWFkLWJlZm9yZS1mcmVlLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YjNmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9j aGFubmVscy1yZHBzbmQtdGVybWluYXRlLXRocmVhZC1iZWZvcmUtZnJlZS5wYXRjaApAQCAtMCww ICsxLDczIEBACitGcm9tIGM5ZjJiNDIyMmNmNTFhMjU5Yjc3ZWQ0ZTgzYzQ1ZjZhMDg4ODRjYjgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0 LmNvbT4KK0RhdGU6IEZyaSwgMTMgTWFyIDIwMjYgMTU6NDY6MTcgKzAxMDAKK1N1YmplY3Q6IFtQ QVRDSF0gW2NoYW5uZWxzLHJkcHNuZF0gdGVybWluYXRlIHRocmVhZCBiZWZvcmUgZnJlZQorCitC YWNrcG9ydCBvZiBjb21taXQgNjIyYmI3YjQ0MDI0OTFjYTAwM2Y0NzQ3MmQwZTQ3ODEzMjY3MzY5 Ni4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNoYW5uZWxzL3JkcHNuZC9jbGllbnQvcmRw c25kX21haW4uYyB8IDI4ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hh bmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2No YW5uZWxzL3JkcHNuZC9jbGllbnQvcmRwc25kX21haW4uYyBiL2NoYW5uZWxzL3JkcHNuZC9jbGll bnQvcmRwc25kX21haW4uYworaW5kZXggM2RlNGNiYzY2Li5jNzY2MGE4NTcgMTAwNjQ0CistLS0g YS9jaGFubmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMKKysrKyBiL2NoYW5uZWxzL3Jk cHNuZC9jbGllbnQvcmRwc25kX21haW4uYworQEAgLTM2LDYgKzM2LDcgQEAKKyAjaW5jbHVkZSA8 c3RyaW5nLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgCisrI2luY2x1ZGUgPHdpbnByL2Fzc2Vy dC5oPgorICNpbmNsdWRlIDx3aW5wci9jcnQuaD4KKyAjaW5jbHVkZSA8d2lucHIvd2xvZy5oPgor ICNpbmNsdWRlIDx3aW5wci9zdHJlYW0uaD4KK0BAIC0xMjQ0LDExICsxMjQ1LDI5IEBAIGZhaWw6 CisgCXJldHVybiBDSEFOTkVMX1JDX05PX01FTU9SWTsKKyB9CisgCisrc3RhdGljIHZvaWQgcmRw c25kX3Rlcm1pbmF0ZV90aHJlYWQocmRwc25kUGx1Z2luKiByZHBzbmQpCisreworKwlXSU5QUl9B U1NFUlQocmRwc25kKTsKKysJaWYgKHJkcHNuZC0+cXVldWUpCisrCQlNZXNzYWdlUXVldWVfUG9z dFF1aXQocmRwc25kLT5xdWV1ZSwgMCk7CisrCisrCWlmIChyZHBzbmQtPnRocmVhZCkKKysJewor KwkJKHZvaWQpV2FpdEZvclNpbmdsZU9iamVjdChyZHBzbmQtPnRocmVhZCwgSU5GSU5JVEUpOwor KwkJKHZvaWQpQ2xvc2VIYW5kbGUocmRwc25kLT50aHJlYWQpOworKwl9CisrCisrCU1lc3NhZ2VR dWV1ZV9GcmVlKHJkcHNuZC0+cXVldWUpOworKwlyZHBzbmQtPnRocmVhZCA9IE5VTEw7CisrCXJk cHNuZC0+cXVldWUgPSBOVUxMOworK30KKysKKyBzdGF0aWMgdm9pZCBjbGVhbnVwX2ludGVybmFs cyhyZHBzbmRQbHVnaW4qIHJkcHNuZCkKKyB7CisgCWlmICghcmRwc25kKQorIAkJcmV0dXJuOwor IAorKwlyZHBzbmRfdGVybWluYXRlX3RocmVhZChyZHBzbmQpOworIAlpZiAocmRwc25kLT5wb29s KQorIAkJU3RyZWFtUG9vbF9SZXR1cm4ocmRwc25kLT5wb29sLCByZHBzbmQtPmRhdGFfaW4pOwor IAorQEAgLTEzOTYsMTQgKzE0MTUsNyBAQCB2b2lkIHJkcHNuZF92aXJ0dWFsX2NoYW5uZWxfZXZl bnRfdGVybWluYXRlZChyZHBzbmRQbHVnaW4qIHJkcHNuZCkKKyB7CisgCWlmIChyZHBzbmQpCisg CXsKKy0JCWlmIChyZHBzbmQtPnF1ZXVlKQorLQkJCU1lc3NhZ2VRdWV1ZV9Qb3N0UXVpdChyZHBz bmQtPnF1ZXVlLCAwKTsKKy0JCWlmIChyZHBzbmQtPnRocmVhZCkKKy0JCXsKKy0JCQlXYWl0Rm9y U2luZ2xlT2JqZWN0KHJkcHNuZC0+dGhyZWFkLCBJTkZJTklURSk7CistCQkJQ2xvc2VIYW5kbGUo cmRwc25kLT50aHJlYWQpOworLQkJfQorLQkJTWVzc2FnZVF1ZXVlX0ZyZWUocmRwc25kLT5xdWV1 ZSk7CisrCQlyZHBzbmRfdGVybWluYXRlX3RocmVhZChyZHBzbmQpOworIAorIAkJZnJlZV9pbnRl cm5hbHMocmRwc25kKTsKKyAJCWF1ZGlvX2Zvcm1hdHNfZnJlZShyZHBzbmQtPmZpeGVkX2Zvcm1h dCwgMSk7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMtc2VyaWFsLWV4cGxp Y2l0bHktbG9jay1zZXJpYWwtSXJwVGhyZWFkcy5wYXRjaCBiL2NoYW5uZWxzLXNlcmlhbC1leHBs aWNpdGx5LWxvY2stc2VyaWFsLUlycFRocmVhZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMmU0MTFjZgotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLXNlcmlh bC1leHBsaWNpdGx5LWxvY2stc2VyaWFsLUlycFRocmVhZHMucGF0Y2gKQEAgLTAsMCArMSw1NSBA QAorRnJvbSBjMDI4MzgxMmM5MThjNzczOGZhY2FmYWM1MmNmNTFkOTE2NTM2MTM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitE YXRlOiBUdWUsIDEwIE1hciAyMDI2IDA4OjQ3OjU3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtj aGFubmVscyxzZXJpYWxdIGV4cGxpY2l0bHkgbG9jayBzZXJpYWwtPklycFRocmVhZHMKKworQmFj a3BvcnQgb2YgY29tbWl0IDY3NWMyMGYwOGYzMmNhNWVjMDYyOTcxMDhiZGYzMDE0N2Q2ZTJjZDku CisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy9zZXJpYWwvY2xpZW50L3Nlcmlh bF9tYWluLmMgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy9zZXJpYWwvY2xpZW50L3Nlcmlh bF9tYWluLmMgYi9jaGFubmVscy9zZXJpYWwvY2xpZW50L3NlcmlhbF9tYWluLmMKK2luZGV4IGQ3 NmQ3MjVmMS4uYzhhMjdjNDZjIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9z ZXJpYWxfbWFpbi5jCisrKysgYi9jaGFubmVscy9zZXJpYWwvY2xpZW50L3NlcmlhbF9tYWluLmMK K0BAIC01OTcsNyArNTk3LDEwIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9pcnBfdGhyZWFkKFNFUklB TF9ERVZJQ0UqIHNlcmlhbCwgSVJQKiBpcnApCisgCSAqIG9ic2VydmVkIHdpdGggRnJlZVJEUCku CisgCSAqLworIAlrZXkgPSBpcnAtPkNvbXBsZXRpb25JZDsKKysKKysJTGlzdERpY3Rpb25hcnlf TG9jayhzZXJpYWwtPklycFRocmVhZHMpOworIAlwcmV2aW91c0lycFRocmVhZCA9IExpc3REaWN0 aW9uYXJ5X0dldEl0ZW1WYWx1ZShzZXJpYWwtPklycFRocmVhZHMsICh2b2lkKilrZXkpOworKwlM aXN0RGljdGlvbmFyeV9VbmxvY2soc2VyaWFsLT5JcnBUaHJlYWRzKTsKKyAKKyAJaWYgKHByZXZp b3VzSXJwVGhyZWFkKQorIAl7CitAQCAtNjc4LDYgKzY4MSw3IEBAIHN0YXRpYyB2b2lkIHRlcm1p bmF0ZV9wZW5kaW5nX2lycF90aHJlYWRzKFNFUklBTF9ERVZJQ0UqIHNlcmlhbCkKKyB7CisgCVVM T05HX1BUUiogaWRzOworIAlpbnQgaSwgbmJJZHM7CisrCUxpc3REaWN0aW9uYXJ5X0xvY2soc2Vy aWFsLT5JcnBUaHJlYWRzKTsKKyAJbmJJZHMgPSBMaXN0RGljdGlvbmFyeV9HZXRLZXlzKHNlcmlh bC0+SXJwVGhyZWFkcywgJmlkcyk7CisgCVdMb2dfUHJpbnQoc2VyaWFsLT5sb2csIFdMT0dfREVC VUcsICJUZXJtaW5hdGluZyAlZCBJUlAgdGhyZWFkKHMpIiwgbmJJZHMpOworIAorQEAgLTY5OSw2 ICs3MDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXJtaW5hdGVfcGVuZGluZ19pcnBfdGhyZWFkcyhTRVJJ QUxfREVWSUNFKiBzZXJpYWwpCisgCX0KKyAKKyAJTGlzdERpY3Rpb25hcnlfQ2xlYXIoc2VyaWFs LT5JcnBUaHJlYWRzKTsKKysJTGlzdERpY3Rpb25hcnlfVW5sb2NrKHNlcmlhbC0+SXJwVGhyZWFk cyk7CisgCWZyZWUoaWRzKTsKKyB9CisgCitAQCAtOTMyLDcgKzkzNyw3IEBAIFVJTlQgRGV2aWNl U2VydmljZUVudHJ5KFBERVZJQ0VfU0VSVklDRV9FTlRSWV9QT0lOVFMgcEVudHJ5UG9pbnRzKQor IAkJfQorIAorIAkJLyogSXJwVGhyZWFkcyBjb250ZW50IG9ubHkgbW9kaWZpZWQgYnkgY3JlYXRl X2lycF90aHJlYWQoKSAqLworLQkJc2VyaWFsLT5JcnBUaHJlYWRzID0gTGlzdERpY3Rpb25hcnlf TmV3KFRSVUUpOworKwkJc2VyaWFsLT5JcnBUaHJlYWRzID0gTGlzdERpY3Rpb25hcnlfTmV3KEZB TFNFKTsKKyAKKyAJCWlmICghc2VyaWFsLT5JcnBUaHJlYWRzKQorIAkJeworLS0gCisyLjUzLjAK KwoKZGlmZiAtLWdpdCBhL2NoYW5uZWxzLXNlcmlhbC1sb2NrLWxpc3QtZGljdGlvbmFyeS5wYXRj aCBiL2NoYW5uZWxzLXNlcmlhbC1sb2NrLWxpc3QtZGljdGlvbmFyeS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWJjMzMxCi0tLSAvZGV2L251bGwKKysrIGIvY2hh bm5lbHMtc2VyaWFsLWxvY2stbGlzdC1kaWN0aW9uYXJ5LnBhdGNoCkBAIC0wLDAgKzEsODkgQEAK K0Zyb20gN2NmNzQyMTU5YmQyNjc1MzY2YzcxODdjNGJjNTEwMThiNTQ4ZDIyOCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0 ZTogVHVlLCAxMCBNYXIgMjAyNiAwODo0Nzo0NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2hh bm5lbHMsc2VyaWFsXSBsb2NrIGxpc3QgZGljdGlvbmFyeQorCitCYWNrcG9ydCBvZiBjb21taXQg YjM1YWEzNjE0ZDMyYmZmM2ZjMTI3MmNkN2M0NjE3ZjcxMWZjYTFhNC4KKworTWFkZS13aXRoOiBD dXJzb3IKKy0tLQorIGNoYW5uZWxzL3NlcmlhbC9jbGllbnQvc2VyaWFsX21haW4uYyB8IDM1ICsr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy9zZXJpYWwvY2xp ZW50L3NlcmlhbF9tYWluLmMgYi9jaGFubmVscy9zZXJpYWwvY2xpZW50L3NlcmlhbF9tYWluLmMK K2luZGV4IGFmZTY3YjRkMy4uZDc2ZDcyNWYxIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvc2VyaWFs L2NsaWVudC9zZXJpYWxfbWFpbi5jCisrKysgYi9jaGFubmVscy9zZXJpYWwvY2xpZW50L3Nlcmlh bF9tYWluLmMKK0BAIC01NDAsNiArNTQwLDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2lycF90aHJl YWQoU0VSSUFMX0RFVklDRSogc2VyaWFsLCBJUlAqIGlycCkKKyAJCUhBTkRMRSBpcnBUaHJlYWQ7 CisgCQlVTE9OR19QVFIqIGlkczsKKyAJCWludCBpLCBuYklkczsKKysJCUxpc3REaWN0aW9uYXJ5 X0xvY2soc2VyaWFsLT5JcnBUaHJlYWRzKTsKKyAJCW5iSWRzID0gTGlzdERpY3Rpb25hcnlfR2V0 S2V5cyhzZXJpYWwtPklycFRocmVhZHMsICZpZHMpOworIAorIAkJZm9yIChpID0gMDsgaSA8IG5i SWRzOyBpKyspCitAQCAtNTgxLDYgKzU4Miw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9pcnBfdGhy ZWFkKFNFUklBTF9ERVZJQ0UqIHNlcmlhbCwgSVJQKiBpcnApCisgCQl9CisgCisgCQlmcmVlKGlk cyk7CisrCQlMaXN0RGljdGlvbmFyeV9VbmxvY2soc2VyaWFsLT5JcnBUaHJlYWRzKTsKKyAJfQor IAorIAlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmc2VyaWFsLT5UZXJtaW5hdGluZ0lycFRocmVhZHNM b2NrKTsKK0BAIC02MjEsMTkgKzYyMyw2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9pcnBfdGhyZWFk KFNFUklBTF9ERVZJQ0UqIHNlcmlhbCwgSVJQKiBpcnApCisgCQlyZXR1cm47CisgCX0KKyAKKy0J aWYgKExpc3REaWN0aW9uYXJ5X0NvdW50KHNlcmlhbC0+SXJwVGhyZWFkcykgPj0gTUFYX0lSUF9U SFJFQURTKQorLQl7CistCQlXTG9nX1ByaW50KHNlcmlhbC0+bG9nLCBXTE9HX1dBUk4sCistCQkg ICAgICAgICAgICJOdW1iZXIgb2YgSVJQIHRocmVhZHMgdGhyZXNob2xkIHJlYWNoZWQ6ICVkLCBr ZWVwIG9uIGFueXdheSIsCistCQkgICAgICAgICAgIExpc3REaWN0aW9uYXJ5X0NvdW50KHNlcmlh bC0+SXJwVGhyZWFkcykpOworLQkJYXNzZXJ0KEZBTFNFKTsgLyogdW5pbXBsZW1lbnRlZCAqLwor LQkJICAgICAgICAgICAgICAgLyogVE9ETzogTUFYX0lSUF9USFJFQURTIGhhcyBiZWVuIHRob3Vn aHQgdG8gYXZvaWQgYQorLQkJICAgICAgICAgICAgICAgICogZmxvb2Rpbmcgb2YgcGVuZGluZyBy ZXF1ZXN0cy4gVXNlCistCQkgICAgICAgICAgICAgICAgKiBXYWl0Rm9yTXVsdGlwbGVPYmplY3Rz KCkgd2hlbiBhdmFpbGFibGUgaW4gd2lucHIKKy0JCSAgICAgICAgICAgICAgICAqIGZvciB0aHJl YWRzLgorLQkJICAgICAgICAgICAgICAgICovCistCX0KKy0KKyAJLyogZXJyb3JfaGFuZGxlIHRv IGJlIHVzZWQgLi4uICovCisgCWRhdGEgPSAoSVJQX1RIUkVBRF9EQVRBKiljYWxsb2MoMSwgc2l6 ZW9mKElSUF9USFJFQURfREFUQSkpOworIAorQEAgLTY1Niw3ICs2NDUsMjMgQEAgc3RhdGljIHZv aWQgY3JlYXRlX2lycF90aHJlYWQoU0VSSUFMX0RFVklDRSogc2VyaWFsLCBJUlAqIGlycCkKKyAK KyAJa2V5ID0gaXJwLT5Db21wbGV0aW9uSWQ7CisgCistCWlmICghTGlzdERpY3Rpb25hcnlfQWRk KHNlcmlhbC0+SXJwVGhyZWFkcywgKHZvaWQqKWtleSwgaXJwVGhyZWFkKSkKKysJTGlzdERpY3Rp b25hcnlfTG9jayhzZXJpYWwtPklycFRocmVhZHMpOworKwlpZiAoTGlzdERpY3Rpb25hcnlfQ291 bnQoc2VyaWFsLT5JcnBUaHJlYWRzKSA+PSBNQVhfSVJQX1RIUkVBRFMpCisrCXsKKysJCVdMb2df UHJpbnQoc2VyaWFsLT5sb2csIFdMT0dfV0FSTiwKKysJCSAgICAgICAgICAgIk51bWJlciBvZiBJ UlAgdGhyZWFkcyB0aHJlc2hvbGQgcmVhY2hlZDogJWQsIGtlZXAgb24gYW55d2F5IiwKKysJCSAg ICAgICAgICAgTGlzdERpY3Rpb25hcnlfQ291bnQoc2VyaWFsLT5JcnBUaHJlYWRzKSk7CisrCQlh c3NlcnQoRkFMU0UpOyAvKiB1bmltcGxlbWVudGVkICovCisrCQkgICAgICAgICAgICAgICAvKiBU T0RPOiBNQVhfSVJQX1RIUkVBRFMgaGFzIGJlZW4gdGhvdWdodCB0byBhdm9pZCBhCisrCQkgICAg ICAgICAgICAgICAgKiBmbG9vZGluZyBvZiBwZW5kaW5nIHJlcXVlc3RzLiBVc2UKKysJCSAgICAg ICAgICAgICAgICAqIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoKSB3aGVuIGF2YWlsYWJsZSBpbiB3 aW5wcgorKwkJICAgICAgICAgICAgICAgICogZm9yIHRocmVhZHMuCisrCQkgICAgICAgICAgICAg ICAgKi8KKysJfQorKwljb25zdCBCT09MIGFkZGVkID0gTGlzdERpY3Rpb25hcnlfQWRkKHNlcmlh bC0+SXJwVGhyZWFkcywgKHZvaWQqKWtleSwgaXJwVGhyZWFkKTsKKysJTGlzdERpY3Rpb25hcnlf VW5sb2NrKHNlcmlhbC0+SXJwVGhyZWFkcyk7CisrCisrCWlmICghYWRkZWQpCisgCXsKKyAJCVdM b2dfRVJSKFRBRywgIkxpc3REaWN0aW9uYXJ5X0FkZCBmYWlsZWQhIik7CisgCQlnb3RvIGVycm9y X2hhbmRsZTsKK0BAIC05MjcsNyArOTMyLDcgQEAgVUlOVCBEZXZpY2VTZXJ2aWNlRW50cnkoUERF VklDRV9TRVJWSUNFX0VOVFJZX1BPSU5UUyBwRW50cnlQb2ludHMpCisgCQl9CisgCisgCQkvKiBJ cnBUaHJlYWRzIGNvbnRlbnQgb25seSBtb2RpZmllZCBieSBjcmVhdGVfaXJwX3RocmVhZCgpICov CistCQlzZXJpYWwtPklycFRocmVhZHMgPSBMaXN0RGljdGlvbmFyeV9OZXcoRkFMU0UpOworKwkJ c2VyaWFsLT5JcnBUaHJlYWRzID0gTGlzdERpY3Rpb25hcnlfTmV3KFRSVUUpOworIAorIAkJaWYg KCFzZXJpYWwtPklycFRocmVhZHMpCisgCQl7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEv Y2hhbm5lbHMtdXJiZHJjLWNhbmNlbC1hbGwtdXNiLXRyYW5zZmVycy1vbi1jaGFubmVsLS5wYXRj aCBiL2NoYW5uZWxzLXVyYmRyYy1jYW5jZWwtYWxsLXVzYi10cmFuc2ZlcnMtb24tY2hhbm5lbC0u cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZjY2I3ZAotLS0gL2Rl di9udWxsCisrKyBiL2NoYW5uZWxzLXVyYmRyYy1jYW5jZWwtYWxsLXVzYi10cmFuc2ZlcnMtb24t Y2hhbm5lbC0ucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSA0MTRmNzAxNDY0OTI5YzIxN2Yy NTA5YmNiZDZkMmMxZjAwZjdlZDczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYWth bGxhYmV0aCA8YWthbGxhYmV0aEBwb3N0ZW8ubmV0PgorRGF0ZTogTW9uLCAyNiBKYW4gMjAyNiAx MTowNzoyNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2hhbm5lbHMsdXJiZHJjXSBjYW5jZWwg YWxsIHVzYiB0cmFuc2ZlcnMgb24gY2hhbm5lbCBjbG9zZQorCistLS0KKyBjaGFubmVscy91cmJk cmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy91cmJkcmMvY2xpZW50L2xp YnVzYi9saWJ1c2JfdWRldmljZS5jIGIvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1c2IvbGli dXNiX3VkZXZpY2UuYworaW5kZXggNTM0MTI0OGVjLi45ZTJkM2VjNWEgMTAwNjQ0CistLS0gYS9j aGFubmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jCisrKysgYi9jaGFu bmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jCitAQCAtMTE2NSw2ICsx MTY1LDcgQEAgc3RhdGljIHZvaWQgbGlidXNiX3VkZXZfbWFya19jaGFubmVsX2Nsb3NlZChJVURF VklDRSogaWRldikKKyAJCWNvbnN0IHVpbnQ4X3QgZGV2TnIgPSBpZGV2LT5nZXRfZGV2X251bWJl cihpZGV2KTsKKyAKKyAJCXBkZXYtPnN0YXR1cyB8PSBVUkJEUkNfREVWSUNFX0NIQU5ORUxfQ0xP U0VEOworKwkJcGRldi0+aWZhY2UuY2FuY2VsX2FsbF90cmFuc2Zlcl9yZXF1ZXN0KCZwZGV2LT5p ZmFjZSk7CisgCQl1cmJkcmMtPnVkZXZtYW4tPnVucmVnaXN0ZXJfdWRldmljZSh1cmJkcmMtPnVk ZXZtYW4sIGJ1c05yLCBkZXZOcik7CisgCX0KKyB9CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0 IGEvY2hhbm5lbHMtdXJiZHJjLWNoZWNrLWludGVyZmFjZS1pbmRpY2VzLWJlZm9yZS11c2UucGF0 Y2ggYi9jaGFubmVscy11cmJkcmMtY2hlY2staW50ZXJmYWNlLWluZGljZXMtYmVmb3JlLXVzZS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzE4NzE3Ci0tLSAvZGV2 L251bGwKKysrIGIvY2hhbm5lbHMtdXJiZHJjLWNoZWNrLWludGVyZmFjZS1pbmRpY2VzLWJlZm9y ZS11c2UucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSBmODQ1M2JkYTUwNjkzMTRkMjcxOTcz ZWZmNjlkYzJlMDRmNmRmOTgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVq IEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDE3IEZlYiAyMDI2IDEzOjAxOjM3 ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjaGFubmVscyx1cmJkcmNdIGNoZWNrIGludGVyZmFj ZSBpbmRpY2VzIGJlZm9yZSB1c2UKKworQmFja3BvcnQgb2YgY29tbWl0IDdiN2U2ZGU4ZmU0Mjdh MmYwMWQzMzEwNTY3NzRhZWM2OTcxMDU5MGIgKGZ1bmN0aW9uYWwgY2hhbmdlcyBvbmx5KS4KKwor Q28tYXV0aG9yZWQtYnk6IEN1cnNvciA8Y3Vyc29yYWdlbnRAY3Vyc29yLmNvbT4KKy0tLQorIC4u Li91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jICAgICB8IDI1ICsrKysrKysr KysrKysrKysrKysKKyBjaGFubmVscy91cmJkcmMvY29tbW9uL21zdXNiLmMgICAgICAgICAgICAg ICAgfCAgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0t Z2l0IGEvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYyBiL2No YW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xpYnVzYl91ZGV2aWNlLmMKK2luZGV4IGVmODdm MTk1Zi4uYjJkODAyNDNiIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1 c2IvbGlidXNiX3VkZXZpY2UuYworKysrIGIvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1c2Iv bGlidXNiX3VkZXZpY2UuYworQEAgLTU5NywxMSArNTk3LDM2IEBAIGxpYnVzYl91ZGV2X2NvbXBs ZXRlX21zY29uZmlnX3NldHVwKElVREVWSUNFKiBpZGV2LCBNU1VTQl9DT05GSUdfREVTQ1JJUFRP UiogTXNDCisgCQkgICAgICAgICAgICJTZWxlY3QgQ29uZmlndXJhdGlvbjogTGlidXNiIE51bWJl ckludGVyZmFjZXMoJSIgUFJJdTggIikgaXMgZGlmZmVyZW50ICIKKyAJCSAgICAgICAgICAgIndp dGggTXNDb25maWcgTnVtYmVySW50ZXJmYWNlcyglIiBQUkl1MzIgIikiLAorIAkJICAgICAgICAg ICBMaWJ1c2JDb25maWctPmJOdW1JbnRlcmZhY2VzLCBNc0NvbmZpZy0+TnVtSW50ZXJmYWNlcyk7 CisrCQlyZXR1cm4gTlVMTDsKKyAJfQorIAorIAkvKiByZXBsYWNlIE1zUGlwZXMgZm9yIGxpYnVz YiAqLworIAlNc0ludGVyZmFjZXMgPSBNc0NvbmZpZy0+TXNJbnRlcmZhY2VzOworIAorKwkvKiBj aGVjayBpbnRlcmZhY2UgaW5kaWNlcyBiZWZvcmUgdXNlICovCisrCWZvciAoaW51bSA9IDA7IGlu dW0gPCBNc0NvbmZpZy0+TnVtSW50ZXJmYWNlczsgaW51bSsrKQorKwl7CisrCQlNc0ludGVyZmFj ZSA9IE1zSW50ZXJmYWNlc1tpbnVtXTsKKysJCWlmIChNc0ludGVyZmFjZS0+SW50ZXJmYWNlTnVt YmVyID49IE1zQ29uZmlnLT5OdW1JbnRlcmZhY2VzKQorKwkJeworKwkJCVdMb2dfUHJpbnQodXJi ZHJjLT5sb2csIFdMT0dfRVJST1IsCisrCQkJICAgICAgICAgICAiTVNVU0JfQ09ORklHX0RFU0NS SVBUT1I6Ok51bUludGVyZmFjZXMgKCUiIFBSSXUzMgorKwkJCSAgICAgICAgICAgIiA8PSBNU1VT Ql9JTlRFUkZBQ0VfREVTQ1JJUFRPUjo6SW50ZXJmYWNlTnVtYmVyKCAlIiBQUkl1OCAiKSIsCisr CQkJICAgICAgICAgICBNc0NvbmZpZy0+TnVtSW50ZXJmYWNlcywgTXNJbnRlcmZhY2UtPkludGVy ZmFjZU51bWJlcik7CisrCQkJcmV0dXJuIE5VTEw7CisrCQl9CisrCisrCQlMaWJ1c2JJbnRlcmZh Y2UgPSAmTGlidXNiQ29uZmlnLT5pbnRlcmZhY2VbTXNJbnRlcmZhY2UtPkludGVyZmFjZU51bWJl cl07CisrCQlpZiAoTXNJbnRlcmZhY2UtPkFsdGVybmF0ZVNldHRpbmcgPj0gTGlidXNiSW50ZXJm YWNlLT5udW1fYWx0c2V0dGluZykKKysJCXsKKysJCQlXTG9nX1ByaW50KHVyYmRyYy0+bG9nLCBX TE9HX0VSUk9SLAorKwkJCSAgICAgICAgICAgIkxJQlVTQl9JTlRFUkZBQ0U6Om51bV9hbHRzZXR0 aW5nICglIiBQUklkMzIKKysJCQkgICAgICAgICAgICIgPD0gTVNVU0JfSU5URVJGQUNFX0RFU0NS SVBUT1I6OkFsdGVybmF0ZVNldHRpbmcoICUiIFBSSXU4ICIpIiwKKysJCQkgICAgICAgICAgIExp YnVzYkludGVyZmFjZS0+bnVtX2FsdHNldHRpbmcsIE1zSW50ZXJmYWNlLT5BbHRlcm5hdGVTZXR0 aW5nKTsKKysJCQlyZXR1cm4gTlVMTDsKKysJCX0KKysJfQorKworIAlmb3IgKGludW0gPSAwOyBp bnVtIDwgTXNDb25maWctPk51bUludGVyZmFjZXM7IGludW0rKykKKyAJeworIAkJTXNJbnRlcmZh Y2UgPSBNc0ludGVyZmFjZXNbaW51bV07CitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdXJiZHJjL2Nv bW1vbi9tc3VzYi5jIGIvY2hhbm5lbHMvdXJiZHJjL2NvbW1vbi9tc3VzYi5jCitpbmRleCBiYjUx N2NlNWQuLjExM2I3Yzk2YiAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3VyYmRyYy9jb21tb24vbXN1 c2IuYworKysrIGIvY2hhbm5lbHMvdXJiZHJjL2NvbW1vbi9tc3VzYi5jCitAQCAtMTM5LDYgKzEz OSw4IEBAIEJPT0wgbXN1c2JfbXNpbnRlcmZhY2VfcmVwbGFjZShNU1VTQl9DT05GSUdfREVTQ1JJ UFRPUiogTXNDb25maWcsIEJZVEUgSW50ZXJmYWNlCisgeworIAlpZiAoIU1zQ29uZmlnIHx8ICFN c0NvbmZpZy0+TXNJbnRlcmZhY2VzKQorIAkJcmV0dXJuIEZBTFNFOworKwlpZiAoTXNDb25maWct Pk51bUludGVyZmFjZXMgPD0gSW50ZXJmYWNlTnVtYmVyKQorKwkJcmV0dXJuIEZBTFNFOworIAor IAltc3VzYl9tc2ludGVyZmFjZV9mcmVlKE1zQ29uZmlnLT5Nc0ludGVyZmFjZXNbSW50ZXJmYWNl TnVtYmVyXSk7CisgCU1zQ29uZmlnLT5Nc0ludGVyZmFjZXNbSW50ZXJmYWNlTnVtYmVyXSA9IE5l d01zSW50ZXJmYWNlOworLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhL2NoYW5uZWxzLXVyYmRy Yy1kby1ub3QtZnJlZS1Nc0NvbmZpZy1vbi1mYWlsdXJlLnBhdGNoIGIvY2hhbm5lbHMtdXJiZHJj LWRvLW5vdC1mcmVlLU1zQ29uZmlnLW9uLWZhaWx1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMDA3NzFmZQotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLXVy YmRyYy1kby1ub3QtZnJlZS1Nc0NvbmZpZy1vbi1mYWlsdXJlLnBhdGNoCkBAIC0wLDAgKzEsMzEg QEAKK0Zyb20gYWFhZDQ3MThkODBiMDM1NGZkODA3ZDY4MGIxMjM5MDA3NWZlNGZhMCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgor RGF0ZTogV2VkLCAxMSBNYXIgMjAyNiAxMjoyNzo0NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBb Y2hhbm5lbHMsdXJiZHJjXSBkbyBub3QgZnJlZSBNc0NvbmZpZyBvbiBmYWlsdXJlCisKK0JhY2tw b3J0IG9mIGNvbW1pdCBkNjc2NTE4ODA5YzMxOWVlYzE1OTExYzcwNWMxMzUzNjAzNmFmMmFlLgor CitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9kYXRhX3Ry YW5zZmVyLmMgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy91cmJkcmMvY2xpZW50L2RhdGFfdHJh bnNmZXIuYyBiL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvZGF0YV90cmFuc2Zlci5jCitpbmRleCBl ZDZjY2YzMmQuLmM1NDdkNTJkNyAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQv ZGF0YV90cmFuc2Zlci5jCisrKysgYi9jaGFubmVscy91cmJkcmMvY2xpZW50L2RhdGFfdHJhbnNm ZXIuYworQEAgLTU3MCwxMCArNTcwLDggQEAgc3RhdGljIFVJTlQgdXJiX3NlbGVjdF9pbnRlcmZh Y2UoSVVERVZJQ0UqIHBkZXYsIFVSQkRSQ19DSEFOTkVMX0NBTExCQUNLKiBjYWxsYmEKKyAJTXND b25maWcgPSBwZGV2LT5nZXRfTXNDb25maWcocGRldik7CisgCUludGVyZmFjZU51bWJlciA9IE1z SW50ZXJmYWNlLT5JbnRlcmZhY2VOdW1iZXI7CisgCWlmICghbXN1c2JfbXNpbnRlcmZhY2VfcmVw bGFjZShNc0NvbmZpZywgSW50ZXJmYWNlTnVtYmVyLCBNc0ludGVyZmFjZSkpCistCXsKKy0JCW1z dXNiX21zY29uZmlnX2ZyZWUoTXNDb25maWcpOworIAkJcmV0dXJuIEVSUk9SX0JBRF9DT05GSUdV UkFUSU9OOworLQl9CisrCisgCS8qIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gc2V0dXAgKi8KKyAJ aWYgKCFwZGV2LT5jb21wbGV0ZV9tc2NvbmZpZ19zZXR1cChwZGV2LCBNc0NvbmZpZykpCisgCXsK Ky0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy11cmJkcmMtZW5zdXJlLUludGVy ZmFjZU51bWJlci1pcy13aXRoaW4tcmFuLnBhdGNoIGIvY2hhbm5lbHMtdXJiZHJjLWVuc3VyZS1J bnRlcmZhY2VOdW1iZXItaXMtd2l0aGluLXJhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xYzIxNGEwCi0tLSAvZGV2L251bGwKKysrIGIvY2hhbm5lbHMtdXJiZHJj LWVuc3VyZS1JbnRlcmZhY2VOdW1iZXItaXMtd2l0aGluLXJhbi5wYXRjaApAQCAtMCwwICsxLDQ1 IEBACitGcm9tIGVhNDkzOTFiMzQ2M2I3ZGYxOGViOWMzNThjZGVjMDRlZGY5YzQwMDEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4K K0RhdGU6IFRodSwgMTIgTWFyIDIwMjYgMTE6MDM6MjAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0g W2NoYW5uZWxzLHVyYmRyY10gZW5zdXJlIEludGVyZmFjZU51bWJlciBpcyB3aXRoaW4gcmFuZ2UK KworQmFja3BvcnQgb2YgY29tbWl0IDJkNTYzYTUwYmUxN2MxYjQwN2NhNDQ4YjEzMjEzNzhjMDcy NmRkMzEuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy91cmJkcmMvY2xpZW50 L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5n ZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NoYW5u ZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xpYnVzYl91ZGV2aWNlLmMgYi9jaGFubmVscy91cmJk cmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jCitpbmRleCBiMmQ4MDI0M2IuLmFlOGJi YjRjNSAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xpYnVzYl91 ZGV2aWNlLmMKKysrKyBiL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xpYnVzYl91ZGV2 aWNlLmMKK0BAIC01MjgsMTkgKzUyOCwxOSBAQCBzdGF0aWMgaW50IGxpYnVzYl91ZGV2X3NlbGVj dF9pbnRlcmZhY2UoSVVERVZJQ0UqIGlkZXYsIEJZVEUgSW50ZXJmYWNlTnVtYmVyLCBCWQorIHsK KyAJaW50IGVycm9yID0gMCwgZGlmZiA9IDA7CisgCVVERVZJQ0UqIHBkZXYgPSAoVURFVklDRSop aWRldjsKKy0JVVJCRFJDX1BMVUdJTiogdXJiZHJjOworLQlNU1VTQl9DT05GSUdfREVTQ1JJUFRP UiogTXNDb25maWc7CistCU1TVVNCX0lOVEVSRkFDRV9ERVNDUklQVE9SKiogTXNJbnRlcmZhY2Vz OworIAorIAlpZiAoIXBkZXYgfHwgIXBkZXYtPnVyYmRyYykKKyAJCXJldHVybiAtMTsKKyAKKy0J dXJiZHJjID0gcGRldi0+dXJiZHJjOworLQlNc0NvbmZpZyA9IHBkZXYtPk1zQ29uZmlnOworKwlV UkJEUkNfUExVR0lOKiB1cmJkcmMgPSBwZGV2LT51cmJkcmM7CisrCU1TVVNCX0NPTkZJR19ERVND UklQVE9SKiBNc0NvbmZpZyA9IHBkZXYtPk1zQ29uZmlnOworIAorIAlpZiAoTXNDb25maWcpCisg CXsKKy0JCU1zSW50ZXJmYWNlcyA9IE1zQ29uZmlnLT5Nc0ludGVyZmFjZXM7CisrCQlpZiAoSW50 ZXJmYWNlTnVtYmVyID49IE1zQ29uZmlnLT5OdW1JbnRlcmZhY2VzKQorKwkJCXJldHVybiAtMjsK KysKKysJCU1TVVNCX0lOVEVSRkFDRV9ERVNDUklQVE9SKiogTXNJbnRlcmZhY2VzID0gTXNDb25m aWctPk1zSW50ZXJmYWNlczsKKyAJCWlmIChNc0ludGVyZmFjZXMpCisgCQl7CisgCQkJV0xvZ19Q cmludCh1cmJkcmMtPmxvZywgV0xPR19JTkZPLAorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBh L2NoYW5uZWxzLXZpZGVvLWZpeC13cm9uZy1jYXN0LnBhdGNoIGIvY2hhbm5lbHMtdmlkZW8tZml4 LXdyb25nLWNhc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThi YWIxYgotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLXZpZGVvLWZpeC13cm9uZy1jYXN0LnBh dGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gOTcwYWQyMzExZTY5NTg5MDA0ZDZhODQ5NjFhYTlk MWUzYjMzYzA4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxv aG9seUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyNiBNYXIgMjAyNiAxNTo1NzozNCArMDEwMAor U3ViamVjdDogW1BBVENIXSBbY2hhbm5lbHMsdmlkZW9dIGZpeCB3cm9uZyBjYXN0CisKK0JhY2tw b3J0IG9mIGNvbW1pdCBlMDFjZDg1YzgwMDNhMjQ1ZWY5Nzc4ZjBlZGE0YjkyMzU1MTRjMjAxLgor CitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21h aW4uYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFubmVscy92aWRlby9jbGllbnQvdmlkZW9fbWFpbi5j IGIvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYworaW5kZXggNjQxMjMxYjFkLi4w YWY3ODE0MGUgMTAwNjQ0CistLS0gYS9jaGFubmVscy92aWRlby9jbGllbnQvdmlkZW9fbWFpbi5j CisrKysgYi9jaGFubmVscy92aWRlby9jbGllbnQvdmlkZW9fbWFpbi5jCitAQCAtOTU5LDcgKzk1 OSw3IEBAIHN0YXRpYyBVSU5UIHZpZGVvX2NvbnRyb2xfb25fY2xvc2UoSVdUU1ZpcnR1YWxDaGFu bmVsQ2FsbGJhY2sqIHBDaGFubmVsQ2FsbGJhY2spCisgeworIAlpZiAocENoYW5uZWxDYWxsYmFj aykKKyAJeworLQkJVklERU9fTElTVEVORVJfQ0FMTEJBQ0sqIGxpc3RlbmVyX2NhbGxiYWNrID0g KFZJREVPX0xJU1RFTkVSX0NBTExCQUNLKilwQ2hhbm5lbENhbGxiYWNrOworKwkJVklERU9fQ0hB Tk5FTF9DQUxMQkFDSyogbGlzdGVuZXJfY2FsbGJhY2sgPSAoVklERU9fQ0hBTk5FTF9DQUxMQkFD SyopcENoYW5uZWxDYWxsYmFjazsKKyAJCVZJREVPX1BMVUdJTiogdmlkZW8gPSAoVklERU9fUExV R0lOKilsaXN0ZW5lcl9jYWxsYmFjay0+cGx1Z2luOworIAkJaWYgKHZpZGVvICYmIHZpZGVvLT5j b250cm9sX2NhbGxiYWNrKQorIAkJeworQEAgLTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMgVUlOVCB2 aWRlb19kYXRhX29uX2Nsb3NlKElXVFNWaXJ0dWFsQ2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENh bGxiYWNrKQorIHsKKyAJaWYgKHBDaGFubmVsQ2FsbGJhY2spCisgCXsKKy0JCVZJREVPX0xJU1RF TkVSX0NBTExCQUNLKiBsaXN0ZW5lcl9jYWxsYmFjayA9IChWSURFT19MSVNURU5FUl9DQUxMQkFD SyopcENoYW5uZWxDYWxsYmFjazsKKysJCVZJREVPX0NIQU5ORUxfQ0FMTEJBQ0sqIGxpc3RlbmVy X2NhbGxiYWNrID0gKFZJREVPX0NIQU5ORUxfQ0FMTEJBQ0sqKXBDaGFubmVsQ2FsbGJhY2s7Cisg CQlWSURFT19QTFVHSU4qIHZpZGVvID0gKFZJREVPX1BMVUdJTiopbGlzdGVuZXJfY2FsbGJhY2st PnBsdWdpbjsKKyAJCWlmICh2aWRlbyAmJiB2aWRlby0+ZGF0YV9jYWxsYmFjaykKKyAJCXsKKy0t IAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy12aWRlby11bmlmeS1lcnJvci1oYW5k bGluZy5wYXRjaCBiL2NoYW5uZWxzLXZpZGVvLXVuaWZ5LWVycm9yLWhhbmRsaW5nLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYWE5OTIKLS0tIC9kZXYvbnVsbAor KysgYi9jaGFubmVscy12aWRlby11bmlmeS1lcnJvci1oYW5kbGluZy5wYXRjaApAQCAtMCwwICsx LDEyMSBAQAorRnJvbSAyY2ZkYzE2ZmFlZDkzYThkNWQxZWMzOTE3ODg1NDc0MDlkZjk4NmRlIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5j b20+CitEYXRlOiBUaHUsIDI2IE1hciAyMDI2IDE1OjU3OjI4ICswMTAwCitTdWJqZWN0OiBbUEFU Q0hdIFtjaGFubmVscyx2aWRlb10gdW5pZnkgZXJyb3IgaGFuZGxpbmcKKworUGFydGlhbCBiYWNr cG9ydCBvZiBjb21taXQgNjM1YWUzYzgxOTMyNTZkYjAxNzc0ZmFiNWZmMTFiY2FlNTdhZWQ2Yi4K KworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNoYW5uZWxzL3ZpZGVvL2NsaWVudC92aWRlb19t YWluLmMgfCA0NSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdl ZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFu bmVscy92aWRlby9jbGllbnQvdmlkZW9fbWFpbi5jIGIvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3Zp ZGVvX21haW4uYworaW5kZXggYTgwMzFmYzg2Li42NDEyMzFiMWQgMTAwNjQ0CistLS0gYS9jaGFu bmVscy92aWRlby9jbGllbnQvdmlkZW9fbWFpbi5jCisrKysgYi9jaGFubmVscy92aWRlby9jbGll bnQvdmlkZW9fbWFpbi5jCitAQCAtMjUsNyArMjUsOSBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4K KyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgCisrI2luY2x1ZGUgPHdpbnByL2Fzc2VydC5oPgorICNp bmNsdWRlIDx3aW5wci9jcnQuaD4KKysjaW5jbHVkZSA8d2lucHIvZXJyb3IuaD4KKyAjaW5jbHVk ZSA8d2lucHIvc3luY2guaD4KKyAjaW5jbHVkZSA8d2lucHIvcHJpbnQuaD4KKyAjaW5jbHVkZSA8 d2lucHIvc3RyZWFtLmg+CitAQCAtMzUxLDE0ICszNTMsMjQgQEAgc3RhdGljIHZvaWQgVmlkZW9D bGllbnRDb250ZXh0UHJpdl9mcmVlKFZpZGVvQ2xpZW50Q29udGV4dFByaXYqIHByaXYpCisgCWZy ZWUocHJpdik7CisgfQorIAorK3N0YXRpYyBVSU5UIHZpZGVvX2NoYW5uZWxfd3JpdGUoVklERU9f UExVR0lOKiB2aWRlbywgY29uc3QgQllURSogZGF0YSwgVUlOVDMyIGxlbmd0aCkKKyt7CisrCVdJ TlBSX0FTU0VSVCh2aWRlbyk7CisrCisrCWlmICghdmlkZW8tPmNvbnRyb2xfY2FsbGJhY2sgfHwg IXZpZGVvLT5jb250cm9sX2NhbGxiYWNrLT5jaGFubmVsX2NhbGxiYWNrKQorKwkJcmV0dXJuIEVS Uk9SX0JBRF9DT05GSUdVUkFUSU9OOworKwlJV1RTVmlydHVhbENoYW5uZWwqIGNoYW5uZWwgPSB2 aWRlby0+Y29udHJvbF9jYWxsYmFjay0+Y2hhbm5lbF9jYWxsYmFjay0+Y2hhbm5lbDsKKysJaWYg KCFjaGFubmVsIHx8ICFjaGFubmVsLT5Xcml0ZSkKKysJCXJldHVybiBFUlJPUl9CQURfQ09ORklH VVJBVElPTjsKKysJcmV0dXJuIGNoYW5uZWwtPldyaXRlKGNoYW5uZWwsIGxlbmd0aCwgZGF0YSwg TlVMTCk7CisrfQorKworIHN0YXRpYyBVSU5UIHZpZGVvX2NvbnRyb2xfc2VuZF9wcmVzZW50YXRp b25fcmVzcG9uc2UoVmlkZW9DbGllbnRDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNNTV9QUkVTRU5UQVRJT05f UkVTUE9OU0UqIHJlc3ApCisgeworIAlCWVRFIGJ1ZlsxMl07CisgCXdTdHJlYW0qIHM7CisgCVZJ REVPX1BMVUdJTiogdmlkZW8gPSAoVklERU9fUExVR0lOKiljb250ZXh0LT5oYW5kbGU7CistCUlX VFNWaXJ0dWFsQ2hhbm5lbCogY2hhbm5lbDsKKy0JVUlOVCByZXQ7CisgCisgCXMgPSBTdHJlYW1f TmV3KGJ1ZiwgMTIpOworIAlpZiAoIXMpCitAQCAtMzcwLDExICszODIsOSBAQCBzdGF0aWMgVUlO VCB2aWRlb19jb250cm9sX3NlbmRfcHJlc2VudGF0aW9uX3Jlc3BvbnNlKFZpZGVvQ2xpZW50Q29u dGV4dCogY29udGV4dAorIAlTdHJlYW1fWmVybyhzLCAzKTsKKyAJU3RyZWFtX1NlYWxMZW5ndGgo cyk7CisgCistCWNoYW5uZWwgPSB2aWRlby0+Y29udHJvbF9jYWxsYmFjay0+Y2hhbm5lbF9jYWxs YmFjay0+Y2hhbm5lbDsKKy0JcmV0ID0gY2hhbm5lbC0+V3JpdGUoY2hhbm5lbCwgMTIsIGJ1Ziwg TlVMTCk7CisgCVN0cmVhbV9GcmVlKHMsIEZBTFNFKTsKKyAKKy0JcmV0dXJuIHJldDsKKysJcmV0 dXJuIHZpZGVvX2NoYW5uZWxfd3JpdGUodmlkZW8sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworIH0KKyAK KyBzdGF0aWMgQk9PTCB2aWRlb19vbk1hcHBlZEdlb21ldHJ5VXBkYXRlKE1BUFBFRF9HRU9NRVRS WSogZ2VvbWV0cnkpCitAQCAtNTkyLDggKzYwMiw2IEBAIHN0YXRpYyBVSU5UIHZpZGVvX2NvbnRy b2xfc2VuZF9jbGllbnRfbm90aWZpY2F0aW9uKFZpZGVvQ2xpZW50Q29udGV4dCogY29udGV4dCwK KyAJQllURSBidWZbMTAwXTsKKyAJd1N0cmVhbSogczsKKyAJVklERU9fUExVR0lOKiB2aWRlbyA9 IChWSURFT19QTFVHSU4qKWNvbnRleHQtPmhhbmRsZTsKKy0JSVdUU1ZpcnR1YWxDaGFubmVsKiBj aGFubmVsOworLQlVSU5UIHJldDsKKyAJVUlOVDMyIGNiU2l6ZTsKKyAKKyAJcyA9IFN0cmVhbV9O ZXcoYnVmLCAzMCk7CitAQCAtNjI3LDEwICs2MzUsNyBAQCBzdGF0aWMgVUlOVCB2aWRlb19jb250 cm9sX3NlbmRfY2xpZW50X25vdGlmaWNhdGlvbihWaWRlb0NsaWVudENvbnRleHQqIGNvbnRleHQs CisgCVN0cmVhbV9Xcml0ZV9VSU5UMzIocywgY2JTaXplKTsKKyAJU3RyZWFtX0ZyZWUocywgRkFM U0UpOworIAorLQljaGFubmVsID0gdmlkZW8tPmNvbnRyb2xfY2FsbGJhY2stPmNoYW5uZWxfY2Fs bGJhY2stPmNoYW5uZWw7CistCXJldCA9IGNoYW5uZWwtPldyaXRlKGNoYW5uZWwsIGNiU2l6ZSwg YnVmLCBOVUxMKTsKKy0KKy0JcmV0dXJuIHJldDsKKysJcmV0dXJuIHZpZGVvX2NoYW5uZWxfd3Jp dGUodmlkZW8sIGJ1ZiwgY2JTaXplKTsKKyB9CisgCisgc3RhdGljIHZvaWQgdmlkZW9fdGltZXIo VmlkZW9DbGllbnRDb250ZXh0KiB2aWRlbywgVUlOVDY0IG5vdykKK0BAIC05NTIsMTIgKzk1Nywz MCBAQCBzdGF0aWMgVUlOVCB2aWRlb19kYXRhX29uX2RhdGFfcmVjZWl2ZWQoSVdUU1ZpcnR1YWxD aGFubmVsQ2FsbGJhY2sqIHBDaGFubmVsQ2FsbAorICAqLworIHN0YXRpYyBVSU5UIHZpZGVvX2Nv bnRyb2xfb25fY2xvc2UoSVdUU1ZpcnR1YWxDaGFubmVsQ2FsbGJhY2sqIHBDaGFubmVsQ2FsbGJh Y2spCisgeworKwlpZiAocENoYW5uZWxDYWxsYmFjaykKKysJeworKwkJVklERU9fTElTVEVORVJf Q0FMTEJBQ0sqIGxpc3RlbmVyX2NhbGxiYWNrID0gKFZJREVPX0xJU1RFTkVSX0NBTExCQUNLKilw Q2hhbm5lbENhbGxiYWNrOworKwkJVklERU9fUExVR0lOKiB2aWRlbyA9IChWSURFT19QTFVHSU4q KWxpc3RlbmVyX2NhbGxiYWNrLT5wbHVnaW47CisrCQlpZiAodmlkZW8gJiYgdmlkZW8tPmNvbnRy b2xfY2FsbGJhY2spCisrCQl7CisrCQkJdmlkZW8tPmNvbnRyb2xfY2FsbGJhY2stPmNoYW5uZWxf Y2FsbGJhY2sgPSBOVUxMOworKwkJfQorKwl9CisgCWZyZWUocENoYW5uZWxDYWxsYmFjayk7Cisg CXJldHVybiBDSEFOTkVMX1JDX09LOworIH0KKyAKKyBzdGF0aWMgVUlOVCB2aWRlb19kYXRhX29u X2Nsb3NlKElXVFNWaXJ0dWFsQ2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENhbGxiYWNrKQorIHsK KysJaWYgKHBDaGFubmVsQ2FsbGJhY2spCisrCXsKKysJCVZJREVPX0xJU1RFTkVSX0NBTExCQUNL KiBsaXN0ZW5lcl9jYWxsYmFjayA9IChWSURFT19MSVNURU5FUl9DQUxMQkFDSyopcENoYW5uZWxD YWxsYmFjazsKKysJCVZJREVPX1BMVUdJTiogdmlkZW8gPSAoVklERU9fUExVR0lOKilsaXN0ZW5l cl9jYWxsYmFjay0+cGx1Z2luOworKwkJaWYgKHZpZGVvICYmIHZpZGVvLT5kYXRhX2NhbGxiYWNr KQorKwkJeworKwkJCXZpZGVvLT5kYXRhX2NhbGxiYWNrLT5jaGFubmVsX2NhbGxiYWNrID0gTlVM TDsKKysJCX0KKysJfQorIAlmcmVlKHBDaGFubmVsQ2FsbGJhY2spOworIAlyZXR1cm4gQ0hBTk5F TF9SQ19PSzsKKyB9CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2xpZW50LWNvbW1vbi1k ZWFjdGl2YXRlLWNsaS1wYXJzaW5nLWluLXJkcC1maWxlcy5wYXRjaCBiL2NsaWVudC1jb21tb24t ZGVhY3RpdmF0ZS1jbGktcGFyc2luZy1pbi1yZHAtZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uODc0YjFhMwotLS0gL2Rldi9udWxsCisrKyBiL2NsaWVudC1j b21tb24tZGVhY3RpdmF0ZS1jbGktcGFyc2luZy1pbi1yZHAtZmlsZXMucGF0Y2gKQEAgLTAsMCAr MSw2NSBAQAorRnJvbSAyMGEzNDg5YzIzNzYzZjk0ZDMxZGNmOGZkN2VkODgwZTA3Y2JiMmU4IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXJtaW4gTm92YWsgPGFybWluLm5vdmFrQHRo aW5jYXN0LmNvbT4KK0RhdGU6IFRodSwgMiBKdWwgMjAyNiAxMDoyMTo1NCArMDIwMAorU3ViamVj dDogW1BBVENIXSBbY2xpZW50LGNvbW1vbl0gZGVhY3RpdmF0ZSBjbGkgcGFyc2luZyBpbiBSRFAg ZmlsZXMKKworVGhpcyBmZWF0dXJlIHdhcyB1bmNvZHVtZW50ZWQgYW5kIG1pZ2h0IGhhdmUgdW5p bnRlbmRlZCBzaWRlIGVmZmVjdHMuCitEZWFjdGl2YXRlIGl0IGJ5IGRlZmF1bHQgYW5kIChmb3Ig dGhlIHRpbWUgYmVpbmcpIGtlZXAgYW4gb3B0aW9uIHRvCitlbmFibGUgaXQgYXQgY29tcGlsZSB0 aW1lLgorLS0tCisgY2xpZW50L2NvbW1vbi9DTWFrZUxpc3RzLnR4dCB8IDUgKysrKysKKyBjbGll bnQvY29tbW9uL2ZpbGUuYyAgICAgICAgIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA5IGlu c2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NsaWVudC9jb21tb24vQ01ha2VMaXN0cy50eHQg Yi9jbGllbnQvY29tbW9uL0NNYWtlTGlzdHMudHh0CitpbmRleCBiNDY1YTYzMTEuLjdiYzdjZjA4 MyAxMDA2NDQKKy0tLSBhL2NsaWVudC9jb21tb24vQ01ha2VMaXN0cy50eHQKKysrKyBiL2NsaWVu dC9jb21tb24vQ01ha2VMaXN0cy50eHQKK0BAIC04NSw2ICs4NSwxMSBAQCBpZiAoV0lUSF9ERUJV R19TWU1CT0xTIEFORCBNU1ZDIEFORCBCVUlMRF9TSEFSRURfTElCUykKKyAJaW5zdGFsbChGSUxF UyAke0NNQUtFX1BEQl9CSU5BUllfRElSfS8ke09VVFBVVF9GSUxFTkFNRX0ucGRiIERFU1RJTkFU SU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9IENPTVBPTkVOVCBzeW1ib2xzKQorIGVuZGlmKCkK KworK29wdGlvbihXSVRIX0VNQkVEREVEX0NMSV9JTl9SRFBfRklMRVMgIltkYW5ncm91c10gYWxs b3cgZW1iZWRkZWQgY2xpIGFyZ3VtZW50cyBpbiByZHAgZmlsZXMiIE9GRikKKytpZihXSVRIX0VN QkVEREVEX0NMSV9JTl9SRFBfRklMRVMpCisrICBhZGRfY29tcGlsZV9kZWZpbml0aW9ucyhXSVRI X0VNQkVEREVEX0NMSV9JTl9SRFBfRklMRVMpCisrZW5kaWYoKQorKworIHNldF9wcm9wZXJ0eShU QVJHRVQgJHtNT0RVTEVfTkFNRX0gUFJPUEVSVFkgRk9MREVSICJDbGllbnQvQ29tbW9uIikKKwor IGlmKEJVSUxEX1RFU1RJTkcpCitkaWZmIC0tZ2l0IGEvY2xpZW50L2NvbW1vbi9maWxlLmMgYi9j bGllbnQvY29tbW9uL2ZpbGUuYworaW5kZXggYjU2ZmU2ZjA2Li5iZmY5NGJhZDAgMTAwNjQ0Cist LS0gYS9jbGllbnQvY29tbW9uL2ZpbGUuYworKysrIGIvY2xpZW50L2NvbW1vbi9maWxlLmMKK0BA IC0yNiw2ICsyNiw3IEBACisKKyAjaW5jbHVkZSA8d2lucHIvZmlsZS5oPgorCisrCisgI2luY2x1 ZGUgPGZyZWVyZHAvY2xpZW50L2ZpbGUuaD4KKyAjaW5jbHVkZSA8ZnJlZXJkcC9jbGllbnQvY21k bGluZS5oPgorCitAQCAtNjYxLDYgKzY2Miw3IEBAIHN0YXRpYyBCT09MIHRyaW1fc3RyaW5ncyhy ZHBGaWxlKiBmaWxlKQorIAkJcmV0dXJuIEZBTFNFOworIAlpZiAoIXRyaW0oJmZpbGUtPktkY1By b3h5TmFtZSkpCisgCQlyZXR1cm4gRkFMU0U7CisrCisgCXJldHVybiBUUlVFOworIH0KKworQEAg LTcyMSw2ICs3MjMsNyBAQCBCT09MIGZyZWVyZHBfY2xpZW50X3BhcnNlX3JkcF9maWxlX2J1ZmZl cl9leChyZHBGaWxlKiBmaWxlLCBjb25zdCBCWVRFKiBidWZmZXIsCisgCQkJaWYgKGZyZWVyZHBf Y2xpZW50X3BhcnNlX3JkcF9maWxlX2FkZF9saW5lKGZpbGUsIGxpbmUsIGluZGV4KSA9PSAtMSkK KyAJCQkJZ290byBmYWlsOworCisrI2lmIGRlZmluZWQoV0lUSF9FTUJFRERFRF9DTElfSU5fUkRQ X0ZJTEVTKQorIAkJCWlmIChiZWdbMF0gPT0gJy8nKQorIAkJCXsKKyAJCQkJaWYgKCFmcmVlcmRw X2NsaWVudF9wYXJzZV9yZHBfZmlsZV9vcHRpb24oZmlsZSwgbGluZSwgaW5kZXgpKQorQEAgLTcy OCw2ICs3MzEsNyBAQCBCT09MIGZyZWVyZHBfY2xpZW50X3BhcnNlX3JkcF9maWxlX2J1ZmZlcl9l eChyZHBGaWxlKiBmaWxlLCBjb25zdCBCWVRFKiBidWZmZXIsCisKKyAJCQkJZ290byBuZXh0X2xp bmU7IC8qIEZyZWVSRFAgb3B0aW9uICovCisgCQkJfQorKyNlbmRpZgorCisgCQkJZDEgPSBzdHJj aHIobGluZSwgJzonKTsKKwoKZGlmZiAtLWdpdCBhL2NsaWVudC14MTEtZml4LWRlYWRsb2NrLW9u LW91dHB1dC1leHBvc2UucGF0Y2ggYi9jbGllbnQteDExLWZpeC1kZWFkbG9jay1vbi1vdXRwdXQt ZXhwb3NlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNTczNTYK LS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQteDExLWZpeC1kZWFkbG9jay1vbi1vdXRwdXQtZXhw b3NlLnBhdGNoCkBAIC0wLDAgKzEsMTcwIEBACitGcm9tIGEyNWE2YjhjNTM2MDJkMjAyM2RkMGFk Njg1MDAwZGMwMDYxNzllOTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWog SG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjcgQXByIDIwMjYgMjA6MTI6NDIg KzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NsaWVudCx4MTFdIGZpeCBkZWFkbG9jayBvbiBvdXRw dXQgZXhwb3NlCisKK0RlZmVyIHNjcmVlbiB1cGRhdGUgZnJvbSB4Zl9ldmVudF9FeHBvc2UgdG8g YWZ0ZXIgWDExIGxvY2sgaXMgcmVsZWFzZWQsCitwcmV2ZW50aW5nIGEgZGVhZGxvY2sgYmV0d2Vl biBYMTEgbG9jayBhbmQgcmFpbFdpbmRvd3MgbG9jay4KKworQmFja3BvcnQgb2YgY29tbWl0IGEy NzhmZjc0MTE3NDQ0YzYzNWM1MGZmYTUwODRlY2Y1MTcxNzFmNWEuCisKK0FkanVzdGVkIGh1bmsg b2Zmc2V0cyBmb3IgMi4xMS43LgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2xpZW50L1gx MS94Zl9jbGllbnQuYyB8ICAzICsrCisgY2xpZW50L1gxMS94Zl9ldmVudC5jICB8IDc3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIGNsaWVudC9YMTEveGZfZXZl bnQuaCAgfCAgMiArKworIGNsaWVudC9YMTEveGZyZWVyZHAuaCAgfCAgNCArKysKKyA0IGZpbGVz IGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0 IGEvY2xpZW50L1gxMS94Zl9jbGllbnQuYyBiL2NsaWVudC9YMTEveGZfY2xpZW50LmMKK2luZGV4 IGJkM2ViMGQuLmYxNGNiNTUgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2NsaWVudC5jCisr KysgYi9jbGllbnQvWDExL3hmX2NsaWVudC5jCitAQCAtNTE2LDYgKzUxNiw5IEBAIHN0YXRpYyBC T09MIHhmX3Byb2Nlc3NfeF9ldmVudHMoZnJlZXJkcCogaW5zdGFuY2UpCisgCQl4Zl91bmxvY2tf eDExKHhmYyk7CisgCQlpZiAoIXN0YXR1cykKKyAJCQlicmVhazsKKysJCXN0YXR1cyA9IHhmX2V2 ZW50X3VwZGF0ZV9zY3JlZW4oaW5zdGFuY2UpOworKwkJaWYgKCFzdGF0dXMpCisrCQkJYnJlYWs7 CisgCX0KKyAKKyAJcmV0dXJuIHN0YXR1czsKK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX2V2 ZW50LmMgYi9jbGllbnQvWDExL3hmX2V2ZW50LmMKK2luZGV4IGUxNDIxYWQuLjUyNGU1ZTMgMTAw NjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmMKKysrKyBiL2NsaWVudC9YMTEveGZfZXZl bnQuYworQEAgLTMyNCw0NSArMzI0LDM0IEBAIHZvaWQgeGZfZXZlbnRfYWRqdXN0X2Nvb3JkaW5h dGVzKHhmQ29udGV4dCogeGZjLCBpbnQqIHgsIGludCogeSkKKyB9Cisgc3RhdGljIEJPT0wgeGZf ZXZlbnRfRXhwb3NlKHhmQ29udGV4dCogeGZjLCBjb25zdCBYRXhwb3NlRXZlbnQqIGV2ZW50LCBC T09MIGFwcCkKKyB7CistCWludCB4LCB5OworLQlpbnQgdywgaDsKKysJV0lOUFJfQVNTRVJUKHhm Yyk7CisrCVdJTlBSX0FTU0VSVChldmVudCk7CisrCisgCXJkcFNldHRpbmdzKiBzZXR0aW5ncyA9 IHhmYy0+Y29udGV4dC5zZXR0aW5nczsKKysJV0lOUFJfQVNTRVJUKHNldHRpbmdzKTsKKyAKKyAJ aWYgKCFhcHAgJiYgKHNldHRpbmdzLT5TbWFydFNpemluZyB8fCBzZXR0aW5ncy0+TXVsdGlUb3Vj aEdlc3R1cmVzKSkKKyAJeworLQkJeCA9IDA7CistCQl5ID0gMDsKKy0JCXcgPSBzZXR0aW5ncy0+ RGVza3RvcFdpZHRoOworLQkJaCA9IHNldHRpbmdzLT5EZXNrdG9wSGVpZ2h0OworKwkJeGZjLT5l eHBvc2VkQXJlYS54ID0gMDsKKysJCXhmYy0+ZXhwb3NlZEFyZWEueSA9IDA7CisrCQl4ZmMtPmV4 cG9zZWRBcmVhLncgPSBzZXR0aW5ncy0+RGVza3RvcFdpZHRoOworKwkJeGZjLT5leHBvc2VkQXJl YS5oID0gc2V0dGluZ3MtPkRlc2t0b3BIZWlnaHQ7CisgCX0KKyAJZWxzZQorIAl7CistCQl4ID0g ZXZlbnQtPng7CistCQl5ID0gZXZlbnQtPnk7CistCQl3ID0gZXZlbnQtPndpZHRoOworLQkJaCA9 IGV2ZW50LT5oZWlnaHQ7CisrCQl4ZmMtPmV4cG9zZWRBcmVhLnggPSBldmVudC0+eDsKKysJCXhm Yy0+ZXhwb3NlZEFyZWEueSA9IGV2ZW50LT55OworKwkJeGZjLT5leHBvc2VkQXJlYS53ID0gZXZl bnQtPndpZHRoOworKwkJeGZjLT5leHBvc2VkQXJlYS5oID0gZXZlbnQtPmhlaWdodDsKKyAJfQor IAorLQlpZiAoIWFwcCkKKy0JeworLQkJaWYgKHhmYy0+Y29udGV4dC5nZGktPmdmeCkKKy0JCXsK Ky0JCQl4Zl9PdXRwdXRFeHBvc2UoeGZjLCB4LCB5LCB3LCBoKTsKKy0JCQlyZXR1cm4gVFJVRTsK Ky0JCX0KKy0JCXhmX2RyYXdfc2NyZWVuKHhmYywgeCwgeSwgdywgaCk7CistCX0KKy0JZWxzZQor LQl7CistCQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRv dyh4ZmMsIGV2ZW50LT53aW5kb3cpOworLQkJaWYgKGFwcFdpbmRvdykKKy0JCQl4Zl9VcGRhdGVX aW5kb3dBcmVhKHhmYywgYXBwV2luZG93LCB4LCB5LCB3LCBoKTsKKy0JCXhmX3JhaWxfcmV0dXJu X3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKy0JfQorKwl4ZmMtPmV4cG9zZWRXaW5kb3cgPSBl dmVudC0+d2luZG93OworKwl4ZmMtPmV4cG9zZVJlcXVlc3RlZCA9IFRSVUU7CisgCisgCXJldHVy biBUUlVFOworIH0KKyAKKysKKyBzdGF0aWMgQk9PTCB4Zl9ldmVudF9WaXNpYmlsaXR5Tm90aWZ5 KHhmQ29udGV4dCogeGZjLCBjb25zdCBYVmlzaWJpbGl0eUV2ZW50KiBldmVudCwgQk9PTCBhcHAp CisgeworIAlXSU5QUl9VTlVTRUQoYXBwKTsKK0BAIC0xMTgwLDMgKzExNjksMzkgQEAgQk9PTCB4 Zl9ldmVudF9wcm9jZXNzKGZyZWVyZHAqIGluc3RhbmNlLCBjb25zdCBYRXZlbnQqIGV2ZW50KQor IAlYU3luYyh4ZmMtPmRpc3BsYXksIEZBTFNFKTsKKyAJcmV0dXJuIHN0YXR1czsKKyB9CisrCisr Qk9PTCB4Zl9ldmVudF91cGRhdGVfc2NyZWVuKGZyZWVyZHAqIGluc3RhbmNlKQorK3sKKysJV0lO UFJfQVNTRVJUKGluc3RhbmNlKTsKKysKKysJeGZDb250ZXh0KiB4ZmMgPSAoeGZDb250ZXh0Kilp bnN0YW5jZS0+Y29udGV4dDsKKysJV0lOUFJfQVNTRVJUKHhmYyk7CisrCisrCXJkcFNldHRpbmdz KiBzZXR0aW5ncyA9IHhmYy0+Y29udGV4dC5zZXR0aW5nczsKKysJV0lOUFJfQVNTRVJUKHNldHRp bmdzKTsKKysKKysJaWYgKCF4ZmMtPmV4cG9zZVJlcXVlc3RlZCkKKysJCXJldHVybiBUUlVFOwor Kwl4ZmMtPmV4cG9zZVJlcXVlc3RlZCA9IEZBTFNFOworKworKwlpZiAoIXhmYy0+cmVtb3RlX2Fw cCkKKysJeworKwkJaWYgKHhmYy0+Y29udGV4dC5nZGktPmdmeCkKKysJCXsKKysJCQl4Zl9PdXRw dXRFeHBvc2UoeGZjLCB4ZmMtPmV4cG9zZWRBcmVhLngsIHhmYy0+ZXhwb3NlZEFyZWEueSwKKysJ CQkgICAgICAgICAgICAgICAgeGZjLT5leHBvc2VkQXJlYS53LCB4ZmMtPmV4cG9zZWRBcmVhLmgp OworKwkJCXJldHVybiBUUlVFOworKwkJfQorKwkJeGZfZHJhd19zY3JlZW4oeGZjLCB4ZmMtPmV4 cG9zZWRBcmVhLngsIHhmYy0+ZXhwb3NlZEFyZWEueSwgeGZjLT5leHBvc2VkQXJlYS53LAorKwkJ ICAgICAgICAgICAgICAgeGZjLT5leHBvc2VkQXJlYS5oKTsKKysJfQorKwllbHNlCisrCXsKKysJ CXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywg eGZjLT5leHBvc2VkV2luZG93KTsKKysJCWlmIChhcHBXaW5kb3cpCisrCQkJeGZfVXBkYXRlV2lu ZG93QXJlYSh4ZmMsIGFwcFdpbmRvdywgeGZjLT5leHBvc2VkQXJlYS54LCB4ZmMtPmV4cG9zZWRB cmVhLnksCisrCQkJICAgICAgICAgICAgICAgICAgICB4ZmMtPmV4cG9zZWRBcmVhLncsIHhmYy0+ ZXhwb3NlZEFyZWEuaCk7CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxT RSk7CisrCX0KKysJcmV0dXJuIFRSVUU7CisrfQorZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZf ZXZlbnQuaCBiL2NsaWVudC9YMTEveGZfZXZlbnQuaAoraW5kZXggMjI2OWQzZS4uZTAyNWQxOSAx MDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfZXZlbnQuaAorKysrIGIvY2xpZW50L1gxMS94Zl9l dmVudC5oCitAQCAtMjksNiArMjksOCBAQCBCT09MIHhmX2V2ZW50X2FjdGlvbl9zY3JpcHRfaW5p dCh4ZkNvbnRleHQqIHhmYyk7Cisgdm9pZCB4Zl9ldmVudF9hY3Rpb25fc2NyaXB0X2ZyZWUoeGZD b250ZXh0KiB4ZmMpOworIAorIEJPT0wgeGZfZXZlbnRfcHJvY2VzcyhmcmVlcmRwKiBpbnN0YW5j ZSwgY29uc3QgWEV2ZW50KiBldmVudCk7CisrCisrQk9PTCB4Zl9ldmVudF91cGRhdGVfc2NyZWVu KGZyZWVyZHAqIGluc3RhbmNlKTsKKyB2b2lkIHhmX2V2ZW50X1NlbmRDbGllbnRFdmVudCh4ZkNv bnRleHQqIHhmYywgeGZXaW5kb3cqIHdpbmRvdywgQXRvbSBhdG9tLCB1bnNpZ25lZCBpbnQgbnVt QXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworIAorZGlmZiAtLWdp dCBhL2NsaWVudC9YMTEveGZyZWVyZHAuaCBiL2NsaWVudC9YMTEveGZyZWVyZHAuaAoraW5kZXgg NjM2ZTYwYS4uYTFhMzNiMiAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZyZWVyZHAuaAorKysr IGIvY2xpZW50L1gxMS94ZnJlZXJkcC5oCitAQCAtMjYxLDYgKzI2MSwxMCBAQCBzdHJ1Y3QgeGZf Y29udGV4dAorIAl3SGFzaFRhYmxlKiByYWlsV2luZG93czsKKyAJeGZSYWlsSWNvbkNhY2hlKiBy YWlsSWNvbkNhY2hlOworIAorKwlCT09MIGV4cG9zZVJlcXVlc3RlZDsKKysJR0RJX1JHTiBleHBv c2VkQXJlYTsKKysJV2luZG93IGV4cG9zZWRXaW5kb3c7CisrCisgCUJPT0wgeGtiQXZhaWxhYmxl OworIAlCT09MIHhyZW5kZXJBdmFpbGFibGU7CisgCistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0 IGEvY2xpZW50LXgxMS1maXgtZG91YmxlLWZyZWUtaW4tY2FzZS1vZi1pbnZhbGlkLXBvaW50ZS5w YXRjaCBiL2NsaWVudC14MTEtZml4LWRvdWJsZS1mcmVlLWluLWNhc2Utb2YtaW52YWxpZC1wb2lu dGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwNzRlYwotLS0g L2Rldi9udWxsCisrKyBiL2NsaWVudC14MTEtZml4LWRvdWJsZS1mcmVlLWluLWNhc2Utb2YtaW52 YWxpZC1wb2ludGUucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBjMGU4NWQ5MmU0NWRmZjZj OWExMmU2YWY1YmUyZTllZDEwYjQ5OTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog T25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDIyIEphbiAyMDI2IDEy OjUxOjA4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjbGllbnQseDExXSBmaXggZG91YmxlIGZy ZWUgaW4gY2FzZSBvZiBpbnZhbGlkIHBvaW50ZXIKKworQmFja3BvcnQgb2YgY29tbWl0IDA0MjFi NTNmY2I0YTgwYzk1ZjUxMzQyZTRhMmM0MGM2OGE0MTAxZDMuCisKK0NvLUF1dGhvcmVkLUJ5OiBD bGF1ZGUgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4KKy0tLQorIGNsaWVudC9YMTEveGZfZ3JhcGhp Y3MuYyB8IDEzICsrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCsp LCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl9ncmFwaGljcy5j IGIvY2xpZW50L1gxMS94Zl9ncmFwaGljcy5jCitpbmRleCA1YWExZmQ0OGIuLmQ1OTZiMjNkYSAx MDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfZ3JhcGhpY3MuYworKysrIGIvY2xpZW50L1gxMS94 Zl9ncmFwaGljcy5jCitAQCAtNDA2LDcgKzQwNiw2IEBAIHN0YXRpYyBCT09MIHhmX1BvaW50ZXJf TmV3KHJkcENvbnRleHQqIGNvbnRleHQsIHJkcFBvaW50ZXIqIHBvaW50ZXIpCisgCUJPT0wgcmMg PSBGQUxTRTsKKyAjaWZkZWYgV0lUSF9YQ1VSU09SCisgCVVJTlQzMiBDdXJzb3JGb3JtYXQ7Cist CXNpemVfdCBzaXplOworIAl4ZkNvbnRleHQqIHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQ7Cisg CXhmUG9pbnRlciogeHBvaW50ZXIgPSAoeGZQb2ludGVyKilwb2ludGVyOworIAorQEAgLTQyMSwx OSArNDIwLDE5IEBAIHN0YXRpYyBCT09MIHhmX1BvaW50ZXJfTmV3KHJkcENvbnRleHQqIGNvbnRl eHQsIHJkcFBvaW50ZXIqIHBvaW50ZXIpCisgCXhwb2ludGVyLT5uQ3Vyc29ycyA9IDA7CisgCXhw b2ludGVyLT5tQ3Vyc29ycyA9IDA7CisgCistCXNpemUgPSAxdWxsICogcG9pbnRlci0+aGVpZ2h0 ICogcG9pbnRlci0+d2lkdGggKiBHZXRCeXRlc1BlclBpeGVsKEN1cnNvckZvcm1hdCk7CisrCWNv bnN0IHNpemVfdCBzaXplID0KKysJICAgIDF1bGwgKiBwb2ludGVyLT5oZWlnaHQgKiBwb2ludGVy LT53aWR0aCAqIEdldEJ5dGVzUGVyUGl4ZWwoQ3Vyc29yRm9ybWF0KTsKKyAKKy0JaWYgKCEoeHBv aW50ZXItPmN1cnNvclBpeGVscyA9IChYY3Vyc29yUGl4ZWwqKV9hbGlnbmVkX21hbGxvYyhzaXpl LCAxNikpKQorKwl4cG9pbnRlci0+Y3Vyc29yUGl4ZWxzID0gKFhjdXJzb3JQaXhlbCopX2FsaWdu ZWRfbWFsbG9jKHNpemUsIDE2KTsKKysJaWYgKCF4cG9pbnRlci0+Y3Vyc29yUGl4ZWxzKQorIAkJ Z290byBmYWlsOworIAorIAlpZiAoIWZyZWVyZHBfaW1hZ2VfY29weV9mcm9tX3BvaW50ZXJfZGF0 YSgKKyAJICAgICAgICAoQllURSopeHBvaW50ZXItPmN1cnNvclBpeGVscywgQ3Vyc29yRm9ybWF0 LCAwLCAwLCAwLCBwb2ludGVyLT53aWR0aCwgcG9pbnRlci0+aGVpZ2h0LAorIAkgICAgICAgIHBv aW50ZXItPnhvck1hc2tEYXRhLCBwb2ludGVyLT5sZW5ndGhYb3JNYXNrLCBwb2ludGVyLT5hbmRN YXNrRGF0YSwKKyAJICAgICAgICBwb2ludGVyLT5sZW5ndGhBbmRNYXNrLCBwb2ludGVyLT54b3JC cHAsICZjb250ZXh0LT5nZGktPnBhbGV0dGUpKQorLQl7CistCQlfYWxpZ25lZF9mcmVlKHhwb2lu dGVyLT5jdXJzb3JQaXhlbHMpOworLQkJcmV0dXJuIEZBTFNFOworLQl9CisrCQlnb3RvIGZhaWw7 CisrCisgCXJjID0gVFJVRTsKKyAKKyAjZW5kaWYKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQg YS9jbGllbnQteDExLWZpeC14Zl9yYWlsX3dpbmRvd19jb21tb24tY2xlYW51cC5wYXRjaCBiL2Ns aWVudC14MTEtZml4LXhmX3JhaWxfd2luZG93X2NvbW1vbi1jbGVhbnVwLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNGIxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9j bGllbnQteDExLWZpeC14Zl9yYWlsX3dpbmRvd19jb21tb24tY2xlYW51cC5wYXRjaApAQCAtMCww ICsxLDQ1IEBACitGcm9tIDU2MmNjNGIzMzI1NzA3NGQxZDUwNTM1MTM4OTk4YmM4MTc5NmQ0NDcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0 LmNvbT4KK0RhdGU6IE1vbiwgMjcgQXByIDIwMjYgMTk6MDA6MDAgKzAwMDAKK1N1YmplY3Q6IFtQ QVRDSF0gW2NsaWVudCx4MTFdIGZpeCB4Zl9yYWlsX3dpbmRvd19jb21tb24gY2xlYW51cAorCitC YWNrcG9ydCBvZiBjb21taXQgYjRmMGYwYTE4ZmU1M2FhOGQ0N2QwNjJmOTE0NzFmNGU5YzVlMGQ1 MS4KKworQWRqdXN0ZWQgaHVuayBvZmZzZXRzIGZvciAyLjExLjcuCisKK01hZGUtd2l0aDogQ3Vy c29yCistLS0KKyBjbGllbnQvWDExL3hmX3JhaWwuYyB8IDYgKy0tLS0tCisgMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50 L1gxMS94Zl9yYWlsLmMgYi9jbGllbnQvWDExL3hmX3JhaWwuYworaW5kZXggMjQyYzU0Yi4uNGM0 ZjQ3ZCAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfcmFpbC5jCisrKysgYi9jbGllbnQvWDEx L3hmX3JhaWwuYworQEAgLTI2MCwxMSArMjYwLDEwIEBAIHN0YXRpYyB2b2lkIHdpbmRvd19zdGF0 ZV9sb2dfc3R5bGUod0xvZyogbG9nLCBjb25zdCBXSU5ET1dfU1RBVEVfT1JERVIqIHdpbmRvd1N0 Cisgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY29tbW9uKHJkcENvbnRleHQqIGNvbnRleHQs IGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKiBvcmRlckluZm8sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IFdJTkRPV19TVEFURV9PUkRFUiogd2luZG93U3RhdGUpCisg eworLQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0gTlVMTDsKKyAJeGZDb250ZXh0KiB4ZmMgPSAo eGZDb250ZXh0Kiljb250ZXh0OworIAlVSU5UMzIgZmllbGRGbGFncyA9IG9yZGVySW5mby0+Zmll bGRGbGFnczsKKyAJQk9PTCBwb3NpdGlvbl9vcl9zaXplX3VwZGF0ZWQgPSBGQUxTRTsKKy0JYXBw V2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgb3JkZXJJbmZvLT53aW5kb3dJZCk7Cisr CXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBvcmRlcklu Zm8tPndpbmRvd0lkKTsKKyAKKyAJaWYgKGZpZWxkRmxhZ3MgJiBXSU5ET1dfT1JERVJfU1RBVEVf TkVXKQorIAl7CitAQCAtMzEwLDEwICszMDksNyBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRv d19jb21tb24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisg CQl9CisgCisgCQlpZiAoIWFwcFdpbmRvdy0+dGl0bGUpCistCQl7CistCQkJZnJlZShhcHBXaW5k b3cpOworIAkJCXJldHVybiBGQUxTRTsKKy0JCX0KKyAKKyAJCXhmX0FwcFdpbmRvd0luaXQoeGZj LCBhcHBXaW5kb3cpOworIAl9CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2xpZW50LXgx MS1pbXByb3ZlLXJhaWxzLXdpbmRvdy1sb2NraW5nLnBhdGNoIGIvY2xpZW50LXgxMS1pbXByb3Zl LXJhaWxzLXdpbmRvdy1sb2NraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjIyZGM3NjIKLS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQteDExLWltcHJvdmUtcmFp bHMtd2luZG93LWxvY2tpbmcucGF0Y2gKQEAgLTAsMCArMSwzMzEgQEAKK0Zyb20gZTZlZGFiZTY5 MGFkOGRlNjNhZjMyNzQwM2U4MzcxYjZlZjEzMTllMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNyBBcHIg MjAyNiAxOTozODo0NyArMDAwMAorU3ViamVjdDogW1BBVENIXSBbY2xpZW50LHgxMV0gaW1wcm92 ZSByYWlscyB3aW5kb3cgbG9ja2luZworCitCYWNrcG9ydCBvZiBjb21taXQgNzhmZDdmNTgwZDVm OWU2ZDlkNTgyZDgyZTVlYTk2MDAzODQ0ZmJkZi4KKworQWRhcHRlZCBmb3IgMi4xMS43OiBDODkg ZGVjbGFyYXRpb24gc3R5bGUsIHNpbXBsaWZpZWQKK2B4ZkFwcFdpbmRvd3NMb2NrRnJvbWAvYFVu bG9ja0Zyb21gIHNpZ25hdHVyZXMgKG5vCitgV0lOUFJfQVRUUl9VTlVTRURgKSwgYFhTZXRUcmFu c2llbnRGb3JIaW50YCBpbmxpbmUgZXJyb3IgaGFuZGxpbmcuCisKK01hZGUtd2l0aDogQ3Vyc29y CistLS0KKyBjbGllbnQvWDExL3hmX2V2ZW50LmMgICAgfCAgNyArKy0tLS0KKyBjbGllbnQvWDEx L3hmX2dyYXBoaWNzLmMgfCAgNCArLS0KKyBjbGllbnQvWDExL3hmX3JhaWwuYyAgICAgfCA1MyAr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjbGllbnQvWDExL3hmX3Jh aWwuaCAgICAgfCAxMCArKysrKystLQorIGNsaWVudC9YMTEveGZfd2luZG93LmMgICB8IDU0ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyBjbGllbnQvWDExL3hmX3dp bmRvdy5oICAgfCAxMSArKysrKystLQorIDYgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygr KSwgNTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX2V2ZW50LmMg Yi9jbGllbnQvWDExL3hmX2V2ZW50LmMKK2luZGV4IDhiZWJjZDQuLjg4MDFmYmQgMTAwNjQ0Cist LS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmMKKysrKyBiL2NsaWVudC9YMTEveGZfZXZlbnQuYwor QEAgLTM1NCwxMyArMzU0LDEwIEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X0V4cG9zZSh4ZkNvbnRl eHQqIHhmYywgY29uc3QgWEV4cG9zZUV2ZW50KiBldmVudCwgQk9PTCBhcHApCisgCX0KKyAJZWxz ZQorIAl7CistCQl4ZkFwcFdpbmRvdyogYXBwV2luZG93OworLQkJYXBwV2luZG93ID0geGZfQXBw V2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIGV2ZW50LT53aW5kb3cpOworLQorKwkJeGZBcHBXaW5k b3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCBldmVudC0+d2lu ZG93KTsKKyAJCWlmIChhcHBXaW5kb3cpCistCQl7CisgCQkJeGZfVXBkYXRlV2luZG93QXJlYSh4 ZmMsIGFwcFdpbmRvdywgeCwgeSwgdywgaCk7CistCQl9CisrCQl4Zl9yYWlsX3JldHVybl93aW5k b3coYXBwV2luZG93KTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK2RpZmYgLS1naXQgYS9jbGll bnQvWDExL3hmX2dyYXBoaWNzLmMgYi9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMKK2luZGV4IDcw OTc5YmQuLmY1YjRmM2QgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMKKysr KyBiL2NsaWVudC9YMTEveGZfZ3JhcGhpY3MuYworQEAgLTM3MiwxMiArMzcyLDEyIEBAIHN0YXRp YyBXaW5kb3cgeGZfUG9pbnRlcl9nZXRfd2luZG93KHhmQ29udGV4dCogeGZjKQorIAlpZiAoeGZj LT5yZW1vdGVfYXBwKQorIAl7CisgCQlXaW5kb3cgdyA9IDA7CistCQlFbnRlckNyaXRpY2FsU2Vj dGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisrCQl4Zl9BcHBXaW5kb3dzTG9jayh4ZmMp OworIAkJaWYgKCF4ZmMtPmFwcFdpbmRvdykKKyAJCQlXTG9nX1dBUk4oVEFHLCAieGZfUG9pbnRl cjogSW52YWxpZCBhcHBXaW5kb3ciKTsKKyAJCWVsc2UKKyAJCQl3ID0geGZjLT5hcHBXaW5kb3ct PmhhbmRsZTsKKy0JCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2Nr KTsKKysJCXhmX0FwcFdpbmRvd3NVbmxvY2soeGZjKTsKKyAJCXJldHVybiB3OworIAl9CisgCWVs c2UKK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX3JhaWwuYyBiL2NsaWVudC9YMTEveGZfcmFp bC5jCitpbmRleCAxOTM4YmRkLi4xZTU3MDQ2IDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9y YWlsLmMKKysrKyBiL2NsaWVudC9YMTEveGZfcmFpbC5jCitAQCAtMTAxLDkgKzEwMSwxMCBAQCB2 b2lkIHhmX3JhaWxfc2VuZF9hY3RpdmF0ZSh4ZkNvbnRleHQqIHhmYywgV2luZG93IHh3aW5kb3cs IEJPT0wgZW5hYmxlZCkKKyAJCXhmX1NldFdpbmRvd1N0eWxlKHhmYywgYXBwV2luZG93LCAwLCAw KTsKKyAKKyAJYWN0aXZhdGUud2luZG93SWQgPSBhcHBXaW5kb3ctPndpbmRvd0lkOworKwl4Zl9y YWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKysKKyAJYWN0aXZhdGUuZW5hYmxlZCA9IGVu YWJsZWQ7CisgCXhmYy0+cmFpbC0+Q2xpZW50QWN0aXZhdGUoeGZjLT5yYWlsLCAmYWN0aXZhdGUp OworLQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyB9CisgCisgdm9pZCB4Zl9y YWlsX3NlbmRfY2xpZW50X3N5c3RlbV9jb21tYW5kKHhmQ29udGV4dCogeGZjLCBVSU5UMzIgd2lu ZG93SWQsIFVJTlQxNiBjb21tYW5kKQorQEAgLTI2MCw2ICsyNjEsNyBAQCB2b2lkIHhmX3JhaWxf cGFpbnQoeGZDb250ZXh0KiB4ZmMsIElOVDMyIHVsZWZ0LCBJTlQzMiB1dG9wLCBVSU5UMzIgdXJp Z2h0LCBVSU5UMworIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1vbihyZHBDb250ZXh0 KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3JkZXJJbmZvLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXSU5ET1dfU1RBVEVfT1JERVIqIHdpbmRv d1N0YXRlKQorIHsKKysJQk9PTCByYyA9IEZBTFNFOworIAl4ZkNvbnRleHQqIHhmYyA9ICh4ZkNv bnRleHQqKWNvbnRleHQ7CisgCVVJTlQzMiBmaWVsZEZsYWdzID0gb3JkZXJJbmZvLT5maWVsZEZs YWdzOworIAlCT09MIHBvc2l0aW9uX29yX3NpemVfdXBkYXRlZCA9IEZBTFNFOworQEAgLTM3OSwx NCArMzgxLDE0IEBAIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1vbihyZHBDb250ZXh0 KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyoKKyAJCQlpZiAoISh0aXRsZSA9IF9z dHJkdXAoIiIpKSkKKyAJCQl7CisgCQkJCVdMb2dfRVJSKFRBRywgImZhaWxlZCB0byBkdXBsaWNh dGUgZW1wdHkgd2luZG93IHRpdGxlIHN0cmluZyIpOworLQkJCQlyZXR1cm4gRkFMU0U7CisrCQkJ CWdvdG8gZmFpbDsKKyAJCQl9CisgCQl9CisgCQllbHNlIGlmIChDb252ZXJ0RnJvbVVuaWNvZGUo Q1BfVVRGOCwgMCwgKFdDSEFSKil3aW5kb3dTdGF0ZS0+dGl0bGVJbmZvLnN0cmluZywKKyAJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dTdGF0ZS0+dGl0bGVJbmZvLmxlbmd0aCAv IDIsICZ0aXRsZSwgMCwgTlVMTCwgTlVMTCkgPCAxKQorIAkJeworIAkJCVdMb2dfRVJSKFRBRywg ImZhaWxlZCB0byBjb252ZXJ0IHdpbmRvdyB0aXRsZSIpOworLQkJCXJldHVybiBGQUxTRTsKKysJ CQlnb3RvIGZhaWw7CisgCQl9CisgCisgCQlmcmVlKGFwcFdpbmRvdy0+dGl0bGUpOworQEAgLTQy Nyw3ICs0MjksNyBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29udGV4 dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCQkJICAgIChSRUNUQU5HTEVf MTYqKWNhbGxvYyhhcHBXaW5kb3ctPm51bVdpbmRvd1JlY3RzLCBzaXplb2YoUkVDVEFOR0xFXzE2 KSk7CisgCisgCQkJaWYgKCFhcHBXaW5kb3ctPndpbmRvd1JlY3RzKQorLQkJCQlyZXR1cm4gRkFM U0U7CisrCQkJCWdvdG8gZmFpbDsKKyAKKyAJCQlDb3B5TWVtb3J5KGFwcFdpbmRvdy0+d2luZG93 UmVjdHMsIHdpbmRvd1N0YXRlLT53aW5kb3dSZWN0cywKKyAJCQkgICAgICAgICAgIGFwcFdpbmRv dy0+bnVtV2luZG93UmVjdHMgKiBzaXplb2YoUkVDVEFOR0xFXzE2KSk7CitAQCAtNDU2LDcgKzQ1 OCw3IEBAIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1vbihyZHBDb250ZXh0KiBjb250 ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyoKKyAJCQkgICAgKFJFQ1RBTkdMRV8xNiopY2Fs bG9jKGFwcFdpbmRvdy0+bnVtVmlzaWJpbGl0eVJlY3RzLCBzaXplb2YoUkVDVEFOR0xFXzE2KSk7 CisgCisgCQkJaWYgKCFhcHBXaW5kb3ctPnZpc2liaWxpdHlSZWN0cykKKy0JCQkJcmV0dXJuIEZB TFNFOworKwkJCQlnb3RvIGZhaWw7CisgCisgCQkJQ29weU1lbW9yeShhcHBXaW5kb3ctPnZpc2li aWxpdHlSZWN0cywgd2luZG93U3RhdGUtPnZpc2liaWxpdHlSZWN0cywKKyAJCQkgICAgICAgICAg IGFwcFdpbmRvdy0+bnVtVmlzaWJpbGl0eVJlY3RzICogc2l6ZW9mKFJFQ1RBTkdMRV8xNikpOwor QEAgLTUyMiw3ICs1MjQsMTAgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY29tbW9uKHJk cENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKgorIAl7CisgCSAgICB4 Zl9TZXRXaW5kb3dSZWN0cyh4ZmMsIGFwcFdpbmRvdywgYXBwV2luZG93LT53aW5kb3dSZWN0cywg YXBwV2luZG93LT5udW1XaW5kb3dSZWN0cyk7CisgCX0qLworLQlyZXR1cm4gVFJVRTsKKysJcmMg PSBUUlVFOworK2ZhaWw6CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwly ZXR1cm4gcmM7CisgfQorIAorIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2RlbGV0ZShyZHBD b250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3JkZXJJbmZvKQorQEAg LTEwMDAsMTQgKzEwMDUsMTQgQEAgc3RhdGljIFVJTlQgeGZfcmFpbF9zZXJ2ZXJfbG9jYWxfbW92 ZV9zaXplKFJhaWxDbGllbnRDb250ZXh0KiBjb250ZXh0LAorIAkJCXggPSBsb2NhbE1vdmVTaXpl LT5wb3NYOworIAkJCXkgPSBsb2NhbE1vdmVTaXplLT5wb3NZOworIAkJCS8qIEZJWE1FOiBsb2Nh bCBrZXlib2FyZCBtb3ZlcyBub3Qgd29ya2luZyAqLworLQkJCXJldHVybiBDSEFOTkVMX1JDX09L OworKwkJCWJyZWFrOworIAorIAkJY2FzZSBSQUlMX1dNU1pfS0VZU0laRToKKyAJCQlkaXJlY3Rp b24gPSBfTkVUX1dNX01PVkVSRVNJWkVfU0laRV9LRVlCT0FSRDsKKyAJCQl4ID0gbG9jYWxNb3Zl U2l6ZS0+cG9zWDsKKyAJCQl5ID0gbG9jYWxNb3ZlU2l6ZS0+cG9zWTsKKyAJCQkvKiBGSVhNRTog bG9jYWwga2V5Ym9hcmQgbW92ZXMgbm90IHdvcmtpbmcgKi8KKy0JCQlyZXR1cm4gQ0hBTk5FTF9S Q19PSzsKKysJCQlicmVhazsKKyAJfQorIAorIAlpZiAobG9jYWxNb3ZlU2l6ZS0+aXNNb3ZlU2l6 ZVN0YXJ0KQorQEAgLTExNzMsOSArMTE3OCwxNyBAQCB4ZkFwcFdpbmRvdyogeGZfcmFpbF9hZGRf d2luZG93KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIFVJTlQzMiB4LCBVSU5UMzIgeSwgVQor IAlhcHBXaW5kb3ctPnkgPSB5OworIAlhcHBXaW5kb3ctPndpZHRoID0gd2lkdGg7CisgCWFwcFdp bmRvdy0+aGVpZ2h0ID0gaGVpZ2h0OworLQl4Zl9BcHBXaW5kb3dDcmVhdGUoeGZjLCBhcHBXaW5k b3cpOworLQlIYXNoVGFibGVfQWRkKHhmYy0+cmFpbFdpbmRvd3MsICZhcHBXaW5kb3ctPndpbmRv d0lkLCAodm9pZCopYXBwV2luZG93KTsKKysJeGZfQXBwV2luZG93c0xvY2soeGZjKTsKKysJaWYg KHhmX0FwcFdpbmRvd0NyZWF0ZSh4ZmMsIGFwcFdpbmRvdykgPCAwKQorKwkJZ290byBmYWlsOwor KworKwlpZiAoSGFzaFRhYmxlX0FkZCh4ZmMtPnJhaWxXaW5kb3dzLCAmYXBwV2luZG93LT53aW5k b3dJZCwgKHZvaWQqKWFwcFdpbmRvdykgPCAwKQorKwkJZ290byBmYWlsOworIAlyZXR1cm4gYXBw V2luZG93OworK2ZhaWw6CisrCWZyZWUoYXBwV2luZG93KTsKKysJeGZfQXBwV2luZG93c1VubG9j ayh4ZmMpOworKwlyZXR1cm4gTlVMTDsKKyB9CisgCisgQk9PTCB4Zl9yYWlsX2RlbF93aW5kb3co eGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCkKK0BAIC0xMTg5LDI2ICsxMjAyLDEwIEBAIEJPT0wg eGZfcmFpbF9kZWxfd2luZG93KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQpCisgCXJldHVybiBI YXNoVGFibGVfUmVtb3ZlKHhmYy0+cmFpbFdpbmRvd3MsICZpZCk7CisgfQorIAorLXhmQXBwV2lu ZG93KiB4Zl9yYWlsX2dldF93aW5kb3coeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCkKKy17Cist CWlmICgheGZjKQorLQkJcmV0dXJuIE5VTEw7CistCistCWlmICgheGZjLT5yYWlsV2luZG93cykK Ky0JCXJldHVybiBOVUxMOworLQorLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2lu ZG93cy0+bG9jayk7CistCXhmQXBwV2luZG93KiB3aW5kb3cgPSBIYXNoVGFibGVfR2V0SXRlbVZh bHVlKHhmYy0+cmFpbFdpbmRvd3MsICZpZCk7CistCWlmICghd2luZG93KQorLQkJTGVhdmVDcml0 aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworLQorLQlyZXR1cm4gd2luZG93 OworLX0KKy0KKy12b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh4ZkFwcFdpbmRvdyogd2luZG93 KQorK3ZvaWQgeGZfcmFpbF9yZXR1cm5fd2luZG93RnJvbSh4ZkFwcFdpbmRvdyogd2luZG93LCBj b25zdCBjaGFyKiBmaWxlLCBjb25zdCBjaGFyKiBma3QsIHNpemVfdCBsaW5lKQorIHsKKyAJaWYg KCF3aW5kb3cpCisgCQlyZXR1cm47CisgCistCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ3aW5kb3ct PnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworKwl4ZkFwcFdpbmRvd3NVbmxvY2tGcm9tKHdpbmRv dy0+eGZjLCBmaWxlLCBma3QsIGxpbmUpOworIH0KK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hm X3JhaWwuaCBiL2NsaWVudC9YMTEveGZfcmFpbC5oCitpbmRleCA1ZmJjMzE2Li44M2Q1ZmZmIDEw MDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9yYWlsLmgKKysrKyBiL2NsaWVudC9YMTEveGZfcmFp bC5oCitAQCAtMzYsOSArMzYsMTUgQEAgdm9pZCB4Zl9yYWlsX2Rpc2FibGVfcmVtb3RlYXBwX21v ZGUoeGZDb250ZXh0KiB4ZmMpOworIHhmQXBwV2luZG93KiB4Zl9yYWlsX2FkZF93aW5kb3coeGZD b250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgVUlOVDMyIHgsIFVJTlQzMiB5LCBVSU5UMzIgd2lkdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgaGVpZ2h0LCBVSU5UMzIg c3VyZmFjZUlkKTsKKyAKKy12b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh4ZkFwcFdpbmRvdyog d2luZG93KTsKKysjZGVmaW5lIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh3aW5kb3cpIFwKKysJeGZf cmFpbF9yZXR1cm5fd2luZG93RnJvbSgod2luZG93KSwgX19GSUxFX18sIF9fZnVuY19fLCBfX0xJ TkVfXykKKyt2b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oeGZBcHBXaW5kb3cqIHdpbmRv dywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzaXplX3QgbGluZSk7CisgCist eGZBcHBXaW5kb3cqIHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlk KTsKKysjZGVmaW5lIHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIGlkKSBcCisrCXhmX3JhaWxfZ2V0 X3dpbmRvd0Zyb20oKHhmYyksIChpZCksIF9fRklMRV9fLCBfX2Z1bmNfXywgX19MSU5FX18pCisr CisreGZBcHBXaW5kb3cqIHhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFVJ TlQ2NCBpZCwgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lKTsKKyAKKyBCT09MIHhmX3JhaWxf ZGVsX3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKTsKKyAKK2RpZmYgLS1naXQgYS9j bGllbnQvWDExL3hmX3dpbmRvdy5jIGIvY2xpZW50L1gxMS94Zl93aW5kb3cuYworaW5kZXggN2U5 MzZmZS4uMDliNGE4MSAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfd2luZG93LmMKKysrKyBi L2NsaWVudC9YMTEveGZfd2luZG93LmMKK0BAIC0xMTE2LDM5ICsxMTE2LDcxIEBAIHZvaWQgeGZf RGVzdHJveVdpbmRvdyh4ZkNvbnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdykKKyAJ ZnJlZShhcHBXaW5kb3cpOworIH0KKyAKKy14ZkFwcFdpbmRvdyogeGZfQXBwV2luZG93RnJvbVgx MVdpbmRvdyh4ZkNvbnRleHQqIHhmYywgV2luZG93IHduZCkKKytzdGF0aWMgeGZBcHBXaW5kb3cq IGdldF93aW5kb3dVbmxvY2tlZCh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorK3sKKysJV0lO UFJfQVNTRVJUKHhmYyk7CisrCXJldHVybiBIYXNoVGFibGVfR2V0SXRlbVZhbHVlKHhmYy0+cmFp bFdpbmRvd3MsICZpZCk7CisrfQorKworK3hmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3dG cm9tKHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNo YXIqIGZrdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGlu ZSkKKyt7CisrCWlmICgheGZjKQorKwkJcmV0dXJuIE5VTEw7CisrCisrCWlmICgheGZjLT5yYWls V2luZG93cykKKysJCXJldHVybiBOVUxMOworKworKwl4ZkFwcFdpbmRvd3NMb2NrRnJvbSh4ZmMs IGZpbGUsIGZrdCwgbGluZSk7CisrCXhmQXBwV2luZG93KiB3aW5kb3cgPSBnZXRfd2luZG93VW5s b2NrZWQoeGZjLCBpZCk7CisrCWlmICghd2luZG93KQorKwkJeGZBcHBXaW5kb3dzVW5sb2NrRnJv bSh4ZmMsIGZpbGUsIGZrdCwgbGluZSk7CisrCisrCXJldHVybiB3aW5kb3c7CisrfQorKworK3hm QXBwV2luZG93KiB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93RnJvbSh4ZkNvbnRleHQqIHhmYywg V2luZG93IHduZCwgY29uc3QgY2hhciogZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmt0LCBzaXplX3QgbGluZSkKKyB7CistCWlu dCBpbmRleDsKKy0JaW50IGNvdW50OworIAlVTE9OR19QVFIqIHBLZXlzID0gTlVMTDsKKy0JeGZB cHBXaW5kb3cqIGFwcFdpbmRvdzsKKyAKKyAJaWYgKCF4ZmMtPnJhaWxXaW5kb3dzKQorIAkJcmV0 dXJuIE5VTEw7CisgCistCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5s b2NrKTsKKy0JY291bnQgPSBIYXNoVGFibGVfR2V0S2V5cyh4ZmMtPnJhaWxXaW5kb3dzLCAmcEtl eXMpOworKwl4ZkFwcFdpbmRvd3NMb2NrRnJvbSh4ZmMsIGZpbGUsIGZrdCwgbGluZSk7CisrCXNp emVfdCBjb3VudCA9IEhhc2hUYWJsZV9HZXRLZXlzKHhmYy0+cmFpbFdpbmRvd3MsICZwS2V5cyk7 CisgCistCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKQorKwlmb3IgKHNp emVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7IGluZGV4KyspCisgCXsKKy0JCWFwcFdpbmRv dyA9IEhhc2hUYWJsZV9HZXRJdGVtVmFsdWUoeGZjLT5yYWlsV2luZG93cywgKHZvaWQqKXBLZXlz W2luZGV4XSk7CisrCQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0gZ2V0X3dpbmRvd1VubG9ja2Vk KHhmYywgKihVSU5UNjQqKXBLZXlzW2luZGV4XSk7CisgCisgCQlpZiAoIWFwcFdpbmRvdykKKyAJ CXsKKy0JCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7Cisr CQkJeGZBcHBXaW5kb3dzVW5sb2NrRnJvbSh4ZmMsIGZpbGUsIGZrdCwgbGluZSk7CisgCQkJZnJl ZShwS2V5cyk7CisgCQkJcmV0dXJuIE5VTEw7CisgCQl9CisgCisgCQlpZiAoYXBwV2luZG93LT5o YW5kbGUgPT0gd25kKQorIAkJeworLQkJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxX aW5kb3dzLT5sb2NrKTsKKyAJCQlmcmVlKHBLZXlzKTsKKyAJCQlyZXR1cm4gYXBwV2luZG93Owor IAkJfQorIAl9CisgCistCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5s b2NrKTsKKysJeGZBcHBXaW5kb3dzVW5sb2NrRnJvbSh4ZmMsIGZpbGUsIGZrdCwgbGluZSk7Cisg CWZyZWUocEtleXMpOworIAlyZXR1cm4gTlVMTDsKKyB9CisrCisrdm9pZCB4ZkFwcFdpbmRvd3NM b2NrRnJvbSh4ZkNvbnRleHQqIHhmYywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0 LCBzaXplX3QgbGluZSkKKyt7CisrCVdJTlBSX0FTU0VSVCh4ZmMpOworKwlFbnRlckNyaXRpY2Fs U2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisrfQorKworK3ZvaWQgeGZBcHBXaW5k b3dzVW5sb2NrRnJvbSh4ZkNvbnRleHQqIHhmYywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hh ciogZmt0LCBzaXplX3QgbGluZSkKKyt7CisrCVdJTlBSX0FTU0VSVCh4ZmMpOworKwlMZWF2ZUNy aXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisrfQorZGlmZiAtLWdpdCBh L2NsaWVudC9YMTEveGZfd2luZG93LmggYi9jbGllbnQvWDExL3hmX3dpbmRvdy5oCitpbmRleCBj NzcwMmVkLi40NWQ0MGJiIDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl93aW5kb3cuaAorKysr IGIvY2xpZW50L1gxMS94Zl93aW5kb3cuaAorQEAgLTE4Nyw4ICsxODcsMTUgQEAgdm9pZCB4Zl9T ZXRXaW5kb3dNaW5NYXhJbmZvKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93 LCBpbnQgbWF4V2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heFRyYWNr V2lkdGgsIGludCBtYXhUcmFja0hlaWdodCk7Cisgdm9pZCB4Zl9TdGFydExvY2FsTW92ZVNpemUo eGZDb250ZXh0KiB4ZmMsIHhmQXBwV2luZG93KiBhcHBXaW5kb3csIGludCBkaXJlY3Rpb24sIGlu dCB4LCBpbnQgeSk7Cisgdm9pZCB4Zl9FbmRMb2NhbE1vdmVTaXplKHhmQ29udGV4dCogeGZjLCB4 ZkFwcFdpbmRvdyogYXBwV2luZG93KTsKKy12b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh4ZkFw cFdpbmRvdyogd2luZG93KTsKKysjZGVmaW5lIHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZj LCB3bmQpIFwKKysJeGZfQXBwV2luZG93RnJvbVgxMVdpbmRvd0Zyb20oKHhmYyksICh3bmQpLCBf X0ZJTEVfXywgX19mdW5jX18sIF9fTElORV9fKQorK3hmQXBwV2luZG93KiB4Zl9BcHBXaW5kb3dG cm9tWDExV2luZG93RnJvbSh4ZkNvbnRleHQqIHhmYywgV2luZG93IHduZCwgY29uc3QgY2hhciog ZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciogZmt0LCBzaXplX3QgbGluZSk7CisgCisteGZBcHBXaW5kb3cqIHhmX0FwcFdpbmRvd0Zy b21YMTFXaW5kb3coeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3bmQpOworKyNkZWZpbmUgeGZfQXBw V2luZG93c0xvY2soeGZjKSB4ZkFwcFdpbmRvd3NMb2NrRnJvbSgoeGZjKSwgX19GSUxFX18sIF9f ZnVuY19fLCBfX0xJTkVfXykKKyt2b2lkIHhmQXBwV2luZG93c0xvY2tGcm9tKHhmQ29udGV4dCog eGZjLCBjb25zdCBjaGFyKiBmaWxlLCBjb25zdCBjaGFyKiBma3QsIHNpemVfdCBsaW5lKTsKKysK KysjZGVmaW5lIHhmX0FwcFdpbmRvd3NVbmxvY2soeGZjKSB4ZkFwcFdpbmRvd3NVbmxvY2tGcm9t KCh4ZmMpLCBfX0ZJTEVfXywgX19mdW5jX18sIF9fTElORV9fKQorK3ZvaWQgeGZBcHBXaW5kb3dz VW5sb2NrRnJvbSh4ZkNvbnRleHQqIHhmYywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciog Zmt0LCBzaXplX3QgbGluZSk7CisgCisgI2VuZGlmIC8qIEZSRUVSRFBfQ0xJRU5UX1gxMV9XSU5E T1dfSCAqLworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NsaWVudC14MTEtbG9jay1hcHB3 aW5kb3cucGF0Y2ggYi9jbGllbnQteDExLWxvY2stYXBwd2luZG93LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOTg4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9jbGll bnQteDExLWxvY2stYXBwd2luZG93LnBhdGNoCkBAIC0wLDAgKzEsNDA0IEBACitGcm9tIDgxNTJj MzQ3ZTk2YzFlM2FmMTVjYjI1NTFkNGVmYjY3NDBmZTlmODcgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjcg QXByIDIwMjYgMTk6Mzc6NDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NsaWVudCx4MTFdIGxv Y2sgYXBwV2luZG93CisKK0JhY2twb3J0IG9mIGNvbW1pdCAxOTk0ZTk4NDQyMTJhNmRmZTBmZjEy MzA5ZmVmNTIwZTg4ODk4NmI1LgorCitBZGFwdGVkIGZvciAyLjExLjc6IEM4OSBkZWNsYXJhdGlv biBzdHlsZSwgYChBdG9tKWAgY2FzdCBmb3IKK2B4ZmMtPl9ORVRfV01fU1RBVEVgIGNvbXBhcmlz b24sIGB4Zl9yYWlsX3NlbmRfY2xpZW50X3N5c3RlbV9jb21tYW5kYAorcmV0dXJuIHZhbHVlIGhh bmRsaW5nIGFkYXB0ZWQgKG5vIGRpcmVjdCByZXR1cm4pLCBgSGFzaFRhYmxlX0dldEtleXNgCit2 YXJpYWJsZSBwcmUtZGVjbGFyZWQsIGB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93YCBsb29wIGFk YXB0ZWQuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjbGllbnQvWDExL3hmX2V2ZW50LmMg ICAgfCA0NiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBjbGllbnQvWDExL3hmX2dyYXBo aWNzLmMgfCAxMCArKystLS0KKyBjbGllbnQvWDExL3hmX3JhaWwuYyAgICAgfCA2OCArKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgY2xpZW50L1gxMS94Zl9yYWlsLmgg ICAgIHwgIDMgKysKKyBjbGllbnQvWDExL3hmX3dpbmRvdy5jICAgfCAxMyArKysrKysrLQorIGNs aWVudC9YMTEveGZfd2luZG93LmggICB8ICAyICsrCisgNiBmaWxlcyBjaGFuZ2VkLCA5NCBpbnNl cnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZf ZXZlbnQuYyBiL2NsaWVudC9YMTEveGZfZXZlbnQuYworaW5kZXggZWI1MGVmMS4uOGJlYmNkNCAx MDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfZXZlbnQuYworKysrIGIvY2xpZW50L1gxMS94Zl9l dmVudC5jCitAQCAtMzg4LDcgKzM4OCw5IEBAIEJPT0wgeGZfZ2VuZXJpY19Nb3Rpb25Ob3RpZnko eGZDb250ZXh0KiB4ZmMsIGludCB4LCBpbnQgeSwgaW50IHN0YXRlLCBXaW5kb3cgd2luCisgCWlm IChhcHApCisgCXsKKyAJCS8qIG1ha2Ugc3VyZSB3aW5kb3cgZXhpc3RzICovCistCQlpZiAoIXhm X0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCB3aW5kb3cpKQorKwkJeGZBcHBXaW5kb3cqIGFw cFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCB3aW5kb3cpOworKwkJeGZf cmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCQlpZiAoIWFwcFdpbmRvdykKKyAJCQly ZXR1cm4gVFJVRTsKKyAKKyAJCS8qIFRyYW5zbGF0ZSB0byBkZXNrdG9wIGNvb3JkaW5hdGVzICov CitAQCAtNDY1LDcgKzQ2Nyw5IEBAIEJPT0wgeGZfZ2VuZXJpY19CdXR0b25FdmVudCh4ZkNvbnRl eHQqIHhmYywgaW50IHgsIGludCB5LCBpbnQgYnV0dG9uLCBXaW5kb3cgd2luCisgCQkJaWYgKGFw cCkKKyAJCQl7CisgCQkJCS8qIG1ha2Ugc3VyZSB3aW5kb3cgZXhpc3RzICovCistCQkJCWlmICgh eGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIHdpbmRvdykpCisrCQkJCXhmQXBwV2luZG93 KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgd2luZG93KTsKKysJ CQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCQkJCWlmICghYXBwV2luZG93 KQorIAkJCQkJcmV0dXJuIFRSVUU7CisgCisgCQkJCS8qIFRyYW5zbGF0ZSB0byBkZXNrdG9wIGNv b3JkaW5hdGVzICovCitAQCAtNTc0LDkgKzU3OCw4IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X0Zv Y3VzSW4oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhGb2N1c0luRXZlbnQqIGV2ZW50LCBCT09MIGFw CisgCQkvKiBVcGRhdGUgdGhlIHNlcnZlciB3aXRoIGFueSB3aW5kb3cgY2hhbmdlcyB0aGF0IG9j Y3VycmVkIHdoaWxlIHRoZSB3aW5kb3cgd2FzIG5vdCBmb2N1c2VkLgorIAkJICovCisgCQlpZiAo YXBwV2luZG93KQorLQkJeworIAkJCXhmX3JhaWxfYWRqdXN0X3Bvc2l0aW9uKHhmYywgYXBwV2lu ZG93KTsKKy0JCX0KKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworIAl9Cisg CisgCXhmX2tleWJvYXJkX2ZvY3VzX2luKHhmYyk7CitAQCAtNjIzLDE1ICs2MjYsMTMgQEAgc3Rh dGljIEJPT0wgeGZfZXZlbnRfQ2xpZW50TWVzc2FnZSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWENs aWVudE1lc3NhZ2VFdmVudCogZXYKKyAJeworIAkJaWYgKGFwcCkKKyAJCXsKKy0JCQl4ZkFwcFdp bmRvdyogYXBwV2luZG93OworLQkJCWFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5k b3coeGZjLCBldmVudC0+d2luZG93KTsKKysJCQlCT09MIHJjID0gVFJVRTsKKysJCQl4ZkFwcFdp bmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIGV2ZW50LT53 aW5kb3cpOworIAorIAkJCWlmIChhcHBXaW5kb3cpCistCQkJeworIAkJCQl4Zl9yYWlsX3NlbmRf Y2xpZW50X3N5c3RlbV9jb21tYW5kKHhmYywgYXBwV2luZG93LT53aW5kb3dJZCwgU0NfQ0xPU0Up OworLQkJCX0KKy0KKy0JCQlyZXR1cm4gVFJVRTsKKysJCQl4Zl9yYWlsX3JldHVybl93aW5kb3co YXBwV2luZG93KTsKKysJCQlyZXR1cm4gcmM7CisgCQl9CisgCQllbHNlCisgCQl7CitAQCAtNjY1 LDYgKzY2Niw3IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X0VudGVyTm90aWZ5KHhmQ29udGV4dCog eGZjLCBjb25zdCBYRW50ZXJXaW5kb3dFdmVudCogZXZlbnQsCisgCisgCQkvKiBrZWVwIHRyYWNr IG9mIHdoaWNoIHdpbmRvdyBoYXMgZm9jdXMgc28gdGhhdCB3ZSBjYW4gYXBwbHkgcG9pbnRlciB1 cGRhdGVzICovCisgCQl4ZmMtPmFwcFdpbmRvdyA9IGFwcFdpbmRvdzsKKysJCXhmX3JhaWxfcmV0 dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworIAl9CisgCisgCXJldHVybiBUUlVFOworQEAgLTY4NCw2 ICs2ODYsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9MZWF2ZU5vdGlmeSh4ZkNvbnRleHQqIHhm YywgY29uc3QgWExlYXZlV2luZG93RXZlbnQqIGV2ZW50LAorIAkJLyoga2VlcCB0cmFjayBvZiB3 aGljaCB3aW5kb3cgaGFzIGZvY3VzIHNvIHRoYXQgd2UgY2FuIGFwcGx5IHBvaW50ZXIgdXBkYXRl cyAqLworIAkJaWYgKHhmYy0+YXBwV2luZG93ID09IGFwcFdpbmRvdykKKyAJCQl4ZmMtPmFwcFdp bmRvdyA9IE5VTEw7CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyAJfQor IAlyZXR1cm4gVFJVRTsKKyB9CitAQCAtNzc0LDYgKzc3Nyw3IEBAIHN0YXRpYyBCT09MIHhmX2V2 ZW50X0NvbmZpZ3VyZU5vdGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWENvbmZpZ3VyZUV2ZW50 KiBldmVuCisgCQkJCQl4Zl9yYWlsX2FkanVzdF9wb3NpdGlvbih4ZmMsIGFwcFdpbmRvdyk7Cisg CQkJfQorIAkJfQorKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCX0KKyAJ cmV0dXJuIHhmX3BvaW50ZXJfdXBkYXRlX3NjYWxlKHhmYyk7CisgfQorQEAgLTc5OCw2ICs4MDIs NyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9NYXBOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0 IFhNYXBFdmVudCogZXZlbnQsIEJPT0wgYXBwKQorIAkJCS8vIHhmX3JhaWxfc2VuZF9jbGllbnRf c3lzdGVtX2NvbW1hbmQoeGZjLCBhcHBXaW5kb3ctPndpbmRvd0lkLCBTQ19SRVNUT1JFKTsKKyAJ CQlhcHBXaW5kb3ctPmlzX21hcHBlZCA9IFRSVUU7CisgCQl9CisrCQl4Zl9yYWlsX3JldHVybl93 aW5kb3coYXBwV2luZG93KTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK0BAIC04MTMsMTUgKzgx OCwxNCBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9Vbm1hcE5vdGlmeSh4ZkNvbnRleHQqIHhmYywg Y29uc3QgWFVubWFwRXZlbnQqIGV2ZW50LCBCT09MCisgCXhmX2tleWJvYXJkX3JlbGVhc2VfYWxs X2tleXByZXNzKHhmYyk7CisgCisgCWlmICghYXBwKQorLQkJZ2RpX3NlbmRfc3VwcHJlc3Nfb3V0 cHV0KHhmYy0+Y29udGV4dC5nZGksIFRSVUUpOworLQllbHNlCisrCQlyZXR1cm4gZ2RpX3NlbmRf c3VwcHJlc3Nfb3V0cHV0KHhmYy0+Y29udGV4dC5nZGksIFRSVUUpOworKworIAl7CisgCQlhcHBX aW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgZXZlbnQtPndpbmRvdyk7Cisg CisgCQlpZiAoYXBwV2luZG93KQorLQkJeworIAkJCWFwcFdpbmRvdy0+aXNfbWFwcGVkID0gRkFM U0U7CistCQl9CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyAJfQorIAor IAlyZXR1cm4gVFJVRTsKK0BAIC04MjksNiArODMzLDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRf VW5tYXBOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhVbm1hcEV2ZW50KiBldmVudCwgQk9P TAorIAorIHN0YXRpYyBCT09MIHhmX2V2ZW50X1Byb3BlcnR5Tm90aWZ5KHhmQ29udGV4dCogeGZj LCBjb25zdCBYUHJvcGVydHlFdmVudCogZXZlbnQsIEJPT0wgYXBwKQorIHsKKysJQk9PTCByYyA9 IFRSVUU7CisgCVdJTlBSX0FTU0VSVCh4ZmMpOworIAlXSU5QUl9BU1NFUlQoZXZlbnQpOworIAor QEAgLTg1Niw3ICs4NjEsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9Qcm9wZXJ0eU5vdGlmeSh4 ZkNvbnRleHQqIHhmYywgY29uc3QgWFByb3BlcnR5RXZlbnQqIGV2ZW50LAorIAkJCWFwcFdpbmRv dyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCBldmVudC0+d2luZG93KTsKKyAKKyAJ CQlpZiAoIWFwcFdpbmRvdykKKy0JCQkJcmV0dXJuIFRSVUU7CisrCQkJCWdvdG8gZmFpbDsKKyAJ CX0KKyAKKyAJCWlmICgoQXRvbSlldmVudC0+YXRvbSA9PSB4ZmMtPl9ORVRfV01fU1RBVEUpCitA QCAtOTQ5LDEwICs5NTQsMTMgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfUHJvcGVydHlOb3RpZnko eGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhQcm9wZXJ0eUV2ZW50KiBldmVudCwKKyAJCQl9CisgCQl9 CisgCQllbHNlIGlmIChtaW5pbWl6ZWRDaGFuZ2VkKQorLQkJCWdkaV9zZW5kX3N1cHByZXNzX291 dHB1dCh4ZmMtPmNvbnRleHQuZ2RpLCBtaW5pbWl6ZWQpOworKwkJCXJjID0gZ2RpX3NlbmRfc3Vw cHJlc3Nfb3V0cHV0KHhmYy0+Y29udGV4dC5nZGksIG1pbmltaXplZCk7CisrCisrCWZhaWw6Cisr CQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyAJfQorIAorLQlyZXR1cm4gVFJV RTsKKysJcmV0dXJuIHJjOworIH0KKyAKKyBzdGF0aWMgQk9PTCB4Zl9ldmVudF9zdXBwcmVzc19l dmVudHMoeGZDb250ZXh0KiB4ZmMsIHhmQXBwV2luZG93KiBhcHBXaW5kb3csIGNvbnN0IFhFdmVu dCogZXZlbnQpCitAQCAtMTA2MCw3ICsxMDY4LDkgQEAgQk9PTCB4Zl9ldmVudF9wcm9jZXNzKGZy ZWVyZHAqIGluc3RhbmNlLCBjb25zdCBYRXZlbnQqIGV2ZW50KQorIAkJCS8qIFVwZGF0ZSAiY3Vy cmVudCIgd2luZG93IGZvciBjdXJzb3IgY2hhbmdlIG9yZGVycyAqLworIAkJCXhmYy0+YXBwV2lu ZG93ID0gYXBwV2luZG93OworIAorLQkJCWlmICh4Zl9ldmVudF9zdXBwcmVzc19ldmVudHMoeGZj LCBhcHBXaW5kb3csIGV2ZW50KSkKKysJCQlCT09MIHN1cHByZXNzID0geGZfZXZlbnRfc3VwcHJl c3NfZXZlbnRzKHhmYywgYXBwV2luZG93LCBldmVudCk7CisrCQkJeGZfcmFpbF9yZXR1cm5fd2lu ZG93KGFwcFdpbmRvdyk7CisrCQkJaWYgKHN1cHByZXNzKQorIAkJCQlyZXR1cm4gVFJVRTsKKyAJ CX0KKyAJfQorZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZfZ3JhcGhpY3MuYyBiL2NsaWVudC9Y MTEveGZfZ3JhcGhpY3MuYworaW5kZXggZDU5NmIyMy4uNzA5NzliZCAxMDA2NDQKKy0tLSBhL2Ns aWVudC9YMTEveGZfZ3JhcGhpY3MuYworKysrIGIvY2xpZW50L1gxMS94Zl9ncmFwaGljcy5jCitA QCAtMzcxLDEyICszNzEsMTQgQEAgc3RhdGljIFdpbmRvdyB4Zl9Qb2ludGVyX2dldF93aW5kb3co eGZDb250ZXh0KiB4ZmMpCisgCX0KKyAJaWYgKHhmYy0+cmVtb3RlX2FwcCkKKyAJeworKwkJV2lu ZG93IHcgPSAwOworKwkJRW50ZXJDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxv Y2spOworIAkJaWYgKCF4ZmMtPmFwcFdpbmRvdykKKy0JCXsKKyAJCQlXTG9nX1dBUk4oVEFHLCAi eGZfUG9pbnRlcjogSW52YWxpZCBhcHBXaW5kb3ciKTsKKy0JCQlyZXR1cm4gMDsKKy0JCX0KKy0J CXJldHVybiB4ZmMtPmFwcFdpbmRvdy0+aGFuZGxlOworKwkJZWxzZQorKwkJCXcgPSB4ZmMtPmFw cFdpbmRvdy0+aGFuZGxlOworKwkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRv d3MtPmxvY2spOworKwkJcmV0dXJuIHc7CisgCX0KKyAJZWxzZQorIAl7CitkaWZmIC0tZ2l0IGEv Y2xpZW50L1gxMS94Zl9yYWlsLmMgYi9jbGllbnQvWDExL3hmX3JhaWwuYworaW5kZXggZmRjMjI0 NC4uMTkzOGJkZCAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfcmFpbC5jCisrKysgYi9jbGll bnQvWDExL3hmX3JhaWwuYworQEAgLTEwMyw2ICsxMDMsNyBAQCB2b2lkIHhmX3JhaWxfc2VuZF9h Y3RpdmF0ZSh4ZkNvbnRleHQqIHhmYywgV2luZG93IHh3aW5kb3csIEJPT0wgZW5hYmxlZCkKKyAJ YWN0aXZhdGUud2luZG93SWQgPSBhcHBXaW5kb3ctPndpbmRvd0lkOworIAlhY3RpdmF0ZS5lbmFi bGVkID0gZW5hYmxlZDsKKyAJeGZjLT5yYWlsLT5DbGllbnRBY3RpdmF0ZSh4ZmMtPnJhaWwsICZh Y3RpdmF0ZSk7CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworIH0KKyAKKyB2 b2lkIHhmX3JhaWxfc2VuZF9jbGllbnRfc3lzdGVtX2NvbW1hbmQoeGZDb250ZXh0KiB4ZmMsIFVJ TlQzMiB3aW5kb3dJZCwgVUlOVDE2IGNvbW1hbmQpCitAQCAtNjU4LDYxICs2NTksNjMgQEAgc3Rh dGljIHZvaWQgeGZfcmFpbF9zZXRfd2luZG93X2ljb24oeGZDb250ZXh0KiB4ZmMsIHhmQXBwV2lu ZG93KiByYWlsV2luZG93LCB4ZlIKKyBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19pY29uKHJk cENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKiBvcmRlckluZm8sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXSU5ET1dfSUNPTl9PUkRFUiog d2luZG93SWNvbikKKyB7CisrCUJPT0wgcmMgPSBGQUxTRTsKKyAJeGZDb250ZXh0KiB4ZmMgPSAo eGZDb250ZXh0Kiljb250ZXh0OworLQl4ZkFwcFdpbmRvdyogcmFpbFdpbmRvdzsKKy0JeGZSYWls SWNvbiogaWNvbjsKKy0JQk9PTCByZXBsYWNlSWNvbjsKKy0JcmFpbFdpbmRvdyA9IHhmX3JhaWxf Z2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5mby0+d2luZG93SWQpOworKwlCT09MIHJlcGxhY2VJY29u ID0gMDsKKysJeGZBcHBXaW5kb3cqIHJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZj LCBvcmRlckluZm8tPndpbmRvd0lkKTsKKyAKKyAJaWYgKCFyYWlsV2luZG93KQorIAkJcmV0dXJu IFRSVUU7CisgCistCWljb24gPSBSYWlsSWNvbkNhY2hlX0xvb2t1cCh4ZmMtPnJhaWxJY29uQ2Fj aGUsIHdpbmRvd0ljb24tPmljb25JbmZvLT5jYWNoZUlkLAorKwl4ZlJhaWxJY29uKiBpY29uID0g UmFpbEljb25DYWNoZV9Mb29rdXAoeGZjLT5yYWlsSWNvbkNhY2hlLCB3aW5kb3dJY29uLT5pY29u SW5mby0+Y2FjaGVJZCwKKyAJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0ljb24t Pmljb25JbmZvLT5jYWNoZUVudHJ5KTsKKyAKKyAJaWYgKCFpY29uKQorIAl7CisgCQlXTG9nX1dB Uk4oVEFHLCAiZmFpbGVkIHRvIGdldCBpY29uIGZyb20gY2FjaGUgJTAyWDolMDRYIiwgd2luZG93 SWNvbi0+aWNvbkluZm8tPmNhY2hlSWQsCisgCQkgICAgICAgICAgd2luZG93SWNvbi0+aWNvbklu Zm8tPmNhY2hlRW50cnkpOworLQkJcmV0dXJuIEZBTFNFOworIAl9CistCistCWlmICghY29udmVy dF9yYWlsX2ljb24od2luZG93SWNvbi0+aWNvbkluZm8sIGljb24pKQorKwllbHNlIGlmICghY29u dmVydF9yYWlsX2ljb24od2luZG93SWNvbi0+aWNvbkluZm8sIGljb24pKQorIAl7CisgCQlXTG9n X1dBUk4oVEFHLCAiZmFpbGVkIHRvIGNvbnZlcnQgaWNvbiBmb3Igd2luZG93ICUwOFgiLCBvcmRl ckluZm8tPndpbmRvd0lkKTsKKy0JCXJldHVybiBGQUxTRTsKKyAJfQorLQorLQlyZXBsYWNlSWNv biA9ICEhKG9yZGVySW5mby0+ZmllbGRGbGFncyAmIFdJTkRPV19PUkRFUl9TVEFURV9ORVcpOwor LQl4Zl9yYWlsX3NldF93aW5kb3dfaWNvbih4ZmMsIHJhaWxXaW5kb3csIGljb24sIHJlcGxhY2VJ Y29uKTsKKy0JcmV0dXJuIFRSVUU7CisrCWVsc2UKKysJeworKwkJcmVwbGFjZUljb24gPSAhIShv cmRlckluZm8tPmZpZWxkRmxhZ3MgJiBXSU5ET1dfT1JERVJfU1RBVEVfTkVXKTsKKysJCXhmX3Jh aWxfc2V0X3dpbmRvd19pY29uKHhmYywgcmFpbFdpbmRvdywgaWNvbiwgcmVwbGFjZUljb24pOwor KwkJcmMgPSBUUlVFOworKwl9CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhyYWlsV2luZG93KTsK KysJcmV0dXJuIHJjOworIH0KKyAKKyBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jYWNoZWRf aWNvbihyZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3JkZXJJ bmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdJTkRP V19DQUNIRURfSUNPTl9PUkRFUiogd2luZG93Q2FjaGVkSWNvbikKKyB7CisrCUJPT0wgcmMgPSBG QUxTRTsKKyAJeGZDb250ZXh0KiB4ZmMgPSAoeGZDb250ZXh0Kiljb250ZXh0OworLQl4ZkFwcFdp bmRvdyogcmFpbFdpbmRvdzsKKy0JeGZSYWlsSWNvbiogaWNvbjsKKy0JQk9PTCByZXBsYWNlSWNv bjsKKy0JcmFpbFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5mby0+d2lu ZG93SWQpOworKwlCT09MIHJlcGxhY2VJY29uID0gMDsKKysJeGZBcHBXaW5kb3cqIHJhaWxXaW5k b3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBvcmRlckluZm8tPndpbmRvd0lkKTsKKyAKKyAJ aWYgKCFyYWlsV2luZG93KQorIAkJcmV0dXJuIFRSVUU7CisgCistCWljb24gPSBSYWlsSWNvbkNh Y2hlX0xvb2t1cCh4ZmMtPnJhaWxJY29uQ2FjaGUsIHdpbmRvd0NhY2hlZEljb24tPmNhY2hlZElj b24uY2FjaGVJZCwKKysJeGZSYWlsSWNvbiogaWNvbiA9IFJhaWxJY29uQ2FjaGVfTG9va3VwKHhm Yy0+cmFpbEljb25DYWNoZSwgd2luZG93Q2FjaGVkSWNvbi0+Y2FjaGVkSWNvbi5jYWNoZUlkLAor IAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Q2FjaGVkSWNvbi0+Y2FjaGVkSWNv bi5jYWNoZUVudHJ5KTsKKyAKKyAJaWYgKCFpY29uKQorIAl7CisgCQlXTG9nX1dBUk4oVEFHLCAi ZmFpbGVkIHRvIGdldCBpY29uIGZyb20gY2FjaGUgJTAyWDolMDRYIiwKKyAJCSAgICAgICAgICB3 aW5kb3dDYWNoZWRJY29uLT5jYWNoZWRJY29uLmNhY2hlSWQsIHdpbmRvd0NhY2hlZEljb24tPmNh Y2hlZEljb24uY2FjaGVFbnRyeSk7CistCQlyZXR1cm4gRkFMU0U7CisgCX0KKy0KKy0JcmVwbGFj ZUljb24gPSAhIShvcmRlckluZm8tPmZpZWxkRmxhZ3MgJiBXSU5ET1dfT1JERVJfU1RBVEVfTkVX KTsKKy0JeGZfcmFpbF9zZXRfd2luZG93X2ljb24oeGZjLCByYWlsV2luZG93LCBpY29uLCByZXBs YWNlSWNvbik7CistCXJldHVybiBUUlVFOworKwllbHNlCisrCXsKKysJCXJlcGxhY2VJY29uID0g ISEob3JkZXJJbmZvLT5maWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRFX05FVyk7CisrCQl4 Zl9yYWlsX3NldF93aW5kb3dfaWNvbih4ZmMsIHJhaWxXaW5kb3csIGljb24sIHJlcGxhY2VJY29u KTsKKysJCXJjID0gVFJVRTsKKysJfQorKwl4Zl9yYWlsX3JldHVybl93aW5kb3cocmFpbFdpbmRv dyk7CisrCXJldHVybiByYzsKKyB9CisgCisgc3RhdGljIEJPT0wgeGZfcmFpbF9ub3RpZnlfaWNv bl9jb21tb24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qIG9y ZGVySW5mbywKK0BAIC0xMDEyLDYgKzEwMTUsNyBAQCBzdGF0aWMgVUlOVCB4Zl9yYWlsX3NlcnZl cl9sb2NhbF9tb3ZlX3NpemUoUmFpbENsaWVudENvbnRleHQqIGNvbnRleHQsCisgCWVsc2UKKyAJ CXhmX0VuZExvY2FsTW92ZVNpemUoeGZjLCBhcHBXaW5kb3cpOworIAorKwl4Zl9yYWlsX3JldHVy bl93aW5kb3coYXBwV2luZG93KTsKKyAJcmV0dXJuIENIQU5ORUxfUkNfT0s7CisgfQorIAorQEAg LTEwMzMsNiArMTAzNyw3IEBAIHN0YXRpYyBVSU5UIHhmX3JhaWxfc2VydmVyX21pbl9tYXhfaW5m byhSYWlsQ2xpZW50Q29udGV4dCogY29udGV4dCwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAg bWluTWF4SW5mby0+bWluVHJhY2tIZWlnaHQsIG1pbk1heEluZm8tPm1heFRyYWNrV2lkdGgsCisg CQkgICAgICAgICAgICAgICAgICAgICAgIG1pbk1heEluZm8tPm1heFRyYWNrSGVpZ2h0KTsKKyAJ fQorKwl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyAKKyAJcmV0dXJuIENIQU5O RUxfUkNfT0s7CisgfQorQEAgLTExOTAsNyArMTE5NSwyMCBAQCB4ZkFwcFdpbmRvdyogeGZfcmFp bF9nZXRfd2luZG93KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQpCisgCQlyZXR1cm4gTlVMTDsK KyAKKyAJaWYgKCF4ZmMtPnJhaWxXaW5kb3dzKQorLQkJcmV0dXJuIEZBTFNFOworKwkJcmV0dXJu IE5VTEw7CisrCisrCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2Nr KTsKKysJeGZBcHBXaW5kb3cqIHdpbmRvdyA9IEhhc2hUYWJsZV9HZXRJdGVtVmFsdWUoeGZjLT5y YWlsV2luZG93cywgJmlkKTsKKysJaWYgKCF3aW5kb3cpCisrCQlMZWF2ZUNyaXRpY2FsU2VjdGlv bigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisrCisrCXJldHVybiB3aW5kb3c7CisrfQorKwor K3ZvaWQgeGZfcmFpbF9yZXR1cm5fd2luZG93KHhmQXBwV2luZG93KiB3aW5kb3cpCisreworKwlp ZiAoIXdpbmRvdykKKysJCXJldHVybjsKKyAKKy0JcmV0dXJuIEhhc2hUYWJsZV9HZXRJdGVtVmFs dWUoeGZjLT5yYWlsV2luZG93cywgJmlkKTsKKysJTGVhdmVDcml0aWNhbFNlY3Rpb24oJndpbmRv dy0+eGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisgfQorZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEv eGZfcmFpbC5oIGIvY2xpZW50L1gxMS94Zl9yYWlsLmgKK2luZGV4IGM5OWVkNzAuLjVmYmMzMTYg MTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuaAorKysrIGIvY2xpZW50L1gxMS94Zl9y YWlsLmgKK0BAIC0zNSw2ICszNSw5IEBAIHZvaWQgeGZfcmFpbF9kaXNhYmxlX3JlbW90ZWFwcF9t b2RlKHhmQ29udGV4dCogeGZjKTsKKyAKKyB4ZkFwcFdpbmRvdyogeGZfcmFpbF9hZGRfd2luZG93 KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIFVJTlQzMiB4LCBVSU5UMzIgeSwgVUlOVDMyIHdp ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDMyIGhlaWdodCwgVUlO VDMyIHN1cmZhY2VJZCk7CisrCisrdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBXaW5k b3cqIHdpbmRvdyk7CisrCisgeGZBcHBXaW5kb3cqIHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZkNvbnRl eHQqIHhmYywgVUlOVDY0IGlkKTsKKyAKKyBCT09MIHhmX3JhaWxfZGVsX3dpbmRvdyh4ZkNvbnRl eHQqIHhmYywgVUlOVDY0IGlkKTsKK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX3dpbmRvdy5j IGIvY2xpZW50L1gxMS94Zl93aW5kb3cuYworaW5kZXggOWI1YjFjNC4uN2U5MzZmZSAxMDA2NDQK Ky0tLSBhL2NsaWVudC9YMTEveGZfd2luZG93LmMKKysrKyBiL2NsaWVudC9YMTEveGZfd2luZG93 LmMKK0BAIC0xMTIyLDIyICsxMTIyLDMzIEBAIHhmQXBwV2luZG93KiB4Zl9BcHBXaW5kb3dGcm9t WDExV2luZG93KHhmQ29udGV4dCogeGZjLCBXaW5kb3cgd25kKQorIAlpbnQgY291bnQ7CisgCVVM T05HX1BUUiogcEtleXMgPSBOVUxMOworIAl4ZkFwcFdpbmRvdyogYXBwV2luZG93OworKworKwlp ZiAoIXhmYy0+cmFpbFdpbmRvd3MpCisrCQlyZXR1cm4gTlVMTDsKKysKKysJRW50ZXJDcml0aWNh bFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworIAljb3VudCA9IEhhc2hUYWJsZV9H ZXRLZXlzKHhmYy0+cmFpbFdpbmRvd3MsICZwS2V5cyk7CisgCisgCWZvciAoaW5kZXggPSAwOyBp bmRleCA8IGNvdW50OyBpbmRleCsrKQorIAl7CistCQlhcHBXaW5kb3cgPSB4Zl9yYWlsX2dldF93 aW5kb3coeGZjLCAqKFVJTlQ2NCopcEtleXNbaW5kZXhdKTsKKysJCWFwcFdpbmRvdyA9IEhhc2hU YWJsZV9HZXRJdGVtVmFsdWUoeGZjLT5yYWlsV2luZG93cywgKHZvaWQqKXBLZXlzW2luZGV4XSk7 CisgCisgCQlpZiAoIWFwcFdpbmRvdykKKysJCXsKKysJCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigm eGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisrCQkJZnJlZShwS2V5cyk7CisgCQkJcmV0dXJuIE5V TEw7CisrCQl9CisgCisgCQlpZiAoYXBwV2luZG93LT5oYW5kbGUgPT0gd25kKQorIAkJeworKwkJ CUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKyAJCQlmcmVl KHBLZXlzKTsKKyAJCQlyZXR1cm4gYXBwV2luZG93OworIAkJfQorIAl9CisgCisrCUxlYXZlQ3Jp dGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKyAJZnJlZShwS2V5cyk7Cisg CXJldHVybiBOVUxMOworIH0KK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX3dpbmRvdy5oIGIv Y2xpZW50L1gxMS94Zl93aW5kb3cuaAoraW5kZXggMGY4NWFmMS4uYzc3MDJlZCAxMDA2NDQKKy0t LSBhL2NsaWVudC9YMTEveGZfd2luZG93LmgKKysrKyBiL2NsaWVudC9YMTEveGZfd2luZG93LmgK K0BAIC0xODcsNiArMTg3LDggQEAgdm9pZCB4Zl9TZXRXaW5kb3dNaW5NYXhJbmZvKHhmQ29udGV4 dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93LCBpbnQgbWF4V2lkdGgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IG1heFRyYWNrV2lkdGgsIGludCBtYXhUcmFja0hlaWdodCk7 Cisgdm9pZCB4Zl9TdGFydExvY2FsTW92ZVNpemUoeGZDb250ZXh0KiB4ZmMsIHhmQXBwV2luZG93 KiBhcHBXaW5kb3csIGludCBkaXJlY3Rpb24sIGludCB4LCBpbnQgeSk7Cisgdm9pZCB4Zl9FbmRM b2NhbE1vdmVTaXplKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93KTsKKyt2 b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh4ZkFwcFdpbmRvdyogd2luZG93KTsKKysKKyB4ZkFw cFdpbmRvdyogeGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZkNvbnRleHQqIHhmYywgV2luZG93 IHduZCk7CisgCisgI2VuZGlmIC8qIEZSRUVSRFBfQ0xJRU5UX1gxMV9XSU5ET1dfSCAqLworLS0g CisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NsaWVudC14MTEtcmVmYWN0b3ItbG9ja2luZy5wYXRj aCBiL2NsaWVudC14MTEtcmVmYWN0b3ItbG9ja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hOTQ1YTM5Ci0tLSAvZGV2L251bGwKKysrIGIvY2xpZW50LXgxMS1y ZWZhY3Rvci1sb2NraW5nLnBhdGNoCkBAIC0wLDAgKzEsMzYwIEBACitGcm9tIGVlYjM4YzM1NjU0 NzNjNDZkYTVkZWE2YjQzZjU5NzA2NGU4OWI3MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjcgQXByIDIw MjYgMjA6MTI6MTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NsaWVudCx4MTFdIHJlZmFjdG9y IGxvY2tpbmcKKworWDExIGFuZCByYWlsV2luZG93cyBsb2NrIG11c3QgYmUgaGVsZCBhdCB0aGUg c2FtZSB0aW1lIHRvIGF2b2lkCitkZWFkbG9ja2luZy4KKworQmFja3BvcnQgb2YgY29tbWl0IDRm ZjU3YjY4YzI5NjBmYTQxNGQwM2M3OGZmMGUwNjYwYmUxY2M1YmQuCisKK0FkYXB0ZWQgZm9yIDIu MTEuNzogQzg5IGRlY2xhcmF0aW9uIHN0eWxlLCBkaXJlY3QgWDExIGNhbGxzIGluc3RlYWQKK29m IGBMb2dEeW5BbmQqYCB3cmFwcGVycywgYFdJTlBSX0FUVFJfVU5VU0VEYCByZW1vdmVkIGZyb20K K2B4ZkFwcFdpbmRvd3NMb2NrRnJvbWAvYFVubG9ja0Zyb21gLgorCitNYWRlLXdpdGg6IEN1cnNv cgorLS0tCisgY2xpZW50L1gxMS94Zl9ldmVudC5jICB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0t LS0tLQorIGNsaWVudC9YMTEveGZfcmFpbC5jICAgfCAzNSArKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQorIGNsaWVudC9YMTEveGZfcmFpbC5oICAgfCAxNCArKysrKysrKy0tLS0t LQorIGNsaWVudC9YMTEveGZfd2luZG93LmMgfCAxNiArKysrKysrKystLS0tLS0tCisgNCBmaWxl cyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL2NsaWVudC9YMTEveGZfZXZlbnQuYyBiL2NsaWVudC9YMTEveGZfZXZlbnQuYworaW5kZXgg ODgwMWZiZC4uZTE0MjFhZCAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfZXZlbnQuYworKysr IGIvY2xpZW50L1gxMS94Zl9ldmVudC5jCitAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyBCT09M IHhmX2V2ZW50X0V4cG9zZSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWEV4cG9zZUV2ZW50KiBldmVu dCwgQk9PTCBhcHApCisgCQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJv bVgxMVdpbmRvdyh4ZmMsIGV2ZW50LT53aW5kb3cpOworIAkJaWYgKGFwcFdpbmRvdykKKyAJCQl4 Zl9VcGRhdGVXaW5kb3dBcmVhKHhmYywgYXBwV2luZG93LCB4LCB5LCB3LCBoKTsKKy0JCXhmX3Jh aWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFw cFdpbmRvdywgRkFMU0UpOworIAl9CisgCisgCXJldHVybiBUUlVFOworQEAgLTM4Niw3ICszODYs NyBAQCBCT09MIHhmX2dlbmVyaWNfTW90aW9uTm90aWZ5KHhmQ29udGV4dCogeGZjLCBpbnQgeCwg aW50IHksIGludCBzdGF0ZSwgV2luZG93IHdpbgorIAl7CisgCQkvKiBtYWtlIHN1cmUgd2luZG93 IGV4aXN0cyAqLworIAkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21Y MTFXaW5kb3coeGZjLCB3aW5kb3cpOworLQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRv dyk7CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCQlpZiAo IWFwcFdpbmRvdykKKyAJCQlyZXR1cm4gVFJVRTsKKyAKK0BAIC00NjUsNyArNDY1LDcgQEAgQk9P TCB4Zl9nZW5lcmljX0J1dHRvbkV2ZW50KHhmQ29udGV4dCogeGZjLCBpbnQgeCwgaW50IHksIGlu dCBidXR0b24sIFdpbmRvdyB3aW4KKyAJCQl7CisgCQkJCS8qIG1ha2Ugc3VyZSB3aW5kb3cgZXhp c3RzICovCisgCQkJCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDEx V2luZG93KHhmYywgd2luZG93KTsKKy0JCQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRv dyk7CisrCQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJCQkJ aWYgKCFhcHBXaW5kb3cpCisgCQkJCQlyZXR1cm4gVFJVRTsKKyAKK0BAIC01NzYsNyArNTc2LDcg QEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfRm9jdXNJbih4ZkNvbnRleHQqIHhmYywgY29uc3QgWEZv Y3VzSW5FdmVudCogZXZlbnQsIEJPT0wgYXAKKyAJCSAqLworIAkJaWYgKGFwcFdpbmRvdykKKyAJ CQl4Zl9yYWlsX2FkanVzdF9wb3NpdGlvbih4ZmMsIGFwcFdpbmRvdyk7CistCQl4Zl9yYWlsX3Jl dHVybl93aW5kb3coYXBwV2luZG93KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5k b3csIEZBTFNFKTsKKyAJfQorIAorIAl4Zl9rZXlib2FyZF9mb2N1c19pbih4ZmMpOworQEAgLTYy OCw3ICs2MjgsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9DbGllbnRNZXNzYWdlKHhmQ29udGV4 dCogeGZjLCBjb25zdCBYQ2xpZW50TWVzc2FnZUV2ZW50KiBldgorIAorIAkJCWlmIChhcHBXaW5k b3cpCisgCQkJCXhmX3JhaWxfc2VuZF9jbGllbnRfc3lzdGVtX2NvbW1hbmQoeGZjLCBhcHBXaW5k b3ctPndpbmRvd0lkLCBTQ19DTE9TRSk7CistCQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdp bmRvdyk7CisrCQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAkJ CXJldHVybiByYzsKKyAJCX0KKyAJCWVsc2UKK0BAIC02NjMsNyArNjYzLDcgQEAgc3RhdGljIEJP T0wgeGZfZXZlbnRfRW50ZXJOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhFbnRlcldpbmRv d0V2ZW50KiBldmVudCwKKyAKKyAJCS8qIGtlZXAgdHJhY2sgb2Ygd2hpY2ggd2luZG93IGhhcyBm b2N1cyBzbyB0aGF0IHdlIGNhbiBhcHBseSBwb2ludGVyIHVwZGF0ZXMgKi8KKyAJCXhmYy0+YXBw V2luZG93ID0gYXBwV2luZG93OworLQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7 CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCX0KKyAKKyAJ cmV0dXJuIFRSVUU7CitAQCAtNjgzLDcgKzY4Myw3IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X0xl YXZlTm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYTGVhdmVXaW5kb3dFdmVudCogZXZlbnQs CisgCQkvKiBrZWVwIHRyYWNrIG9mIHdoaWNoIHdpbmRvdyBoYXMgZm9jdXMgc28gdGhhdCB3ZSBj YW4gYXBwbHkgcG9pbnRlciB1cGRhdGVzICovCisgCQlpZiAoeGZjLT5hcHBXaW5kb3cgPT0gYXBw V2luZG93KQorIAkJCXhmYy0+YXBwV2luZG93ID0gTlVMTDsKKy0JCXhmX3JhaWxfcmV0dXJuX3dp bmRvdyhhcHBXaW5kb3cpOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFM U0UpOworIAl9CisgCXJldHVybiBUUlVFOworIH0KK0BAIC03NzQsNyArNzc0LDcgQEAgc3RhdGlj IEJPT0wgeGZfZXZlbnRfQ29uZmlndXJlTm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYQ29u ZmlndXJlRXZlbnQqIGV2ZW4KKyAJCQkJCXhmX3JhaWxfYWRqdXN0X3Bvc2l0aW9uKHhmYywgYXBw V2luZG93KTsKKyAJCQl9CisgCQl9CistCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93 KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJfQorIAly ZXR1cm4geGZfcG9pbnRlcl91cGRhdGVfc2NhbGUoeGZjKTsKKyB9CitAQCAtNzk5LDcgKzc5OSw3 IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X01hcE5vdGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3Qg WE1hcEV2ZW50KiBldmVudCwgQk9PTCBhcHApCisgCQkJLy8geGZfcmFpbF9zZW5kX2NsaWVudF9z eXN0ZW1fY29tbWFuZCh4ZmMsIGFwcFdpbmRvdy0+d2luZG93SWQsIFNDX1JFU1RPUkUpOworIAkJ CWFwcFdpbmRvdy0+aXNfbWFwcGVkID0gVFJVRTsKKyAJCX0KKy0JCXhmX3JhaWxfcmV0dXJuX3dp bmRvdyhhcHBXaW5kb3cpOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFM U0UpOworIAl9CisgCisgCXJldHVybiBUUlVFOworQEAgLTgyMiw3ICs4MjIsNyBAQCBzdGF0aWMg Qk9PTCB4Zl9ldmVudF9Vbm1hcE5vdGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWFVubWFwRXZl bnQqIGV2ZW50LCBCT09MCisgCisgCQlpZiAoYXBwV2luZG93KQorIAkJCWFwcFdpbmRvdy0+aXNf bWFwcGVkID0gRkFMU0U7CistCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKysJ CXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJfQorIAorIAlyZXR1 cm4gVFJVRTsKK0BAIC05NTQsNyArOTU0LDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfUHJvcGVy dHlOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhQcm9wZXJ0eUV2ZW50KiBldmVudCwKKyAJ CQlyYyA9IGdkaV9zZW5kX3N1cHByZXNzX291dHB1dCh4ZmMtPmNvbnRleHQuZ2RpLCBtaW5pbWl6 ZWQpOworIAorIAlmYWlsOgorLQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7Cisr CQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCX0KKyAKKyAJcmV0 dXJuIHJjOworQEAgLTEwNjYsNyArMTA2Niw3IEBAIEJPT0wgeGZfZXZlbnRfcHJvY2VzcyhmcmVl cmRwKiBpbnN0YW5jZSwgY29uc3QgWEV2ZW50KiBldmVudCkKKyAJCQl4ZmMtPmFwcFdpbmRvdyA9 IGFwcFdpbmRvdzsKKyAKKyAJCQlCT09MIHN1cHByZXNzID0geGZfZXZlbnRfc3VwcHJlc3NfZXZl bnRzKHhmYywgYXBwV2luZG93LCBldmVudCk7CistCQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFw cFdpbmRvdyk7CisrCQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOwor IAkJCWlmIChzdXBwcmVzcykKKyAJCQkJcmV0dXJuIFRSVUU7CisgCQl9CitkaWZmIC0tZ2l0IGEv Y2xpZW50L1gxMS94Zl9yYWlsLmMgYi9jbGllbnQvWDExL3hmX3JhaWwuYworaW5kZXggMWU1NzA0 Ni4uZDQyYjg2NCAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfcmFpbC5jCisrKysgYi9jbGll bnQvWDExL3hmX3JhaWwuYworQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIHhmX3JhaWxfc2VuZF9h Y3RpdmF0ZSh4ZkNvbnRleHQqIHhmYywgV2luZG93IHh3aW5kb3csIEJPT0wgZW5hYmxlZCkKKyAJ CXhmX1NldFdpbmRvd1N0eWxlKHhmYywgYXBwV2luZG93LCAwLCAwKTsKKyAKKyAJYWN0aXZhdGUu d2luZG93SWQgPSBhcHBXaW5kb3ctPndpbmRvd0lkOworLQl4Zl9yYWlsX3JldHVybl93aW5kb3co YXBwV2luZG93KTsKKysJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOwor IAorIAlhY3RpdmF0ZS5lbmFibGVkID0gZW5hYmxlZDsKKyAJeGZjLT5yYWlsLT5DbGllbnRBY3Rp dmF0ZSh4ZmMtPnJhaWwsICZhY3RpdmF0ZSk7CitAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyB2 b2lkIHhmX3JhaWxfaW52YWxpZGF0ZV9yZWdpb24oeGZDb250ZXh0KiB4ZmMsIFJFR0lPTjE2KiBp bnZhbGlkUmVnaW9uKQorIAorIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgr KykKKyAJeworLQkJYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgKihVSU5UNjQq KXBLZXlzW2luZGV4XSk7CisrCQlhcHBXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCAq KFVJTlQ2NCopcEtleXNbaW5kZXhdLCBGQUxTRSk7CisgCisgCQlpZiAoYXBwV2luZG93KQorIAkJ eworQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24o cmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCXhmQ29udGV4 dCogeGZjID0gKHhmQ29udGV4dCopY29udGV4dDsKKyAJVUlOVDMyIGZpZWxkRmxhZ3MgPSBvcmRl ckluZm8tPmZpZWxkRmxhZ3M7CisgCUJPT0wgcG9zaXRpb25fb3Jfc2l6ZV91cGRhdGVkID0gRkFM U0U7CistCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBv cmRlckluZm8tPndpbmRvd0lkKTsKKysJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX3JhaWxf Z2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5mby0+d2luZG93SWQsIEZBTFNFKTsKKyAKKyAJaWYgKGZp ZWxkRmxhZ3MgJiBXSU5ET1dfT1JERVJfU1RBVEVfTkVXKQorIAl7CitAQCAtNTI2LDcgKzUyNiw3 IEBAIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1vbihyZHBDb250ZXh0KiBjb250ZXh0 LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyoKKyAJfSovCisgCXJjID0gVFJVRTsKKyBmYWlsOgor LQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKysJeGZfcmFpbF9yZXR1cm5fd2lu ZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAlyZXR1cm4gcmM7CisgfQorIAorQEAgLTY2Nyw3ICs2 NjcsNyBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19pY29uKHJkcENvbnRleHQqIGNvbnRl eHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKiBvcgorIAlCT09MIHJjID0gRkFMU0U7CisgCXhm Q29udGV4dCogeGZjID0gKHhmQ29udGV4dCopY29udGV4dDsKKyAJQk9PTCByZXBsYWNlSWNvbiA9 IDA7CistCXhmQXBwV2luZG93KiByYWlsV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywg b3JkZXJJbmZvLT53aW5kb3dJZCk7CisrCXhmQXBwV2luZG93KiByYWlsV2luZG93ID0geGZfcmFp bF9nZXRfd2luZG93KHhmYywgb3JkZXJJbmZvLT53aW5kb3dJZCwgRkFMU0UpOworIAorIAlpZiAo IXJhaWxXaW5kb3cpCisgCQlyZXR1cm4gVFJVRTsKK0BAIC02OTAsNyArNjkwLDcgQEAgc3RhdGlj IEJPT0wgeGZfcmFpbF93aW5kb3dfaWNvbihyZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5E T1dfT1JERVJfSU5GTyogb3IKKyAJCXhmX3JhaWxfc2V0X3dpbmRvd19pY29uKHhmYywgcmFpbFdp bmRvdywgaWNvbiwgcmVwbGFjZUljb24pOworIAkJcmMgPSBUUlVFOworIAl9CistCXhmX3JhaWxf cmV0dXJuX3dpbmRvdyhyYWlsV2luZG93KTsKKysJeGZfcmFpbF9yZXR1cm5fd2luZG93KHJhaWxX aW5kb3csIEZBTFNFKTsKKyAJcmV0dXJuIHJjOworIH0KKyAKK0BAIC03MDAsNyArNzAwLDcgQEAg c3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY2FjaGVkX2ljb24ocmRwQ29udGV4dCogY29udGV4 dCwgY29uc3QgV0lORE9XX09SREVSX0kKKyAJQk9PTCByYyA9IEZBTFNFOworIAl4ZkNvbnRleHQq IHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQ7CisgCUJPT0wgcmVwbGFjZUljb24gPSAwOworLQl4 ZkFwcFdpbmRvdyogcmFpbFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5m by0+d2luZG93SWQpOworKwl4ZkFwcFdpbmRvdyogcmFpbFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dp bmRvdyh4ZmMsIG9yZGVySW5mby0+d2luZG93SWQsIEZBTFNFKTsKKyAKKyAJaWYgKCFyYWlsV2lu ZG93KQorIAkJcmV0dXJuIFRSVUU7CitAQCAtNzE5LDcgKzcxOSw3IEBAIHN0YXRpYyBCT09MIHhm X3JhaWxfd2luZG93X2NhY2hlZF9pY29uKHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRP V19PUkRFUl9JCisgCQl4Zl9yYWlsX3NldF93aW5kb3dfaWNvbih4ZmMsIHJhaWxXaW5kb3csIGlj b24sIHJlcGxhY2VJY29uKTsKKyAJCXJjID0gVFJVRTsKKyAJfQorLQl4Zl9yYWlsX3JldHVybl93 aW5kb3cocmFpbFdpbmRvdyk7CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhyYWlsV2luZG93LCBG QUxTRSk7CisgCXJldHVybiByYzsKKyB9CisgCitAQCAtOTM5LDcgKzkzOSw3IEBAIHN0YXRpYyBV SU5UIHhmX3JhaWxfc2VydmVyX2xvY2FsX21vdmVfc2l6ZShSYWlsQ2xpZW50Q29udGV4dCogY29u dGV4dCwKKyAJaW50IGRpcmVjdGlvbiA9IDA7CisgCVdpbmRvdyBjaGlsZF93aW5kb3c7CisgCXhm Q29udGV4dCogeGZjID0gKHhmQ29udGV4dCopY29udGV4dC0+Y3VzdG9tOworLQl4ZkFwcFdpbmRv dyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgbG9jYWxNb3ZlU2l6ZS0+d2lu ZG93SWQpOworKwl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhm YywgbG9jYWxNb3ZlU2l6ZS0+d2luZG93SWQsIEZBTFNFKTsKKyAKKyAJaWYgKCFhcHBXaW5kb3cp CisgCQlyZXR1cm4gRVJST1JfSU5URVJOQUxfRVJST1I7CitAQCAtMTAyMCw3ICsxMDIwLDcgQEAg c3RhdGljIFVJTlQgeGZfcmFpbF9zZXJ2ZXJfbG9jYWxfbW92ZV9zaXplKFJhaWxDbGllbnRDb250 ZXh0KiBjb250ZXh0LAorIAllbHNlCisgCQl4Zl9FbmRMb2NhbE1vdmVTaXplKHhmYywgYXBwV2lu ZG93KTsKKyAKKy0JeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCXhmX3JhaWxf cmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJcmV0dXJuIENIQU5ORUxfUkNfT0s7 CisgfQorIAorQEAgLTEwMzMsNyArMTAzMyw3IEBAIHN0YXRpYyBVSU5UIHhmX3JhaWxfc2VydmVy X21pbl9tYXhfaW5mbyhSYWlsQ2xpZW50Q29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkFJTF9NSU5NQVhJTkZPX09SREVSKiBt aW5NYXhJbmZvKQorIHsKKyAJeGZDb250ZXh0KiB4ZmMgPSAoeGZDb250ZXh0Kiljb250ZXh0LT5j dXN0b207CistCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZj LCBtaW5NYXhJbmZvLT53aW5kb3dJZCk7CisrCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9y YWlsX2dldF93aW5kb3coeGZjLCBtaW5NYXhJbmZvLT53aW5kb3dJZCwgRkFMU0UpOworIAorIAlp ZiAoYXBwV2luZG93KQorIAl7CitAQCAtMTA0Miw3ICsxMDQyLDcgQEAgc3RhdGljIFVJTlQgeGZf cmFpbF9zZXJ2ZXJfbWluX21heF9pbmZvKFJhaWxDbGllbnRDb250ZXh0KiBjb250ZXh0LAorIAkJ ICAgICAgICAgICAgICAgICAgICAgICBtaW5NYXhJbmZvLT5taW5UcmFja0hlaWdodCwgbWluTWF4 SW5mby0+bWF4VHJhY2tXaWR0aCwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgbWluTWF4SW5m by0+bWF4VHJhY2tIZWlnaHQpOworIAl9CistCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5k b3cpOworKwl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCisgCXJl dHVybiBDSEFOTkVMX1JDX09LOworIH0KK0BAIC0xMTk5LDEzICsxMTk5LDIwIEBAIEJPT0wgeGZf cmFpbF9kZWxfd2luZG93KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQpCisgCWlmICgheGZjLT5y YWlsV2luZG93cykKKyAJCXJldHVybiBGQUxTRTsKKyAKKy0JcmV0dXJuIEhhc2hUYWJsZV9SZW1v dmUoeGZjLT5yYWlsV2luZG93cywgJmlkKTsKKysJeGZfbG9ja194MTEoeGZjKTsKKysJY29uc3Qg Qk9PTCByZXMgPSBIYXNoVGFibGVfUmVtb3ZlKHhmYy0+cmFpbFdpbmRvd3MsICZpZCk7CisrCXhm X3VubG9ja194MTEoeGZjKTsKKysJcmV0dXJuIHJlczsKKyB9CisgCistdm9pZCB4Zl9yYWlsX3Jl dHVybl93aW5kb3dGcm9tKHhmQXBwV2luZG93KiB3aW5kb3csIGNvbnN0IGNoYXIqIGZpbGUsIGNv bnN0IGNoYXIqIGZrdCwgc2l6ZV90IGxpbmUpCisrdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3dG cm9tKHhmQXBwV2luZG93KiB3aW5kb3csIEJPT0wgYWxyZWFkeUxvY2tlZCwgY29uc3QgY2hhciog ZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmt0LCBz aXplX3QgbGluZSkKKyB7CisgCWlmICghd2luZG93KQorIAkJcmV0dXJuOworIAorKwlpZiAoYWxy ZWFkeUxvY2tlZCkKKysJCXJldHVybjsKKysKKyAJeGZBcHBXaW5kb3dzVW5sb2NrRnJvbSh3aW5k b3ctPnhmYywgZmlsZSwgZmt0LCBsaW5lKTsKKyB9CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94 Zl9yYWlsLmggYi9jbGllbnQvWDExL3hmX3JhaWwuaAoraW5kZXggODNkNWZmZi4uYTkxYzFiZiAx MDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfcmFpbC5oCisrKysgYi9jbGllbnQvWDExL3hmX3Jh aWwuaAorQEAgLTM2LDE0ICszNiwxNiBAQCB2b2lkIHhmX3JhaWxfZGlzYWJsZV9yZW1vdGVhcHBf bW9kZSh4ZkNvbnRleHQqIHhmYyk7CisgeGZBcHBXaW5kb3cqIHhmX3JhaWxfYWRkX3dpbmRvdyh4 ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBVSU5UMzIgeCwgVUlOVDMyIHksIFVJTlQzMiB3aWR0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBoZWlnaHQsIFVJTlQz MiBzdXJmYWNlSWQpOworIAorLSNkZWZpbmUgeGZfcmFpbF9yZXR1cm5fd2luZG93KHdpbmRvdykg XAorLQl4Zl9yYWlsX3JldHVybl93aW5kb3dGcm9tKCh3aW5kb3cpLCBfX0ZJTEVfXywgX19mdW5j X18sIF9fTElORV9fKQorLXZvaWQgeGZfcmFpbF9yZXR1cm5fd2luZG93RnJvbSh4ZkFwcFdpbmRv dyogd2luZG93LCBjb25zdCBjaGFyKiBmaWxlLCBjb25zdCBjaGFyKiBma3QsIHNpemVfdCBsaW5l KTsKKysjZGVmaW5lIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh3aW5kb3csIGFscmVhZHlMb2NrZWQp IFwKKysJeGZfcmFpbF9yZXR1cm5fd2luZG93RnJvbSgod2luZG93KSwgKGFscmVhZHlMb2NrZWQp LCBfX0ZJTEVfXywgX19mdW5jX18sIF9fTElORV9fKQorK3ZvaWQgeGZfcmFpbF9yZXR1cm5fd2lu ZG93RnJvbSh4ZkFwcFdpbmRvdyogd2luZG93LCBCT09MIGFscmVhZHlMb2NrZWQsIGNvbnN0IGNo YXIqIGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZr dCwgc2l6ZV90IGxpbmUpOworIAorLSNkZWZpbmUgeGZfcmFpbF9nZXRfd2luZG93KHhmYywgaWQp IFwKKy0JeGZfcmFpbF9nZXRfd2luZG93RnJvbSgoeGZjKSwgKGlkKSwgX19GSUxFX18sIF9fZnVu Y19fLCBfX0xJTkVfXykKKysjZGVmaW5lIHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIGlkLCBhbHJl YWR5TG9ja2VkKSBcCisrCXhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20oKHhmYyksIChpZCksIChhbHJl YWR5TG9ja2VkKSwgX19GSUxFX18sIF9fZnVuY19fLCBfX0xJTkVfXykKKyAKKy14ZkFwcFdpbmRv dyogeGZfcmFpbF9nZXRfd2luZG93RnJvbSh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBjb25z dCBjaGFyKiBmaWxlLCBjb25zdCBjaGFyKiBma3QsCisreGZBcHBXaW5kb3cqIHhmX3JhaWxfZ2V0 X3dpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgQk9PTCBhbHJlYWR5TG9ja2Vk LCBjb25zdCBjaGFyKiBmaWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIqIGZrdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3QgbGluZSk7CisgCisgQk9PTCB4Zl9yYWlsX2RlbF93aW5kb3coeGZDb250ZXh0KiB4ZmMs IFVJTlQ2NCBpZCk7CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl93aW5kb3cuYyBiL2NsaWVu dC9YMTEveGZfd2luZG93LmMKK2luZGV4IDA5YjRhODEuLjhkMDljZWQgMTAwNjQ0CistLS0gYS9j bGllbnQvWDExL3hmX3dpbmRvdy5jCisrKysgYi9jbGllbnQvWDExL3hmX3dpbmRvdy5jCitAQCAt MTA3MCw4ICsxMDcwLDYgQEAgdm9pZCB4Zl9VcGRhdGVXaW5kb3dBcmVhKHhmQ29udGV4dCogeGZj LCB4ZkFwcFdpbmRvdyogYXBwV2luZG93LCBpbnQgeCwgaW50IHksIGkKKyAJaWYgKGF5ICsgaGVp Z2h0ID4gYXBwV2luZG93LT53aW5kb3dPZmZzZXRZICsgYXBwV2luZG93LT5oZWlnaHQpCisgCQlo ZWlnaHQgPSAoYXBwV2luZG93LT53aW5kb3dPZmZzZXRZICsgYXBwV2luZG93LT5oZWlnaHQgLSAx KSAtIGF5OworIAorLQl4Zl9sb2NrX3gxMSh4ZmMpOworLQorIAlpZiAoeGZjLT5jb250ZXh0LnNl dHRpbmdzLT5Tb2Z0d2FyZUdkaSkKKyAJeworIAkJWFB1dEltYWdlKHhmYy0+ZGlzcGxheSwgeGZj LT5wcmltYXJ5LCBhcHBXaW5kb3ctPmdjLCB4ZmMtPmltYWdlLCBheCwgYXksIGF4LCBheSwgd2lk dGgsCitAQCAtMTA4MSw3ICsxMDc5LDYgQEAgdm9pZCB4Zl9VcGRhdGVXaW5kb3dBcmVhKHhmQ29u dGV4dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93LCBpbnQgeCwgaW50IHksIGkKKyAJWENv cHlBcmVhKHhmYy0+ZGlzcGxheSwgeGZjLT5wcmltYXJ5LCBhcHBXaW5kb3ctPmhhbmRsZSwgYXBw V2luZG93LT5nYywgYXgsIGF5LCB3aWR0aCwgaGVpZ2h0LAorIAkgICAgICAgICAgeCwgeSk7Cisg CVhGbHVzaCh4ZmMtPmRpc3BsYXkpOworLQl4Zl91bmxvY2tfeDExKHhmYyk7CisgfQorIAorIHZv aWQgeGZfRGVzdHJveVdpbmRvdyh4ZkNvbnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRv dykKK0BAIC0xMTIyLDggKzExMTksOCBAQCBzdGF0aWMgeGZBcHBXaW5kb3cqIGdldF93aW5kb3dV bmxvY2tlZCh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorIAlyZXR1cm4gSGFzaFRhYmxlX0dl dEl0ZW1WYWx1ZSh4ZmMtPnJhaWxXaW5kb3dzLCAmaWQpOworIH0KKyAKKy14ZkFwcFdpbmRvdyog eGZfcmFpbF9nZXRfd2luZG93RnJvbSh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBjb25zdCBj aGFyKiBmaWxlLCBjb25zdCBjaGFyKiBma3QsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IGxpbmUpCisreGZBcHBXaW5kb3cqIHhmX3JhaWxfZ2V0X3dpbmRvd0Zy b20oeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgQk9PTCBhbHJlYWR5TG9ja2VkLCBjb25zdCBj aGFyKiBmaWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIGZrdCwgc2l6ZV90IGxpbmUpCisgeworIAlpZiAoIXhmYykKKyAJCXJldHVybiBOVUxMOwor QEAgLTExMzEsOSArMTEyOCwxMiBAQCB4ZkFwcFdpbmRvdyogeGZfcmFpbF9nZXRfd2luZG93RnJv bSh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBjb25zdCBjaGFyKiBmaWxlLAorIAlpZiAoIXhm Yy0+cmFpbFdpbmRvd3MpCisgCQlyZXR1cm4gTlVMTDsKKyAKKy0JeGZBcHBXaW5kb3dzTG9ja0Zy b20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworKwlpZiAoIWFscmVhZHlMb2NrZWQpCisrCQl4ZkFw cFdpbmRvd3NMb2NrRnJvbSh4ZmMsIGZpbGUsIGZrdCwgbGluZSk7CisrCisgCXhmQXBwV2luZG93 KiB3aW5kb3cgPSBnZXRfd2luZG93VW5sb2NrZWQoeGZjLCBpZCk7CistCWlmICghd2luZG93KQor KworKwlpZiAoIXdpbmRvdyAmJiAhYWxyZWFkeUxvY2tlZCkKKyAJCXhmQXBwV2luZG93c1VubG9j a0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworIAorIAlyZXR1cm4gd2luZG93OworQEAgLTEx NzYsNiArMTE3Niw3IEBAIHhmQXBwV2luZG93KiB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93RnJv bSh4ZkNvbnRleHQqIHhmYywgV2luZG93IHduZCwgY29uc3QgY2hhCisgdm9pZCB4ZkFwcFdpbmRv d3NMb2NrRnJvbSh4ZkNvbnRleHQqIHhmYywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciog Zmt0LCBzaXplX3QgbGluZSkKKyB7CisgCVdJTlBSX0FTU0VSVCh4ZmMpOworKwl4Zl9sb2NrX3gx MSh4ZmMpOworIAlFbnRlckNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7 CisgfQorIAorQEAgLTExODMsNCArMTE4NCw1IEBAIHZvaWQgeGZBcHBXaW5kb3dzVW5sb2NrRnJv bSh4ZkNvbnRleHQqIHhmYywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzCisg eworIAlXSU5QUl9BU1NFUlQoeGZjKTsKKyAJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFp bFdpbmRvd3MtPmxvY2spOworKwl4Zl91bmxvY2tfeDExKHhmYyk7CisgfQorLS0gCisyLjUzLjAK KwoKZGlmZiAtLWdpdCBhL2NvZGVjLWNsZWFyLWNoZWNrLWNsZWFyX2RlY29tcmVzcy1nbHlwaERh dGEucGF0Y2ggYi9jb2RlYy1jbGVhci1jaGVjay1jbGVhcl9kZWNvbXJlc3MtZ2x5cGhEYXRhLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Mjg5MTkKLS0tIC9kZXYv bnVsbAorKysgYi9jb2RlYy1jbGVhci1jaGVjay1jbGVhcl9kZWNvbXJlc3MtZ2x5cGhEYXRhLnBh dGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Zyb20gM2E0ZWUzZjAwMjA5NzczMjAwNjZiOTlkYTE2NDU2 YjYzNjRjMTM2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxv aG9seUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyMiBKYW4gMjAyNiAxMjo1MDoyMiArMDEwMAor U3ViamVjdDogW1BBVENIXSBbY29kZWMsY2xlYXJdIGNoZWNrIGNsZWFyX2RlY29tcmVzcyBnbHlw aERhdGEKKworQmFja3BvcnQgb2YgY29tbWl0IDI0M2VjZjgwNGJiMTIyZThlNjQzYTVjMTQyYWQ1 YTQ5ZDdhYTE5ZWUuCisKK0NvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgPG5vcmVwbHlAYW50aHJvcGlj LmNvbT4KKy0tLQorIGxpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyB8IDUwICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNDkgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9jbGVh ci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitpbmRleCA0ZjBhZWFkMTAuLmZjYWZiOTIz NSAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworKysrIGIvbGliZnJlZXJk cC9jb2RlYy9jbGVhci5jCitAQCAtMTE0NSw3ICsxMTQ1LDU1IEBAIElOVDMyIGNsZWFyX2RlY29t cHJlc3MoQ0xFQVJfQ09OVEVYVCogY2xlYXIsIGNvbnN0IEJZVEUqIHBTcmNEYXRhLCBVSU5UMzIg U3JjU2l6CisgCisgCWlmIChnbHlwaERhdGEpCisgCXsKKy0JCWlmICghZnJlZXJkcF9pbWFnZV9j b3B5KGdseXBoRGF0YSwgY2xlYXItPmZvcm1hdCwgMCwgMCwgMCwgbldpZHRoLCBuSGVpZ2h0LCBw RHN0RGF0YSwKKysJCXVpbnQzMl90IHcgPSBNSU4obldpZHRoLCBuRHN0V2lkdGgpOworKwkJaWYg KG5YRHN0ID4gbkRzdFdpZHRoKQorKwkJeworKwkJCVdMb2dfV0FSTihUQUcsICJnbHlwaERhdGEg Y29weSBhcmVhIHggZXhjZWVkcyBkZXN0aW5hdGlvbjogeD0lIiBQUkl1MzIgIiA+ICUiIFBSSXUz MiwKKysJCQkgICAgICAgICAgblhEc3QsIG5Ec3RXaWR0aCk7CisrCQkJdyA9IDA7CisrCQl9Cisr CQllbHNlIGlmIChuWERzdCArIHcgPiBuRHN0V2lkdGgpCisrCQl7CisrCQkJV0xvZ19XQVJOKFRB RywKKysJCQkgICAgICAgICAgImdseXBoRGF0YSBjb3B5IGFyZWEgeCArIHdpZHRoIGV4Y2VlZHMg ZGVzdGluYXRpb246IHg9JSIgUFJJdTMyICIgKyAlIiBQUkl1MzIKKysJCQkgICAgICAgICAgIiA+ ICUiIFBSSXUzMiwKKysJCQkgICAgICAgICAgblhEc3QsIHcsIG5Ec3RXaWR0aCk7CisrCQkJdyA9 IG5Ec3RXaWR0aCAtIG5YRHN0OworKwkJfQorKworKwkJaWYgKHcgIT0gbldpZHRoKQorKwkJewor KwkJCVdMb2dfV0FSTihUQUcsCisrCQkJICAgICAgICAgICJnbHlwaERhdGEgY29weSBhcmVhIHdp ZHRoIHRydW5jYXRlZDogcmVxdWVzdGVkPSUiIFBSSXUzMgorKwkJCSAgICAgICAgICAiLCB0cnVu Y2F0ZWQgdG8gJSIgUFJJdTMyLAorKwkJCSAgICAgICAgICBuV2lkdGgsIHcpOworKwkJfQorKwor KwkJdWludDMyX3QgaCA9IE1JTihuSGVpZ2h0LCBuRHN0SGVpZ2h0KTsKKysJCWlmIChuWURzdCA+ IG5Ec3RIZWlnaHQpCisrCQl7CisrCQkJV0xvZ19XQVJOKFRBRywgImdseXBoRGF0YSBjb3B5IGFy ZWEgeSBleGNlZWRzIGRlc3RpbmF0aW9uOiB5PSUiIFBSSXUzMiAiID4gJSIgUFJJdTMyLAorKwkJ CSAgICAgICAgICBuWURzdCwgbkRzdEhlaWdodCk7CisrCQkJaCA9IDA7CisrCQl9CisrCQllbHNl IGlmIChuWURzdCArIGggPiBuRHN0SGVpZ2h0KQorKwkJeworKwkJCVdMb2dfV0FSTihUQUcsCisr CQkJICAgICAgICAgICJnbHlwaERhdGEgY29weSBhcmVhIHkgKyBoZWlnaHQgZXhjZWVkcyBkZXN0 aW5hdGlvbjogeD0lIiBQUkl1MzIgIiArICUiIFBSSXUzMgorKwkJCSAgICAgICAgICAiID4gJSIg UFJJdTMyLAorKwkJCSAgICAgICAgICBuWURzdCwgaCwgbkRzdEhlaWdodCk7CisrCQkJaCA9IG5E c3RIZWlnaHQgLSBuWURzdDsKKysJCX0KKysKKysJCWlmIChoICE9IG5IZWlnaHQpCisrCQl7Cisr CQkJV0xvZ19XQVJOKFRBRywKKysJCQkgICAgICAgICAgImdseXBoRGF0YSBjb3B5IGFyZWEgaGVp Z2h0IHRydW5jYXRlZDogcmVxdWVzdGVkPSUiIFBSSXUzMgorKwkJCSAgICAgICAgICAiLCB0cnVu Y2F0ZWQgdG8gJSIgUFJJdTMyLAorKwkJCSAgICAgICAgICBuSGVpZ2h0LCBoKTsKKysJCX0KKysK KysJCWlmICghZnJlZXJkcF9pbWFnZV9jb3B5KGdseXBoRGF0YSwgY2xlYXItPmZvcm1hdCwgMCwg MCwgMCwgdywgaCwgcERzdERhdGEsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICBEc3RGb3Jt YXQsIG5Ec3RTdGVwLCBuWERzdCwgbllEc3QsIHBhbGV0dGUsIEZSRUVSRFBfRkxJUF9OT05FKSkK KyAJCQlnb3RvIGZhaWw7CisgCX0KKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9jb2RlYy1j bGVhci1maXgtY2xlYXJfcmVzaXplX2J1ZmZlci1jaGVja3MucGF0Y2ggYi9jb2RlYy1jbGVhci1m aXgtY2xlYXJfcmVzaXplX2J1ZmZlci1jaGVja3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZTc5ZjgwMQotLS0gL2Rldi9udWxsCisrKyBiL2NvZGVjLWNsZWFyLWZp eC1jbGVhcl9yZXNpemVfYnVmZmVyLWNoZWNrcy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9t IDAwYTU5M2Y5ZWRhNjcyMTI1MzllNGRjYWM2OGVhNWE2OTllYjNlOTMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTI6NDg6MzcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLGNs ZWFyXSBmaXggY2xlYXJfcmVzaXplX2J1ZmZlciBjaGVja3MKKworQmFja3BvcnQgb2YgY29tbWl0 IGM0MzkxODI3ZDdmYWNmYzg3NGNhN2Y2MWE5MmFmYjgyMjMyYTU3NDguCisKK0NvLUF1dGhvcmVk LUJ5OiBDbGF1ZGUgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4KKy0tLQorIGxpYmZyZWVyZHAvY29k ZWMvY2xlYXIuYyB8IDE3ICsrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5z ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29k ZWMvY2xlYXIuYyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworaW5kZXggZTM4ZmEwZGNmLi4y OTlhY2VmMmUgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKKysrKyBiL2xp YmZyZWVyZHAvY29kZWMvY2xlYXIuYworQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IF9DTEVBUl9D T05URVhUCisgCU5TQ19DT05URVhUKiBuc2M7CisgCVVJTlQzMiBzZXFOdW1iZXI7CisgCUJZVEUq IFRlbXBCdWZmZXI7CistCVVJTlQzMiBUZW1wU2l6ZTsKKysJc2l6ZV90IFRlbXBTaXplOworIAlV SU5UMzIgblRlbXBTdGVwOworIAlVSU5UMzIgVGVtcEZvcm1hdDsKKyAJVUlOVDMyIGZvcm1hdDsK K0BAIC0zMTMsMjQgKzMxMywyNSBAQCBzdGF0aWMgQk9PTCBjbGVhcl9kZWNvbXByZXNzX3N1YmNv ZGVfcmxleCh3U3RyZWFtKiBzLCBVSU5UMzIgYml0bWFwRGF0YUJ5dGVDb3VudAorIAorIHN0YXRp YyBCT09MIGNsZWFyX3Jlc2l6ZV9idWZmZXIoQ0xFQVJfQ09OVEVYVCogY2xlYXIsIFVJTlQzMiB3 aWR0aCwgVUlOVDMyIGhlaWdodCkKKyB7CistCVVJTlQzMiBzaXplOworLQorIAlpZiAoIWNsZWFy KQorIAkJcmV0dXJuIEZBTFNFOworIAorLQlzaXplID0gKCh3aWR0aCArIDE2KSAqIChoZWlnaHQg KyAxNikgKiBHZXRCeXRlc1BlclBpeGVsKGNsZWFyLT5mb3JtYXQpKTsKKysJY29uc3QgVUlOVDY0 IHNpemUgPSAxdWxsICogKHdpZHRoICsgMTZ1bGwpICogKGhlaWdodCArIDE2dWxsKTsKKysJY29u c3Qgc2l6ZV90IGJwcCA9IEdldEJ5dGVzUGVyUGl4ZWwoY2xlYXItPmZvcm1hdCk7CisrCWlmIChz aXplID4gVUlOVDMyX01BWCAvIGJwcCkKKysJCXJldHVybiBGQUxTRTsKKyAKKy0JaWYgKHNpemUg PiBjbGVhci0+VGVtcFNpemUpCisrCWlmIChzaXplID4gY2xlYXItPlRlbXBTaXplIC8gYnBwKQor IAl7CistCQlCWVRFKiB0bXAgPSAoQllURSopcmVhbGxvYyhjbGVhci0+VGVtcEJ1ZmZlciwgc2l6 ZSk7CisrCQlCWVRFKiB0bXAgPSAoQllURSopcmVhbGxvYyhjbGVhci0+VGVtcEJ1ZmZlciwgc2l6 ZSAqIGJwcCk7CisgCisgCQlpZiAoIXRtcCkKKyAJCXsKKy0JCQlXTG9nX0VSUihUQUcsICJjbGVh ci0+VGVtcEJ1ZmZlciByZWFsbG9jIGZhaWxlZCBmb3IgJSIgUFJJdTMyICIgYnl0ZXMiLCBzaXpl KTsKKysJCQlXTG9nX0VSUihUQUcsICJjbGVhci0+VGVtcEJ1ZmZlciByZWFsbG9jIGZhaWxlZCBm b3IgJSIgUFJJdTY0ICIgYnl0ZXMiLCBzaXplKTsKKyAJCQlyZXR1cm4gRkFMU0U7CisgCQl9Cisg CistCQljbGVhci0+VGVtcFNpemUgPSBzaXplOworKwkJY2xlYXItPlRlbXBTaXplID0gc2l6ZSAq IGJwcDsKKyAJCWNsZWFyLT5UZW1wQnVmZmVyID0gdG1wOworIAl9CisgCistLSAKKzIuNTIuMAor CgpkaWZmIC0tZ2l0IGEvY29kZWMtY2xlYXItZml4LWRlc3RpbmF0aW9uLWNoZWNrcy5wYXRjaCBi L2NvZGVjLWNsZWFyLWZpeC1kZXN0aW5hdGlvbi1jaGVja3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTgzYjc1MQotLS0gL2Rldi9udWxsCisrKyBiL2NvZGVjLWNs ZWFyLWZpeC1kZXN0aW5hdGlvbi1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA3 MTc4YTU1NTRkNzE0N2E0N2ZiN2E4NWJiYThjNjgxZjU5ZTJhNzE0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24s IDkgTWFyIDIwMjYgMTM6NTU6MjkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLGNsZWFy XSBmaXggZGVzdGluYXRpb24gY2hlY2tzCisKK0JhY2twb3J0IG9mIGNvbW1pdCA3ZDhmZGNlMmQw ZWYzMzdjYjg2Y2IzN2ZjMGM0MzZjOTA1ZTA0ZDc3LgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0t CisgbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jIHwgMTEgKysrKysrLS0tLS0KKyAxIGZpbGUgY2hh bmdlZCwgNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGli ZnJlZXJkcC9jb2RlYy9jbGVhci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitpbmRleCBh OTg5YTliZmYuLjRkYmU3MjM3NiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIu YworKysrIGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitAQCAtNDk0LDE1ICs0OTQsMTYgQEAg c3RhdGljIEJPT0wgY2xlYXJfZGVjb21wcmVzc19zdWJjb2RlY3NfZGF0YShDTEVBUl9DT05URVhU KiBjbGVhciwgd1N0cmVhbSogcywKKyAJCW5YRHN0UmVsID0gblhEc3QgKyB4U3RhcnQ7CisgCQlu WURzdFJlbCA9IG5ZRHN0ICsgeVN0YXJ0OworIAorLQkJaWYgKHdpZHRoID4gbldpZHRoKQorKwkJ aWYgKDF1bGwgKiBuWERzdFJlbCArIHdpZHRoID4gbkRzdFdpZHRoKQorIAkJeworLQkJCVdMb2df RVJSKFRBRywgIndpZHRoICUiIFBSSXUxNiAiID4gbldpZHRoICUiIFBSSXUzMiAiIiwgd2lkdGgs IG5XaWR0aCk7CisrCQkJV0xvZ19FUlIoVEFHLCAiblhEc3RSZWwgJSIgUFJJdTMyICIgKyB3aWR0 aCAlIiBQUkl1MTYgIiA+IG5Ec3RXaWR0aCAlIiBQUkl1MzIgIiIsCisrCQkJICAgICAgICAgblhE c3RSZWwsIHdpZHRoLCBuRHN0V2lkdGgpOworIAkJCXJldHVybiBGQUxTRTsKKyAJCX0KKy0KKy0J CWlmIChoZWlnaHQgPiBuSGVpZ2h0KQorKwkJaWYgKDF1bGwgKiBuWURzdFJlbCArIGhlaWdodCA+ IG5Ec3RIZWlnaHQpCisgCQl7CistCQkJV0xvZ19FUlIoVEFHLCAiaGVpZ2h0ICUiIFBSSXUxNiAi ID4gbkhlaWdodCAlIiBQUkl1MzIgIiIsIGhlaWdodCwgbkhlaWdodCk7CisrCQkJV0xvZ19FUlIo VEFHLCAibllEc3RSZWwgJSIgUFJJdTMyICIgKyBoZWlnaHQgJSIgUFJJdTE2ICIgPiBuRHN0SGVp Z2h0ICUiIFBSSXUzMiAiIiwKKysJCQkgICAgICAgICBuWURzdFJlbCwgaGVpZ2h0LCBuRHN0SGVp Z2h0KTsKKyAJCQlyZXR1cm4gRkFMU0U7CisgCQl9CisgCistLSAKKzIuNTMuMAorCgpkaWZmIC0t Z2l0IGEvY29kZWMtY2xlYXItZml4LW9mZi1ieS1vbmUtbGVuZ3RoLWNoZWNrLnBhdGNoIGIvY29k ZWMtY2xlYXItZml4LW9mZi1ieS1vbmUtbGVuZ3RoLWNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMDBjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1j bGVhci1maXgtb2ZmLWJ5LW9uZS1sZW5ndGgtY2hlY2sucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAor RnJvbSA1YjAzZGIzOTI2YmQ3YmMxYmY1ODE5ZGUwNjhlZDcxYTczYjI1MjM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRl OiBUaHUsIDIyIEphbiAyMDI2IDEyOjQ5OjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2Rl YyxjbGVhcl0gZml4IG9mZiBieSBvbmUgbGVuZ3RoIGNoZWNrCisKK0JhY2twb3J0IG9mIGNvbW1p dCBmODY4OGI1N2Y2Y2ZhZDlhMGIwNTQ3NWE2YWZiZGUzNTVmZmFiNzIwLgorCitDby1BdXRob3Jl ZC1CeTogQ2xhdWRlIDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBsaWJmcmVlcmRwL2Nv ZGVjL2NsZWFyLmMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jIGIv bGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitpbmRleCAwOWY1ZGFkNmQuLjRmMGFlYWQxMCAxMDA2 NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworKysrIGIvbGliZnJlZXJkcC9jb2Rl Yy9jbGVhci5jCitAQCAtODgxLDExICs4ODEsMTQgQEAgc3RhdGljIEJPT0wgY2xlYXJfZGVjb21w cmVzc19iYW5kc19kYXRhKENMRUFSX0NPTlRFWFQqIGNsZWFyLCB3U3RyZWFtKiBzLCBVSU5UMzIK KyAJCQkJaWYgKGNvdW50ID4gbkhlaWdodCkKKyAJCQkJCWNvdW50ID0gbkhlaWdodDsKKyAKKy0J CQkJaWYgKG5YRHN0UmVsICsgaSA+IG5Ec3RXaWR0aCkKKysJCQkJaWYgKG5YRHN0UmVsICsgaSA+ PSBuRHN0V2lkdGgpCisgCQkJCQlyZXR1cm4gRkFMU0U7CisgCisgCQkJCWZvciAoVUlOVDMyIHkg PSAwOyB5IDwgY291bnQ7IHkrKykKKyAJCQkJeworKwkJCQkJaWYgKG5ZRHN0UmVsICsgeSA+PSBu RHN0SGVpZ2h0KQorKwkJCQkJCXJldHVybiBGQUxTRTsKKysKKyAJCQkJCUJZVEUqIHBEc3RQaXhl bDggPSAmcERzdERhdGFbKChuWURzdFJlbCArIHkpICogbkRzdFN0ZXApICsKKyAJCQkJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChuWERzdFJlbCArIGkpICogR2V0Qnl0ZXNQZXJQaXhl bChEc3RGb3JtYXQpKV07CisgCQkJCQlVSU5UMzIgY29sb3IgPSBSZWFkQ29sb3IoY3BTcmNQaXhl bCwgY2xlYXItPmZvcm1hdCk7CistLSAKKzIuNTIuMAorCgpkaWZmIC0tZ2l0IGEvY29kZWMtY2xl YXItdXBkYXRlLUNMRUFSX1ZCQVJfRU5UUlktc2l6ZS1hZnRlci1hbGxvYy5wYXRjaCBiL2NvZGVj LWNsZWFyLXVwZGF0ZS1DTEVBUl9WQkFSX0VOVFJZLXNpemUtYWZ0ZXItYWxsb2MucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZmZTg0YQotLS0gL2Rldi9udWxsCisr KyBiL2NvZGVjLWNsZWFyLXVwZGF0ZS1DTEVBUl9WQkFSX0VOVFJZLXNpemUtYWZ0ZXItYWxsb2Mu cGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhMmRkZTZkOTgzMmNiMDMyZThjZjEyY2FiM2Rh ODRkYWZiYWI5MDA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkg PG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDEwIEFwciAyMDI2IDExOjMyOjA5ICswMjAw CitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxjbGVhcl0gdXBkYXRlIENMRUFSX1ZCQVJfRU5UUlk6 OnNpemUgYWZ0ZXIgYWxsb2MKKworQmFja3BvcnQgb2YgY29tbWl0IGEyZGRlNmQ5ODMyY2IwMzJl OGNmMTJjYWIzZGE4NGRhZmJhYjkwMDYuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBsaWJm cmVlcmRwL2NvZGVjL2NsZWFyLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFy LmMgYi9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKK2luZGV4IGUzOGZhMGQuLmVkYTMwYWQgMTAw NjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKKysrKyBiL2xpYmZyZWVyZHAvY29k ZWMvY2xlYXIuYworQEAgLTU2NSw3ICs1NjUsNiBAQCBzdGF0aWMgQk9PTCByZXNpemVfdmJhcl9l bnRyeShDTEVBUl9DT05URVhUKiBjbGVhciwgQ0xFQVJfVkJBUl9FTlRSWSogdkJhckVudHJ5KQor IAkJY29uc3QgVUlOVDMyIG9sZFBvcyA9IHZCYXJFbnRyeS0+c2l6ZSAqIGJwcDsKKyAJCWNvbnN0 IFVJTlQzMiBkaWZmU2l6ZSA9ICh2QmFyRW50cnktPmNvdW50IC0gdkJhckVudHJ5LT5zaXplKSAq IGJwcDsKKyAJCUJZVEUqIHRtcDsKKy0JCXZCYXJFbnRyeS0+c2l6ZSA9IHZCYXJFbnRyeS0+Y291 bnQ7CisgCQl0bXAgPSAoQllURSopcmVhbGxvYyh2QmFyRW50cnktPnBpeGVscywgMXVsbCAqIHZC YXJFbnRyeS0+Y291bnQgKiBicHApOworIAorIAkJaWYgKCF0bXApCitAQCAtNTc2LDYgKzU3NSw3 IEBAIHN0YXRpYyBCT09MIHJlc2l6ZV92YmFyX2VudHJ5KENMRUFSX0NPTlRFWFQqIGNsZWFyLCBD TEVBUl9WQkFSX0VOVFJZKiB2QmFyRW50cnkpCisgCisgCQltZW1zZXQoJnRtcFtvbGRQb3NdLCAw LCBkaWZmU2l6ZSk7CisgCQl2QmFyRW50cnktPnBpeGVscyA9IHRtcDsKKysJCXZCYXJFbnRyeS0+ c2l6ZSA9IHZCYXJFbnRyeS0+Y291bnQ7CisgCX0KKyAKKyAJaWYgKCF2QmFyRW50cnktPnBpeGVs cyAmJiB2QmFyRW50cnktPnNpemUpCistLSAKKzIuNDkuMAorCgpkaWZmIC0tZ2l0IGEvY29kZWMt Y2xlYXItdXBkYXRlLWNsZWFyX2dseXBoX2VudHJ5LWNvdW50LWFmdGVyLWFsbG9jLnBhdGNoIGIv Y29kZWMtY2xlYXItdXBkYXRlLWNsZWFyX2dseXBoX2VudHJ5LWNvdW50LWFmdGVyLWFsbG9jLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZTRjNmUKLS0tIC9kZXYv bnVsbAorKysgYi9jb2RlYy1jbGVhci11cGRhdGUtY2xlYXJfZ2x5cGhfZW50cnktY291bnQtYWZ0 ZXItYWxsb2MucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSA5NDdmZWVhZGZkZGYwMWQzMGRk YTVhYTE2ZWJjMzM1YmZjYzIzYWUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25k cmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI5IEFwciAyMDI2IDEzOjQy OjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxjbGVhcl0gVXBkYXRlIENMRUFSX0dM WVBIX0VOVFJZOjpjb3VudCBhZnRlciBhbGxvYworCitCYWNrcG9ydCBvZiBjb21taXQgYzQ5ZDFh ZDQzYjhjN2IzMjc5NGQwMjUwZjI2MjNjMmRjY2Q3ZWYyNS4KKworQWRhcHRlZCBmb3IgMi4xMS43 OiB1c2VzIEdldEJ5dGVzUGVyUGl4ZWwgaW5zdGVhZCBvZiBGcmVlUkRQR2V0Qnl0ZXNQZXJQaXhl bCwKK3BsYWluIHJlYWxsb2MgaW5zdGVhZCBvZiB3aW5wcl9hbGlnbmVkX3JlY2FsbG9jOyBvdmVy ZmxvdyBjaGVja3MgbWF0Y2ggdXBzdHJlYW0KKyhzaXplX3QgY291bnQsIGhsaW1pdCAvIGV4Y2Vl ZGVkIGxvZ2dpbmcpOyBnbHlwaEVudHJ5LT5jb3VudCBzZXQgdmlhIChVSU5UMzIpY2FzdAorYWZ0 ZXIgc3VjY2Vzc2Z1bCByZWFsbG9jLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgbGliZnJl ZXJkcC9jb2RlYy9jbGVhci5jIHwgMjIgKysrKysrKysrKysrKysrKystLS0tLQorIDEgZmlsZSBj aGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv bGliZnJlZXJkcC9jb2RlYy9jbGVhci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCistLS0g YS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIu YworQEAgLTk3OSwyMCArOTc5LDMxIEBACisgCXsKKyAJCWNvbnN0IFVJTlQzMiBicHAgPSBHZXRC eXRlc1BlclBpeGVsKGNsZWFyLT5mb3JtYXQpOworIAkJQ0xFQVJfR0xZUEhfRU5UUlkqIGdseXBo RW50cnkgPSAmKGNsZWFyLT5HbHlwaENhY2hlW2dseXBoSW5kZXhdKTsKKy0JCWdseXBoRW50cnkt PmNvdW50ID0gbldpZHRoICogbkhlaWdodDsKKysJCWNvbnN0IHNpemVfdCBjb3VudCA9IDF1bGwg KiBuV2lkdGggKiBuSGVpZ2h0OworKwkJY29uc3Qgc2l6ZV90IGhsaW1pdCA9IFNJWkVfTUFYIC8g KChuV2lkdGggPiAwKSA/IG5XaWR0aCA6IDEpOworKwkJaWYgKChuV2lkdGggPT0gMCkgfHwgKG5I ZWlnaHQgPT0gMCkgfHwgKGhsaW1pdCA8IG5IZWlnaHQpKQorKwkJeworKwkJCWNvbnN0IGNoYXIq IGV4Y2VlZGVkID0gKGhsaW1pdCA8IG5IZWlnaHQpID8gIndpdGhpbiIgOiAib3V0c2lkZSI7Cisr CQkJV0xvZ19FUlIoVEFHLAorKwkJCSAgICAgICAgICJDTEVBUkNPREVDX0ZMQUdfR0xZUEhfSU5E RVg6IG5XaWR0aD0lIiBQUkl1MzIgIiwgbkhlaWdodD0lIiBQUkl1MzIKKysJCQkgICAgICAgICAi LCBuV2lkdGggKiBuSGVpZ2h0IGlzICVzIGFsbG93ZWQgcmFuZ2UiLAorKwkJCSAgICAgICAgIG5X aWR0aCwgbkhlaWdodCwgZXhjZWVkZWQpOworKwkJCXJldHVybiBGQUxTRTsKKysJCX0KKyAKKy0J CWlmIChnbHlwaEVudHJ5LT5jb3VudCA+IGdseXBoRW50cnktPnNpemUpCisrCQlpZiAoY291bnQg PiBnbHlwaEVudHJ5LT5zaXplKQorIAkJeworIAkJCUJZVEUqIHRtcDsKKy0JCQl0bXAgPSByZWFs bG9jKGdseXBoRW50cnktPnBpeGVscywgMXVsbCAqIGdseXBoRW50cnktPmNvdW50ICogYnBwKTsK KysJCQl0bXAgPSByZWFsbG9jKGdseXBoRW50cnktPnBpeGVscywgMXVsbCAqIGNvdW50ICogYnBw KTsKKyAKKyAJCQlpZiAoIXRtcCkKKyAJCQl7CistCQkJCVdMb2dfRVJSKFRBRywgImdseXBoRW50 cnktPnBpeGVscyByZWFsbG9jICUiIFBSSXUzMiAiIGZhaWxlZCEiLAorLQkJCQkgICAgICAgICBn bHlwaEVudHJ5LT5jb3VudCAqIGJwcCk7CisrCQkJCVdMb2dfRVJSKFRBRywgImdseXBoRW50cnkt PnBpeGVscyByZWFsbG9jICUiIFBSSXV6ICIgZmFpbGVkISIsCisrCQkJCSAgICAgICAgIGNvdW50 ICogYnBwKTsKKyAJCQkJcmV0dXJuIEZBTFNFOworIAkJCX0KKyAKKysJCQlnbHlwaEVudHJ5LT5j b3VudCA9IChVSU5UMzIpY291bnQ7CisgCQkJZ2x5cGhFbnRyeS0+c2l6ZSA9IGdseXBoRW50cnkt PmNvdW50OworIAkJCWdseXBoRW50cnktPnBpeGVscyA9IChVSU5UMzIqKXRtcDsKKyAJCX0KCmRp ZmYgLS1naXQgYS9jb2RlYy1jb2xvci1hZGQtZnJlZXJkcF9nbHlwaF9jb252ZXJ0X2V4LnBhdGNo IGIvY29kZWMtY29sb3ItYWRkLWZyZWVyZHBfZ2x5cGhfY29udmVydF9leC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTdmMTI2Ci0tLSAvZGV2L251bGwKKysrIGIv Y29kZWMtY29sb3ItYWRkLWZyZWVyZHBfZ2x5cGhfY29udmVydF9leC5wYXRjaApAQCAtMCwwICsx LDExNCBAQAorRnJvbSBiNTQwMDNhZDJkY2I2OWIzYzc4MzZhZTE0NDVjNDhhZjhiMzljZDRjIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5j b20+CitEYXRlOiBTYXQsIDI4IE1hciAyMDI2IDEyOjEzOjA0ICswMTAwCitTdWJqZWN0OiBbUEFU Q0hdIFtjb2RlYyxjb2xvcl0gYWRkIGZyZWVyZHBfZ2x5cGhfY29udmVydF9leAorCitCYWNrcG9y dCBvZiBjb21taXQgM2JjMWVlYjRmNjNjZWVjOWE2OTZhZjE5NGU0YzFlYTBlNjdmZjYwYy4KKwor TWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGxpYmZyZWVyZHAvY29kZWMvY29sb3IuYyAgfCAxMiAr KysrKysrKystLQorIGxpYmZyZWVyZHAvZ2RpL2dyYXBoaWNzLmMgfCA0NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL2Nv bG9yLmMgYi9saWJmcmVlcmRwL2NvZGVjL2NvbG9yLmMKK2luZGV4IGY4NDY3YzI5NS4uNGM3MmVl M2U2IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9jb2xvci5jCisrKysgYi9saWJmcmVl cmRwL2NvZGVjL2NvbG9yLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN0ZGxpYi5o PgorIAorICNpbmNsdWRlIDx3aW5wci9jcnQuaD4KKysjaW5jbHVkZSA8d2lucHIvYXNzZXJ0Lmg+ CisgCisgI2luY2x1ZGUgPGZyZWVyZHAvbG9nLmg+CisgI2luY2x1ZGUgPGZyZWVyZHAvZnJlZXJk cC5oPgorQEAgLTQ5LDEzICs1MCwyMCBAQCBCWVRFKiBmcmVlcmRwX2dseXBoX2NvbnZlcnQoVUlO VDMyIHdpZHRoLCBVSU5UMzIgaGVpZ2h0LCBjb25zdCBCWVRFKiBkYXRhKQorIAljb25zdCBCWVRF KiBzcmNwOworIAlCWVRFKiBkc3RwOworIAlCWVRFKiBkc3REYXRhOworLQlVSU5UMzIgc2Nhbmxp bmU7CisrCXNpemVfdCBzY2FubGluZTsKKysKKyAJLyoKKyAJICogY29udmVydHMgYSAxLWJpdC1w ZXItcGl4ZWwgZ2x5cGggdG8gYSBvbmUtYnl0ZS1wZXItcGl4ZWwgZ2x5cGg6CisgCSAqIHRoaXMg YXBwcm9hY2ggdXNlcyBhIGxpdHRsZSBtb3JlIG1lbW9yeSwgYnV0IHByb3ZpZGVzIGZhc3Rlcgor IAkgKiBtZWFucyBvZiBhY2Nlc3NpbmcgaW5kaXZpZHVhbCBwaXhlbHMgaW4gYmxpdHRpbmcgb3Bl cmF0aW9ucworIAkgKi8KKy0Jc2NhbmxpbmUgPSAod2lkdGggKyA3KSAvIDg7CisrCXNjYW5saW5l ID0gKHdpZHRoICsgN3VsbCkgLyA4dWxsOworKworKwlpZiAoKHdpZHRoID09IDApIHx8IChoZWln aHQgPT0gMCkpCisrCQlyZXR1cm4gTlVMTDsKKysKKysJV0lOUFJfQVNTRVJUKGRhdGEpOworKwor IAlkc3REYXRhID0gKEJZVEUqKV9hbGlnbmVkX21hbGxvYygxdWxsICogd2lkdGggKiBoZWlnaHQs IDE2KTsKKyAKKyAJaWYgKCFkc3REYXRhKQorZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvZ2RpL2dy YXBoaWNzLmMgYi9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jCitpbmRleCA0NzllYWM5YjguLmRh YjE1OWM0MyAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvZ2RpL2dyYXBoaWNzLmMKKysrKyBiL2xp YmZyZWVyZHAvZ2RpL2dyYXBoaWNzLmMKK0BAIC0yMyw2ICsyMyw3IEBACisgI2luY2x1ZGUgImNv bmZpZy5oIgorICNlbmRpZgorIAorKyNpbmNsdWRlIDx3aW5wci9hc3NlcnQuaD4KKyAjaW5jbHVk ZSA8d2lucHIvY3J0Lmg+CisgCisgI2luY2x1ZGUgPGZyZWVyZHAvbG9nLmg+CitAQCAtMjE1LDYg KzIxNiw1MCBAQCBzdGF0aWMgQk9PTCBnZGlfQml0bWFwX1NldFN1cmZhY2UocmRwQ29udGV4dCog Y29udGV4dCwgcmRwQml0bWFwKiBiaXRtYXAsIEJPT0wgcAorIH0KKyAKKyAvKiBHbHlwaCBDbGFz cyAqLworK3N0YXRpYyBCWVRFKiBmcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgoVUlOVDMyIHdpZHRo LCBVSU5UMzIgaGVpZ2h0LCBjb25zdCBCWVRFKiBkYXRhLCBzaXplX3QgbGVuKQorK3sKKysJLyoK KysJICogY29udmVydHMgYSAxLWJpdC1wZXItcGl4ZWwgZ2x5cGggdG8gYSBvbmUtYnl0ZS1wZXIt cGl4ZWwgZ2x5cGg6CisrCSAqIHRoaXMgYXBwcm9hY2ggdXNlcyBhIGxpdHRsZSBtb3JlIG1lbW9y eSwgYnV0IHByb3ZpZGVzIGZhc3RlcgorKwkgKiBtZWFucyBvZiBhY2Nlc3NpbmcgaW5kaXZpZHVh bCBwaXhlbHMgaW4gYmxpdHRpbmcgb3BlcmF0aW9ucworKwkgKi8KKysJY29uc3Qgc2l6ZV90IHNj YW5saW5lID0gKHdpZHRoICsgN3VsbCkgLyA4dWxsOworKwljb25zdCBzaXplX3QgcmVxdWlyZWQg PSBzY2FubGluZSAqIGhlaWdodDsKKysJaWYgKGxlbiA8IHJlcXVpcmVkKQorKwkJcmV0dXJuIE5V TEw7CisrCisrCWlmICgobGVuID09IDApIHx8ICh3aWR0aCA9PSAwKSB8fCAoaGVpZ2h0ID09IDAp KQorKwkJcmV0dXJuIE5VTEw7CisrCisrCVdJTlBSX0FTU0VSVChkYXRhKTsKKysKKysJQllURSog ZHN0RGF0YSA9IChCWVRFKilfYWxpZ25lZF9tYWxsb2MoMXVsbCAqIHdpZHRoICogaGVpZ2h0LCAx Nik7CisrCisrCWlmICghZHN0RGF0YSkKKysJCXJldHVybiBOVUxMOworKworKwlaZXJvTWVtb3J5 KGRzdERhdGEsIDFVTEwgKiB3aWR0aCAqIGhlaWdodCk7CisrCUJZVEUqIGRzdHAgPSBkc3REYXRh OworKworKwlmb3IgKFVJTlQzMiB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorKwl7CisrCQljb25z dCBCWVRFKiBzcmNwID0gJmRhdGFbMXVsbCAqIHkgKiBzY2FubGluZV07CisrCisrCQlmb3IgKFVJ TlQzMiB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisrCQl7CisrCQkJaWYgKCgqc3JjcCAmICgweDgw ID4+ICh4ICUgOCkpKSAhPSAwKQorKwkJCQkqZHN0cCA9IDB4RkY7CisrCisrCQkJZHN0cCsrOwor KworKwkJCWlmICgoKHggKyAxKSAlIDggPT0gMCkgJiYgeCAhPSAwKQorKwkJCQlzcmNwKys7Cisr CQl9CisrCX0KKysKKysJcmV0dXJuIGRzdERhdGE7CisrfQorKworIHN0YXRpYyBCT09MIGdkaV9H bHlwaF9OZXcocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgcmRwR2x5cGgqIGdseXBoKQorIHsK KyAJQllURSogZGF0YTsKKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jb2RlYy1kc3AtYWRk LWZvcm1hdC1jaGVja3MucGF0Y2ggYi9jb2RlYy1kc3AtYWRkLWZvcm1hdC1jaGVja3MucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEyMzg3MAotLS0gL2Rldi9udWxs CisrKyBiL2NvZGVjLWRzcC1hZGQtZm9ybWF0LWNoZWNrcy5wYXRjaApAQCAtMCwwICsxLDIxOCBA QAorRnJvbSA3NGZmOGEwOTdjMzYwNjcxMDMyN2UzYWYyODYzYWE1MmQyZGFjNzllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitE YXRlOiBUdWUsIDI5IEFwciAyMDI2IDE1OjEwOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtj b2RlYyxkc3BdIGFkZCBmb3JtYXQgY2hlY2tzCisKK0JhY2twb3J0IG9mIGNvbW1pdCAwM2I0OGIz NjAxZDg2N2FmY2NhYzFjZGM2MDgxZGU3YTI3NWVkY2U3LgorCitBZGFwdGVkIGZvciAyLjExLng6 IHVzZXMgYGNvbnRleHQtPmZvcm1hdGAgaW5zdGVhZCBvZgorYGNvbnRleHQtPmNvbW1vbi5mb3Jt YXRgLCBubyBgV0lOUFJfUkVTVFJJQ1RgLCBhZGRlZAorYCNpbmNsdWRlIDx3aW5wci9hc3NlcnQu aD5gLiBLZXB0IEM4OSBkZWNsYXJhdGlvbiBzdHlsZSBpbgorYGZyZWVyZHBfZHNwX2RlY29kZV9t cDNgIGFuZCBgZnJlZXJkcF9kc3BfZW5jb2RlX21wM2AuIE9taXR0ZWQKK0xBTUUvbXAzIHZhcmlh YmxlIG1vZGVybml6YXRpb24uIERWSV9BRFBDTSBibG9jayBpbgorYGZyZWVyZHBfZHNwX2NvbnRl eHRfcmVzZXRgIG9taXRzIEZyYW1lc1BlclBhY2tldCBzaXppbmcgZnJvbSB1cHN0cmVhbSAzLngK K2J1dCBhZGRzIGBTdHJlYW1fU2V0UG9zaXRpb24oY29udGV4dC0+YnVmZmVyLCAwKWAgYWZ0ZXIg dmFsaWRhdGlvbiAoc2FtZQoraW50ZW50IGFzIHVwc3RyZWFtIGBTdHJlYW1fUmVzZXRQb3NpdGlv bmApLiBgZnJlZXJkcF9kc3BfZGVjb2RlX2ltYV9hZHBjbWAKK21hdGNoZXMgdXBzdHJlYW0gb3Jk ZXI6IHZhbGlkYXRlIGZvcm1hdCBiZWZvcmUgbG9jYWxzOyBgb3V0X3NpemVgIHVzZXMKK2BzaXpl ICogNHVsbGAuIGBTdHJlYW1fQnVmZmVyQXNgIHJlcGxhY2VkIHdpdGgKK2BTdHJlYW1fQnVmZmVy YCBjYXN0LiBgbnVsbHB0cmAgcmVwbGFjZWQgd2l0aCBgTlVMTGAuCisKK01hZGUtd2l0aDogQ3Vy c29yCistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL2RzcC5jIHwgOTYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2Vk LCA5MyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJl ZXJkcC9jb2RlYy9kc3AuYyBiL2xpYmZyZWVyZHAvY29kZWMvZHNwLmMKK2luZGV4IGExOGQwNDQu LmU3OTkxMWQgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2RzcC5jCisrKysgYi9saWJm cmVlcmRwL2NvZGVjL2RzcC5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDxzdHJpbmcu aD4KKyAKKyAjaW5jbHVkZSA8d2lucHIvY3J0Lmg+CisrI2luY2x1ZGUgPHdpbnByL2Fzc2VydC5o PgorIAorICNpbmNsdWRlIDxmcmVlcmRwL3R5cGVzLmg+CisgI2luY2x1ZGUgPGZyZWVyZHAvbG9n Lmg+CitAQCAtMzI5LDEzICszMzAsMzAgQEAKKyAJcmV0dXJuIChVSU5UMTYpZDsKKyB9CisgCisr c3RhdGljIEJPT0wgdmFsaWRfaW1hX2FkcGNtX2Zvcm1hdChjb25zdCBGUkVFUkRQX0RTUF9DT05U RVhUKiBjb250ZXh0KQorK3sKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQpOworKwlpZiAoY29udGV4 dC0+Zm9ybWF0LndGb3JtYXRUYWcgIT0gV0FWRV9GT1JNQVRfRFZJX0FEUENNKQorKwkJcmV0dXJu IEZBTFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0Lm5CbG9ja0FsaWduIDw9IDRVTEwpCisrCQly ZXR1cm4gRkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQubkNoYW5uZWxzIDwgMSkKKysJCXJl dHVybiBGQUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC53Qml0c1BlclNhbXBsZSA9PSAwKQor KwkJcmV0dXJuIEZBTFNFOworKwlyZXR1cm4gVFJVRTsKKyt9CisrCisgc3RhdGljIEJPT0wgZnJl ZXJkcF9kc3BfZGVjb2RlX2ltYV9hZHBjbShGUkVFUkRQX0RTUF9DT05URVhUKiBjb250ZXh0LCBj b25zdCBCWVRFKiBzcmMsIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd1N0cmVhbSogb3V0KQorIHsKKysJaWYgKCF2YWxpZF9pbWFfYWRwY21f Zm9ybWF0KGNvbnRleHQpKQorKwkJcmV0dXJuIEZBTFNFOworKworIAlCWVRFKiBkc3Q7CisgCUJZ VEUgc2FtcGxlOworIAlVSU5UMTYgZGVjb2RlZDsKKy0Jc2l6ZV90IG91dF9zaXplID0gc2l6ZSAq IDQ7CisrCXNpemVfdCBvdXRfc2l6ZSA9IHNpemUgKiA0dWxsOworIAlVSU5UMzIgY2hhbm5lbDsK KyAJY29uc3QgVUlOVDMyIGJsb2NrX3NpemUgPSBjb250ZXh0LT5mb3JtYXQubkJsb2NrQWxpZ247 CisgCWNvbnN0IFVJTlQzMiBjaGFubmVscyA9IGNvbnRleHQtPmZvcm1hdC5uQ2hhbm5lbHM7CitA QCAtNDY0LDYgKzQ4MiwyMCBAQAorICNlbmRpZgorIAorICNpZiBkZWZpbmVkKFdJVEhfTEFNRSkK KytzdGF0aWMgQk9PTCB2YWxpZF9tcDNfZm9ybWF0KGNvbnN0IEZSRUVSRFBfRFNQX0NPTlRFWFQq IGNvbnRleHQpCisreworKwlXSU5QUl9BU1NFUlQoY29udGV4dCk7CisrCWlmIChjb250ZXh0LT5m b3JtYXQud0Zvcm1hdFRhZyAhPSBXQVZFX0ZPUk1BVF9NUEVHTEFZRVIzKQorKwkJcmV0dXJuIEZB TFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0Lm5DaGFubmVscyA8IDEpCisrCQlyZXR1cm4gRkFM U0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQud0JpdHNQZXJTYW1wbGUgPT0gMCkKKysJCXJldHVy biBGQUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uU2FtcGxlc1BlclNlYyA9PSAwKQorKwkJ cmV0dXJuIEZBTFNFOworKwlyZXR1cm4gVFJVRTsKKyt9CisrCisgc3RhdGljIEJPT0wgZnJlZXJk cF9kc3BfZGVjb2RlX21wMyhGUkVFUkRQX0RTUF9DT05URVhUKiBjb250ZXh0LCBjb25zdCBCWVRF KiBzcmMsIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d1N0cmVhbSogb3V0KQorIHsKK0BAIC00NzQsNiArNTA2LDggQEAKKyAKKyAJaWYgKCFjb250ZXh0 IHx8ICFzcmMgfHwgIW91dCkKKyAJCXJldHVybiBGQUxTRTsKKysJaWYgKCF2YWxpZF9tcDNfZm9y bWF0KGNvbnRleHQpKQorKwkJcmV0dXJuIEZBTFNFOworIAorIAlidWZmZXJfc2l6ZSA9IDIgKiBj b250ZXh0LT5mb3JtYXQubkNoYW5uZWxzICogY29udGV4dC0+Zm9ybWF0Lm5TYW1wbGVzUGVyU2Vj OworIAorQEAgLTUwOSw2ICs1NDMsOSBAQAorIAlpZiAoIWNvbnRleHQgfHwgIXNyYyB8fCAhb3V0 KQorIAkJcmV0dXJuIEZBTFNFOworIAorKwlpZiAoIXZhbGlkX21wM19mb3JtYXQoY29udGV4dCkp CisrCQlyZXR1cm4gRkFMU0U7CisrCisgCXNhbXBsZXNfcGVyX2NoYW5uZWwgPSBzaXplIC8gY29u dGV4dC0+Zm9ybWF0Lm5DaGFubmVscyAvIGNvbnRleHQtPmZvcm1hdC53Qml0c1BlclNhbXBsZSAv IDg7CisgCisgCS8qIEVuc3VyZSB3b3JzdCBjYXNlIGJ1ZmZlciBzaXplIGZvciBtcDMgc3RyZWFt IHRha2VuIGZyb20gTEFNRSBoZWFkZXIgKi8KK0BAIC03MTYsNiArNzUzLDEwIEBACisgCUJZVEUg ZW5jb2RlZDsKKyAJc2l6ZV90IG91dF9zaXplOworIAlzaXplX3QgYWxpZ247CisrCisrCWlmICgh dmFsaWRfaW1hX2FkcGNtX2Zvcm1hdChjb250ZXh0KSkKKysJCXJldHVybiBGQUxTRTsKKysKKyAJ b3V0X3NpemUgPSBzaXplIC8gMjsKKyAKKyAJaWYgKCFTdHJlYW1fRW5zdXJlUmVtYWluaW5nQ2Fw YWNpdHkob3V0LCBzaXplKSkKK0BAIC03ODgsNiArODI5LDIwIEBACisgCisgc3RhdGljIGNvbnN0 IElOVDMyIG1zX2FkcGNtX2NvZWZmczJbN10gPSB7IDAsIC0yNTYsIDAsIDY0LCAwLCAtMjA4LCAt MjMyIH07CisgCisrc3RhdGljIEJPT0wgdmFsaWRfbXNfYWRwY21fZm9ybWF0KGNvbnN0IEZSRUVS RFBfRFNQX0NPTlRFWFQqIGNvbnRleHQpCisreworKwlXSU5QUl9BU1NFUlQoY29udGV4dCk7Cisr CWlmIChjb250ZXh0LT5mb3JtYXQud0Zvcm1hdFRhZyAhPSBXQVZFX0ZPUk1BVF9BRFBDTSkKKysJ CXJldHVybiBGQUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uQmxvY2tBbGlnbiA8PSA0VUxM KQorKwkJcmV0dXJuIEZBTFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0Lm5DaGFubmVscyA8IDEp CisrCQlyZXR1cm4gRkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQud0JpdHNQZXJTYW1wbGUg PT0gMCkKKysJCXJldHVybiBGQUxTRTsKKysJcmV0dXJuIFRSVUU7CisrfQorKworIHN0YXRpYyBJ TkxJTkUgSU5UMTYgZnJlZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNtX3NhbXBsZShBRFBDTSogYWRw Y20sIEJZVEUgc2FtcGxlLCBpbnQgY2hhbm5lbCkKKyB7CisgCUlOVDggbmliYmxlOworQEAgLTgx OSw2ICs4NzQsOSBAQAorIAlCWVRFKiBkc3Q7CisgCUJZVEUgc2FtcGxlOworIAljb25zdCBzaXpl X3Qgb3V0X3NpemUgPSBzaXplICogNDsKKysKKysJaWYgKCF2YWxpZF9tc19hZHBjbV9mb3JtYXQo Y29udGV4dCkpCisrCQlyZXR1cm4gRkFMU0U7CisgCWNvbnN0IFVJTlQzMiBjaGFubmVscyA9IGNv bnRleHQtPmZvcm1hdC5uQ2hhbm5lbHM7CisgCWNvbnN0IFVJTlQzMiBibG9ja19zaXplID0gY29u dGV4dC0+Zm9ybWF0Lm5CbG9ja0FsaWduOworIAorQEAgLTk0Nyw2ICsxMDA1LDEwIEBACisgCUlO VDMyIHNhbXBsZTsKKyAJc2l6ZV90IG91dF9zaXplOworIAljb25zdCBzaXplX3Qgc3RlcCA9IDgg KyAoKGNvbnRleHQtPmZvcm1hdC5uQ2hhbm5lbHMgPiAxKSA/IDQgOiAwKTsKKysKKysJaWYgKCF2 YWxpZF9tc19hZHBjbV9mb3JtYXQoY29udGV4dCkpCisrCQlyZXR1cm4gRkFMU0U7CisrCisgCW91 dF9zaXplID0gc2l6ZSAvIDI7CisgCisgCWlmICghU3RyZWFtX0Vuc3VyZVJlbWFpbmluZ0NhcGFj aXR5KG91dCwgc2l6ZSkpCitAQCAtMTMwOCw2ICsxMzcwLDI4IEBACisgCQlyZXR1cm4gRkFMU0U7 CisgCisgCWNvbnRleHQtPmZvcm1hdCA9ICp0YXJnZXRGb3JtYXQ7CisrCisrCXN3aXRjaCAoY29u dGV4dC0+Zm9ybWF0LndGb3JtYXRUYWcpCisrCXsKKysjaWYgZGVmaW5lZChXSVRIX0xBTUUpCisr CQljYXNlIFdBVkVfRk9STUFUX01QRUdMQVlFUjM6CisrCQkJaWYgKCF2YWxpZF9tcDNfZm9ybWF0 KGNvbnRleHQpKQorKwkJCQlyZXR1cm4gRkFMU0U7CisrCQkJYnJlYWs7CisrI2VuZGlmCisrCQlj YXNlIFdBVkVfRk9STUFUX0FEUENNOgorKwkJCWlmICghdmFsaWRfbXNfYWRwY21fZm9ybWF0KGNv bnRleHQpKQorKwkJCQlyZXR1cm4gRkFMU0U7CisrCQkJYnJlYWs7CisrCQljYXNlIFdBVkVfRk9S TUFUX0RWSV9BRFBDTToKKysJCQlpZiAoIXZhbGlkX2ltYV9hZHBjbV9mb3JtYXQoY29udGV4dCkp CisrCQkJCXJldHVybiBGQUxTRTsKKysJCQlTdHJlYW1fU2V0UG9zaXRpb24oY29udGV4dC0+YnVm ZmVyLCAwKTsKKysJCQlicmVhazsKKysJCWRlZmF1bHQ6CisrCQkJYnJlYWs7CisrCX0KKysKKyAj aWYgZGVmaW5lZChXSVRIX0ZBQUQyKQorIAljb250ZXh0LT5mYWFkU2V0dXAgPSBGQUxTRTsKKyAj ZW5kaWYKK0BAIC0xMzI4LDE5ICsxNDEyLDI0IEBACisgCisgCQljZmcgPSBmYWFjRW5jR2V0Q3Vy cmVudENvbmZpZ3VyYXRpb24oY29udGV4dC0+ZmFhYyk7CisgCQljZmctPmJpdFJhdGUgPSAxMDAw MDsKKy0JCWZhYWNFbmNTZXRDb25maWd1cmF0aW9uKGNvbnRleHQtPmZhYWMsIGNmZyk7CisrCQl7 CisrCQkJY29uc3QgaW50IGZyYyA9IGZhYWNFbmNTZXRDb25maWd1cmF0aW9uKGNvbnRleHQtPmZh YWMsIGNmZyk7CisrCQkJaWYgKGZyYyA8PSAwKQorKwkJCQlyZXR1cm4gRkFMU0U7CisrCQl9Cisg CX0KKyAKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChXSVRIX1NPWFIpCisgCXsKKyAJCXNveHJfaW9f c3BlY190IGlvc3BlYyA9IHNveHJfaW9fc3BlYyhTT1hSX0lOVDE2LCBTT1hSX0lOVDE2KTsKKy0J CXNveHJfZXJyb3JfdCBlcnJvcjsKKysJCXNveHJfZXJyb3JfdCBlcnJvciA9IE5VTEw7CisrCisg CQlzb3hyX2RlbGV0ZShjb250ZXh0LT5zb3gpOworIAkJY29udGV4dC0+c294ID0gc294cl9jcmVh dGUoY29udGV4dC0+Zm9ybWF0Lm5TYW1wbGVzUGVyU2VjLCB0YXJnZXRGb3JtYXQtPm5TYW1wbGVz UGVyU2VjLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Rm9ybWF0LT5uQ2hh bm5lbHMsICZlcnJvciwgJmlvc3BlYywgTlVMTCwgTlVMTCk7CisgCistCQlpZiAoIWNvbnRleHQt PnNveCB8fCAoZXJyb3IgIT0gMCkpCisrCQlpZiAoIWNvbnRleHQtPnNveCB8fCAoZXJyb3IgIT0g TlVMTCkpCisgCQkJcmV0dXJuIEZBTFNFOworIAl9CisgI2VuZGlmCgpkaWZmIC0tZ2l0IGEvY29k ZWMtZHNwLWZpeC1hcnJheS1ib3VuZHMtY2hlY2tzLnBhdGNoIGIvY29kZWMtZHNwLWZpeC1hcnJh eS1ib3VuZHMtY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjA3NTRmZWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1kc3AtZml4LWFycmF5LWJvdW5kcy1j aGVja3MucGF0Y2gKQEAgLTAsMCArMSwyMzcgQEAKK0Zyb20gYWFmMzMzODYyZmI1NGQ0Y2ZjMTlh MTg2NmI3NjUwMGQ4NjY3OTcxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJl aiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAyNiAwNDo0MTox NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMsZHNwXSBmaXggYXJyYXkgYm91bmRzIGNo ZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgMTZkZjIzMDBlMWUzZjVhNTFmNjhmYjE2MjY0Mjll NThiNTMxYjdjOC4KKworQWRhcHRlZCBmb3IgMi4xMS54OiB1c2VzIEM4OSBkZWNsYXJhdGlvbiBz dHlsZSAodmFyaWFibGVzIGRlY2xhcmVkCithdCB0b3Agb2Ygc2NvcGUsIG5ldyB2YXJpYWJsZXMg d3JhcHBlZCBpbiBibG9ja3MpLCBubworYFdJTlBSX1JFU1RSSUNUYCwga2VwdCBgaW50IGNoYW5u ZWxgIGluIGRlY29kZSBmdW5jdGlvbiwKK2Bkc3BfZW5jb2RlX2ltYV9hZHBjbV9zYW1wbGVgIGtl ZXBzIGBpbnQgY2hhbm5lbGAuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBsaWJmcmVlcmRw L2NvZGVjL2RzcC5jIHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tCisgMSBmaWxlIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL2RzcC5jIGIvbGliZnJlZXJkcC9jb2RlYy9k c3AuYworaW5kZXggZTc5OTExZC4uNmQ0Zjc4MCAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29k ZWMvZHNwLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvZHNwLmMKK0BAIC0yOTcsNyArMjk3LDE2 IEBAIHN0YXRpYyBVSU5UMTYgZHNwX2RlY29kZV9pbWFfYWRwY21fc2FtcGxlKEFEUENNKiBhZHBj bSwgdW5zaWduZWQgaW50IGNoYW5uZWwsIEJZCisgeworIAlJTlQzMiBzczsKKyAJSU5UMzIgZDsK Ky0Jc3MgPSBpbWFfc3RlcF9zaXplX3RhYmxlW2FkcGNtLT5pbWEubGFzdF9zdGVwW2NoYW5uZWxd XTsKKysJSU5UMTYgb2Zmc2V0OworKworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8IEFSUkFZU0la RShhZHBjbS0+aW1hLmxhc3Rfc3RlcCkpOworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8IEFSUkFZ U0laRShhZHBjbS0+aW1hLmxhc3Rfc2FtcGxlKSk7CisrCisrCW9mZnNldCA9IGFkcGNtLT5pbWEu bGFzdF9zdGVwW2NoYW5uZWxdOworKwlXSU5QUl9BU1NFUlQob2Zmc2V0ID49IDApOworKwlXSU5Q Ul9BU1NFUlQob2Zmc2V0IDwgQVJSQVlTSVpFKGltYV9zdGVwX3NpemVfdGFibGUpKTsKKysKKysJ c3MgPSBpbWFfc3RlcF9zaXplX3RhYmxlW29mZnNldF07CisgCWQgPSAoc3MgPj4gMyk7CisgCisg CWlmIChzYW1wbGUgJiAxKQorQEAgLTMyMCw2ICszMjksOCBAQCBzdGF0aWMgVUlOVDE2IGRzcF9k ZWNvZGVfaW1hX2FkcGNtX3NhbXBsZShBRFBDTSogYWRwY20sIHVuc2lnbmVkIGludCBjaGFubmVs LCBCWQorIAkJZCA9IDMyNzY3OworIAorIAlhZHBjbS0+aW1hLmxhc3Rfc2FtcGxlW2NoYW5uZWxd ID0gKElOVDE2KWQ7CisrCisrCVdJTlBSX0FTU0VSVChzYW1wbGUgPCBBUlJBWVNJWkUoaW1hX3N0 ZXBfaW5kZXhfdGFibGUpKTsKKyAJYWRwY20tPmltYS5sYXN0X3N0ZXBbY2hhbm5lbF0gKz0gaW1h X3N0ZXBfaW5kZXhfdGFibGVbc2FtcGxlXTsKKyAKKyAJaWYgKGFkcGNtLT5pbWEubGFzdF9zdGVw W2NoYW5uZWxdIDwgMCkKK0BAIC0zNjgsNiArMzc5LDkgQEAgc3RhdGljIEJPT0wgZnJlZXJkcF9k c3BfZGVjb2RlX2ltYV9hZHBjbShGUkVFUkRQX0RTUF9DT05URVhUKiBjb250ZXh0LCBjb25zdCBC WVQKKyAJeworIAkJaWYgKHNpemUgJSBibG9ja19zaXplID09IDApCisgCQl7CisrCQkJaWYgKHNp emUgPCA0KQorKwkJCQlyZXR1cm4gRkFMU0U7CisrCisgCQkJY29udGV4dC0+YWRwY20uaW1hLmxh c3Rfc2FtcGxlWzBdID0KKyAJCQkgICAgKElOVDE2KSgoKFVJTlQxNikoKnNyYykpIHwgKCgoVUlO VDE2KSgqKHNyYyArIDEpKSkgPDwgOCkpOworIAkJCWNvbnRleHQtPmFkcGNtLmltYS5sYXN0X3N0 ZXBbMF0gPSAoSU5UMTYpKCooc3JjICsgMikpOworQEAgLTM3Nyw2ICszOTEsOCBAQCBzdGF0aWMg Qk9PTCBmcmVlcmRwX2RzcF9kZWNvZGVfaW1hX2FkcGNtKEZSRUVSRFBfRFNQX0NPTlRFWFQqIGNv bnRleHQsIGNvbnN0IEJZVAorIAorIAkJCWlmIChjaGFubmVscyA+IDEpCisgCQkJeworKwkJCQlp ZiAoc2l6ZSA8IDQpCisrCQkJCQlyZXR1cm4gRkFMU0U7CisgCQkJCWNvbnRleHQtPmFkcGNtLmlt YS5sYXN0X3NhbXBsZVsxXSA9CisgCQkJCSAgICAoSU5UMTYpKCgoVUlOVDE2KSgqc3JjKSkgfCAo KChVSU5UMTYpKCooc3JjICsgMSkpKSA8PCA4KSk7CisgCQkJCWNvbnRleHQtPmFkcGNtLmltYS5s YXN0X3N0ZXBbMV0gPSAoSU5UMTYpKCooc3JjICsgMikpOworQEAgLTM4OCw2ICs0MDQsOCBAQCBz dGF0aWMgQk9PTCBmcmVlcmRwX2RzcF9kZWNvZGVfaW1hX2FkcGNtKEZSRUVSRFBfRFNQX0NPTlRF WFQqIGNvbnRleHQsIGNvbnN0IEJZVAorIAorIAkJaWYgKGNoYW5uZWxzID4gMSkKKyAJCXsKKysJ CQlpZiAoc2l6ZSA8IDgpCisrCQkJCXJldHVybiBGQUxTRTsKKyAJCQlmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKQorIAkJCXsKKyAJCQkJY2hhbm5lbCA9IChpIDwgNCA/IDAgOiAxKTsKK0BAIC00MDcs NiArNDI1LDggQEAgc3RhdGljIEJPT0wgZnJlZXJkcF9kc3BfZGVjb2RlX2ltYV9hZHBjbShGUkVF UkRQX0RTUF9DT05URVhUKiBjb250ZXh0LCBjb25zdCBCWVQKKyAJCX0KKyAJCWVsc2UKKyAJCXsK KysJCQlpZiAoc2l6ZSA8IDEpCisrCQkJCXJldHVybiBGQUxTRTsKKyAJCQlzYW1wbGUgPSAoKCpz cmMpICYgMHgwZik7CisgCQkJZGVjb2RlZCA9IGRzcF9kZWNvZGVfaW1hX2FkcGNtX3NhbXBsZSgm Y29udGV4dC0+YWRwY20sIDAsIHNhbXBsZSk7CisgCQkJKmRzdCsrID0gKGRlY29kZWQgJiAweEZG KTsKK0BAIC02ODcsNyArNzA3LDE2IEBAIHN0YXRpYyBCWVRFIGRzcF9lbmNvZGVfaW1hX2FkcGNt X3NhbXBsZShBRFBDTSogYWRwY20sIGludCBjaGFubmVsLCBJTlQxNiBzYW1wbGUpCisgCUlOVDMy IHNzOworIAlCWVRFIGVuYzsKKyAJSU5UMzIgZGlmZjsKKy0Jc3MgPSBpbWFfc3RlcF9zaXplX3Rh YmxlW2FkcGNtLT5pbWEubGFzdF9zdGVwW2NoYW5uZWxdXTsKKysJSU5UMTYgb2Zmc2V0OworKwor KwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8IEFSUkFZU0laRShhZHBjbS0+aW1hLmxhc3Rfc3RlcCkp OworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8IEFSUkFZU0laRShhZHBjbS0+aW1hLmxhc3Rfc2Ft cGxlKSk7CisrCisrCW9mZnNldCA9IGFkcGNtLT5pbWEubGFzdF9zdGVwW2NoYW5uZWxdOworKwlX SU5QUl9BU1NFUlQob2Zmc2V0ID49IDApOworKwlXSU5QUl9BU1NFUlQob2Zmc2V0IDwgQVJSQVlT SVpFKGltYV9zdGVwX3NpemVfdGFibGUpKTsKKysKKysJc3MgPSBpbWFfc3RlcF9zaXplX3RhYmxl W29mZnNldF07CisgCWQgPSBlID0gc2FtcGxlIC0gYWRwY20tPmltYS5sYXN0X3NhbXBsZVtjaGFu bmVsXTsKKyAJZGlmZiA9IHNzID4+IDM7CisgCWVuYyA9IDA7CitAQCAtNzMzLDYgKzc2Miw4IEBA IHN0YXRpYyBCWVRFIGRzcF9lbmNvZGVfaW1hX2FkcGNtX3NhbXBsZShBRFBDTSogYWRwY20sIGlu dCBjaGFubmVsLCBJTlQxNiBzYW1wbGUpCisgCQlkaWZmID0gMzI3Njc7CisgCisgCWFkcGNtLT5p bWEubGFzdF9zYW1wbGVbY2hhbm5lbF0gPSAoSU5UMTYpZGlmZjsKKysKKysJV0lOUFJfQVNTRVJU KGVuYyA8IEFSUkFZU0laRShpbWFfc3RlcF9pbmRleF90YWJsZSkpOworIAlhZHBjbS0+aW1hLmxh c3Rfc3RlcFtjaGFubmVsXSArPSBpbWFfc3RlcF9pbmRleF90YWJsZVtlbmNdOworIAorIAlpZiAo YWRwY20tPmltYS5sYXN0X3N0ZXBbY2hhbm5lbF0gPCAwKQorQEAgLTg0NywxMCArODc4LDI0IEBA IHN0YXRpYyBJTkxJTkUgSU5UMTYgZnJlZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNtX3NhbXBsZShB RFBDTSogYWRwY20sIEJZVEUgc2FtcGxlCisgeworIAlJTlQ4IG5pYmJsZTsKKyAJSU5UMzIgcHJl c2FtcGxlOworKwlCWVRFIHByZWRpY3RvcjsKKysJSU5UMzIgY29lZmYxID0gMDsKKysJSU5UMzIg Y29lZmYyID0gMDsKKysKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUoYWRwY20t Pm1zLnNhbXBsZTEpKTsKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUoYWRwY20t Pm1zLnNhbXBsZTIpKTsKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUoYWRwY20t Pm1zLmRlbHRhKSk7CisrCVdJTlBSX0FTU0VSVChjaGFubmVsIDwgQVJSQVlTSVpFKGFkcGNtLT5t cy5wcmVkaWN0b3IpKTsKKysKKyAJbmliYmxlID0gKHNhbXBsZSAmIDB4MDggPyAoSU5UOClzYW1w bGUgLSAxNiA6IChJTlQ4KXNhbXBsZSk7CistCXByZXNhbXBsZSA9ICgoYWRwY20tPm1zLnNhbXBs ZTFbY2hhbm5lbF0gKiBtc19hZHBjbV9jb2VmZnMxW2FkcGNtLT5tcy5wcmVkaWN0b3JbY2hhbm5l bF1dKSArCistCSAgICAgICAgICAgICAoYWRwY20tPm1zLnNhbXBsZTJbY2hhbm5lbF0gKiBtc19h ZHBjbV9jb2VmZnMyW2FkcGNtLT5tcy5wcmVkaWN0b3JbY2hhbm5lbF1dKSkgLworLQkgICAgICAg ICAgICAyNTY7CisrCXByZWRpY3RvciA9IGFkcGNtLT5tcy5wcmVkaWN0b3JbY2hhbm5lbF07Cisr CWlmIChwcmVkaWN0b3IgPCBBUlJBWVNJWkUobXNfYWRwY21fY29lZmZzMSkpCisrCQljb2VmZjEg PSBtc19hZHBjbV9jb2VmZnMxW3ByZWRpY3Rvcl07CisrCisrCWlmIChwcmVkaWN0b3IgPCBBUlJB WVNJWkUobXNfYWRwY21fY29lZmZzMikpCisrCQljb2VmZjIgPSBtc19hZHBjbV9jb2VmZnMyW3By ZWRpY3Rvcl07CisrCXByZXNhbXBsZSA9CisrCSAgICAoKGFkcGNtLT5tcy5zYW1wbGUxW2NoYW5u ZWxdICogY29lZmYxKSArIChhZHBjbS0+bXMuc2FtcGxlMltjaGFubmVsXSAqIGNvZWZmMikpIC8g MjU2OworIAlwcmVzYW1wbGUgKz0gbmliYmxlICogYWRwY20tPm1zLmRlbHRhW2NoYW5uZWxdOwor IAorIAlpZiAocHJlc2FtcGxlID4gMzI3NjcpCitAQCAtODYwLDcgKzkwNSwxNCBAQCBzdGF0aWMg SU5MSU5FIElOVDE2IGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbV9zYW1wbGUoQURQQ00qIGFk cGNtLCBCWVRFIHNhbXBsZQorIAorIAlhZHBjbS0+bXMuc2FtcGxlMltjaGFubmVsXSA9IGFkcGNt LT5tcy5zYW1wbGUxW2NoYW5uZWxdOworIAlhZHBjbS0+bXMuc2FtcGxlMVtjaGFubmVsXSA9IHBy ZXNhbXBsZTsKKy0JYWRwY20tPm1zLmRlbHRhW2NoYW5uZWxdID0gYWRwY20tPm1zLmRlbHRhW2No YW5uZWxdICogbXNfYWRwY21fYWRhcHRhdGlvbl90YWJsZVtzYW1wbGVdIC8gMjU2OworKworKwl7 CisrCQlJTlQzMiB0YWJsZXZhbCA9IDA7CisrCQlpZiAoc2FtcGxlIDwgQVJSQVlTSVpFKG1zX2Fk cGNtX2FkYXB0YXRpb25fdGFibGUpKQorKwkJCXRhYmxldmFsID0gbXNfYWRwY21fYWRhcHRhdGlv bl90YWJsZVtzYW1wbGVdOworKworKwkJYWRwY20tPm1zLmRlbHRhW2NoYW5uZWxdID0gYWRwY20t Pm1zLmRlbHRhW2NoYW5uZWxdICogdGFibGV2YWwgLyAyNTY7CisrCX0KKyAKKyAJaWYgKGFkcGNt LT5tcy5kZWx0YVtjaGFubmVsXSA8IDE2KQorIAkJYWRwY20tPm1zLmRlbHRhW2NoYW5uZWxdID0g MTY7CitAQCAtODkxLDYgKzk0Myw5IEBAIHN0YXRpYyBCT09MIGZyZWVyZHBfZHNwX2RlY29kZV9t c19hZHBjbShGUkVFUkRQX0RTUF9DT05URVhUKiBjb250ZXh0LCBjb25zdCBCWVRFCisgCQl7Cisg CQkJaWYgKGNoYW5uZWxzID4gMSkKKyAJCQl7CisrCQkJCWlmIChzaXplIDwgMTQpCisrCQkJCQly ZXR1cm4gRkFMU0U7CisrCisgCQkJCWNvbnRleHQtPmFkcGNtLm1zLnByZWRpY3RvclswXSA9ICpz cmMrKzsKKyAJCQkJY29udGV4dC0+YWRwY20ubXMucHJlZGljdG9yWzFdID0gKnNyYysrOworIAkJ CQljb250ZXh0LT5hZHBjbS5tcy5kZWx0YVswXSA9IHJlYWRfaW50MTYoc3JjKTsKK0BAIC05MTcs NiArOTcyLDkgQEAgc3RhdGljIEJPT0wgZnJlZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNtKEZSRUVS RFBfRFNQX0NPTlRFWFQqIGNvbnRleHQsIGNvbnN0IEJZVEUKKyAJCQl9CisgCQkJZWxzZQorIAkJ CXsKKysJCQkJaWYgKHNpemUgPCA3KQorKwkJCQkJcmV0dXJuIEZBTFNFOworKworIAkJCQljb250 ZXh0LT5hZHBjbS5tcy5wcmVkaWN0b3JbMF0gPSAqc3JjKys7CisgCQkJCWNvbnRleHQtPmFkcGNt Lm1zLmRlbHRhWzBdID0gcmVhZF9pbnQxNihzcmMpOworIAkJCQlzcmMgKz0gMjsKK0BAIC05MzQs MTIgKzk5MiwxNiBAQCBzdGF0aWMgQk9PTCBmcmVlcmRwX2RzcF9kZWNvZGVfbXNfYWRwY20oRlJF RVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllURQorIAorIAkJaWYgKGNoYW5uZWxz ID4gMSkKKyAJCXsKKysJCQlpZiAoc2l6ZSA8IDEpCisrCQkJCXJldHVybiBGQUxTRTsKKyAJCQlz YW1wbGUgPSAqc3JjKys7CisgCQkJc2l6ZS0tOworIAkJCXdyaXRlX2ludDE2KGRzdCwgZnJlZXJk cF9kc3BfZGVjb2RlX21zX2FkcGNtX3NhbXBsZSgmY29udGV4dC0+YWRwY20sIHNhbXBsZSA+PiA0 LCAwKSk7CisgCQkJZHN0ICs9IDI7CisgCQkJd3JpdGVfaW50MTYoZHN0LCBmcmVlcmRwX2RzcF9k ZWNvZGVfbXNfYWRwY21fc2FtcGxlKCZjb250ZXh0LT5hZHBjbSwgc2FtcGxlICYgMHgwRiwgMSkp OworIAkJCWRzdCArPSAyOworKwkJCWlmIChzaXplIDwgMSkKKysJCQkJcmV0dXJuIEZBTFNFOwor IAkJCXNhbXBsZSA9ICpzcmMrKzsKKyAJCQlzaXplLS07CisgCQkJd3JpdGVfaW50MTYoZHN0LCBm cmVlcmRwX2RzcF9kZWNvZGVfbXNfYWRwY21fc2FtcGxlKCZjb250ZXh0LT5hZHBjbSwgc2FtcGxl ID4+IDQsIDApKTsKK0BAIC05NDksNiArMTAxMSw4IEBAIHN0YXRpYyBCT09MIGZyZWVyZHBfZHNw X2RlY29kZV9tc19hZHBjbShGUkVFUkRQX0RTUF9DT05URVhUKiBjb250ZXh0LCBjb25zdCBCWVRF CisgCQl9CisgCQllbHNlCisgCQl7CisrCQkJaWYgKHNpemUgPCAxKQorKwkJCQlyZXR1cm4gRkFM U0U7CisgCQkJc2FtcGxlID0gKnNyYysrOworIAkJCXNpemUtLTsKKyAJCQl3cml0ZV9pbnQxNihk c3QsIGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbV9zYW1wbGUoJmNvbnRleHQtPmFkcGNtLCBz YW1wbGUgPj4gNCwgMCkpOworQEAgLTk2MiwxMCArMTAyNiwxNiBAQCBzdGF0aWMgQk9PTCBmcmVl cmRwX2RzcF9kZWNvZGVfbXNfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29u c3QgQllURQorIAlyZXR1cm4gVFJVRTsKKyB9CisgCistc3RhdGljIEJZVEUgZnJlZXJkcF9kc3Bf ZW5jb2RlX21zX2FkcGNtX3NhbXBsZShBRFBDTSogYWRwY20sIElOVDMyIHNhbXBsZSwgaW50IGNo YW5uZWwpCisrc3RhdGljIEJZVEUgZnJlZXJkcF9kc3BfZW5jb2RlX21zX2FkcGNtX3NhbXBsZShB RFBDTSogYWRwY20sIElOVDMyIHNhbXBsZSwgc2l6ZV90IGNoYW5uZWwpCisgeworIAlJTlQzMiBw cmVzYW1wbGU7CisgCUlOVDMyIGVycm9yZGVsdGE7CisrCisrCVdJTlBSX0FTU0VSVChjaGFubmVs IDwgQVJSQVlTSVpFKGFkcGNtLT5tcy5zYW1wbGUxKSk7CisrCVdJTlBSX0FTU0VSVChjaGFubmVs IDwgQVJSQVlTSVpFKGFkcGNtLT5tcy5zYW1wbGUyKSk7CisrCVdJTlBSX0FTU0VSVChjaGFubmVs IDwgQVJSQVlTSVpFKGFkcGNtLT5tcy5kZWx0YSkpOworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8 IEFSUkFZU0laRShhZHBjbS0+bXMucHJlZGljdG9yKSk7CisrCisgCXByZXNhbXBsZSA9ICgoYWRw Y20tPm1zLnNhbXBsZTFbY2hhbm5lbF0gKiBtc19hZHBjbV9jb2VmZnMxW2FkcGNtLT5tcy5wcmVk aWN0b3JbY2hhbm5lbF1dKSArCisgCSAgICAgICAgICAgICAoYWRwY20tPm1zLnNhbXBsZTJbY2hh bm5lbF0gKiBtc19hZHBjbV9jb2VmZnMyW2FkcGNtLT5tcy5wcmVkaWN0b3JbY2hhbm5lbF1dKSkg LworIAkgICAgICAgICAgICAyNTY7CitAQCAtOTg4LDggKzEwNTgsMTEgQEAgc3RhdGljIEJZVEUg ZnJlZXJkcF9kc3BfZW5jb2RlX21zX2FkcGNtX3NhbXBsZShBRFBDTSogYWRwY20sIElOVDMyIHNh bXBsZSwgaW50IGMKKyAKKyAJYWRwY20tPm1zLnNhbXBsZTJbY2hhbm5lbF0gPSBhZHBjbS0+bXMu c2FtcGxlMVtjaGFubmVsXTsKKyAJYWRwY20tPm1zLnNhbXBsZTFbY2hhbm5lbF0gPSBwcmVzYW1w bGU7CistCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA9CistCSAgICBhZHBjbS0+bXMuZGVsdGFb Y2hhbm5lbF0gKiBtc19hZHBjbV9hZGFwdGF0aW9uX3RhYmxlWygoKEJZVEUpZXJyb3JkZWx0YSkg JiAweDBGKV0gLyAyNTY7CisrCXsKKysJCWNvbnN0IHNpemVfdCBvZmZzZXQgPSAoKChCWVRFKWVy cm9yZGVsdGEpICYgMHgwRik7CisrCQlXSU5QUl9BU1NFUlQob2Zmc2V0IDwgQVJSQVlTSVpFKG1z X2FkcGNtX2FkYXB0YXRpb25fdGFibGUpKTsKKysJCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA9 IGFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSAqIG1zX2FkcGNtX2FkYXB0YXRpb25fdGFibGVbb2Zm c2V0XSAvIDI1NjsKKysJfQorIAorIAlpZiAoYWRwY20tPm1zLmRlbHRhW2NoYW5uZWxdIDwgMTYp CisgCQlhZHBjbS0+bXMuZGVsdGFbY2hhbm5lbF0gPSAxNjsKKy0tIAorMi41My4wCisKCmRpZmYg LS1naXQgYS9jb2RlYy1uc2MtZml4LXVzZS1vZi1uc2NfcHJvY2Vzc19tZXNzYWdlLnBhdGNoIGIv Y29kZWMtbnNjLWZpeC11c2Utb2YtbnNjX3Byb2Nlc3NfbWVzc2FnZS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzVlYTY0Ci0tLSAvZGV2L251bGwKKysrIGIvY29k ZWMtbnNjLWZpeC11c2Utb2YtbnNjX3Byb2Nlc3NfbWVzc2FnZS5wYXRjaApAQCAtMCwwICsxLDkw IEBACitGcm9tIDIxY2IwZTJiOTZlNGU4NmI0ZWQ4YjdhNzZkODE5ODA4Yjg5OGU5M2UgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4K K0RhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMDc6MDg6MDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0g W2NvZGVjLG5zY10gZml4IHVzZSBvZiBuc2NfcHJvY2Vzc19tZXNzYWdlCisKK0JhY2twb3J0IG9m IGNvbW1pdCAxNjk5NzE2MDdjZWNlNDgzODRjYjk0NjMyYjgyOWJkNTczMzZhZjBmLgorCitNYWRl LXdpdGg6IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jIHwgMTAgKysrKysr LS0tLQorIGxpYmZyZWVyZHAvY29kZWMvbnNjLmMgICB8ICA5ICsrKysrKysrLQorIGxpYmZyZWVy ZHAvZ2RpL2dkaS5jICAgICB8ICA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlv bnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL2Ns ZWFyLmMgYi9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKK2luZGV4IDRkYmU3MjM3Ni4uNjYyN2Iy MWQ2IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCisrKysgYi9saWJmcmVl cmRwL2NvZGVjL2NsZWFyLmMKK0BAIC0xMDMsNyArMTAzLDggQEAgc3RhdGljIEJPT0wgY29udmVy dF9jb2xvcihCWVRFKiBkc3QsIFVJTlQzMiBuRHN0U3RlcCwgVUlOVDMyIERzdEZvcm1hdCwgVUlO VDMyIG4KKyAKKyBzdGF0aWMgQk9PTCBjbGVhcl9kZWNvbXByZXNzX25zY29kZWMoTlNDX0NPTlRF WFQqIG5zYywgVUlOVDMyIHdpZHRoLCBVSU5UMzIgaGVpZ2h0LCB3U3RyZWFtKiBzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgYml0bWFwRGF0YUJ5dGVDb3Vu dCwgQllURSogcERzdERhdGEsIFVJTlQzMiBEc3RGb3JtYXQsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFVJTlQzMiBuRHN0U3RlcCwgVUlOVDMyIG5YRHN0UmVsLCBVSU5U MzIgbllEc3RSZWwpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQz MiBuRHN0U3RlcCwgVUlOVDMyIG5YRHN0UmVsLCBVSU5UMzIgbllEc3RSZWwsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBuRHN0V2lkdGgsIFVJTlQzMiBuRHN0 SGVpZ2h0KQorIHsKKyAJQk9PTCByYzsKKyAKK0BAIC0xMTUsOCArMTE2LDggQEAgc3RhdGljIEJP T0wgY2xlYXJfZGVjb21wcmVzc19uc2NvZGVjKE5TQ19DT05URVhUKiBuc2MsIFVJTlQzMiB3aWR0 aCwgVUlOVDMyIGhlaWcKKyAJfQorIAorIAlyYyA9IG5zY19wcm9jZXNzX21lc3NhZ2UobnNjLCAz Miwgd2lkdGgsIGhlaWdodCwgU3RyZWFtX1BvaW50ZXIocyksIGJpdG1hcERhdGFCeXRlQ291bnQs CistCSAgICAgICAgICAgICAgICAgICAgICAgICBwRHN0RGF0YSwgRHN0Rm9ybWF0LCBuRHN0U3Rl cCwgblhEc3RSZWwsIG5ZRHN0UmVsLCB3aWR0aCwgaGVpZ2h0LAorLQkgICAgICAgICAgICAgICAg ICAgICAgICAgRlJFRVJEUF9GTElQX05PTkUpOworKwkgICAgICAgICAgICAgICAgICAgICAgICAg cERzdERhdGEsIERzdEZvcm1hdCwgbkRzdFN0ZXAsIG5YRHN0UmVsLCBuWURzdFJlbCwgbkRzdFdp ZHRoLAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgbkRzdEhlaWdodCwgRlJFRVJEUF9GTElQ X05PTkUpOworIAlTdHJlYW1fU2VlayhzLCBiaXRtYXBEYXRhQnl0ZUNvdW50KTsKKyAJcmV0dXJu IHJjOworIH0KK0BAIC01MzUsNyArNTM2LDggQEAgc3RhdGljIEJPT0wgY2xlYXJfZGVjb21wcmVz c19zdWJjb2RlY3NfZGF0YShDTEVBUl9DT05URVhUKiBjbGVhciwgd1N0cmVhbSogcywKKyAKKyAJ CQljYXNlIDE6IC8qIE5TQ29kZWMgKi8KKyAJCQkJaWYgKCFjbGVhcl9kZWNvbXByZXNzX25zY29k ZWMoY2xlYXItPm5zYywgd2lkdGgsIGhlaWdodCwgcywgYml0bWFwRGF0YUJ5dGVDb3VudCwKKy0J CQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcERzdERhdGEsIERzdEZvcm1hdCwgbkRz dFN0ZXAsIG5YRHN0UmVsLCBuWURzdFJlbCkpCisrCQkJCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBEc3REYXRhLCBEc3RGb3JtYXQsIG5Ec3RTdGVwLCBuWERzdFJlbCwgbllEc3RSZWws CisrCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5Ec3RXaWR0aCwgbkRzdEhlaWdo dCkpCisgCQkJCQlyZXR1cm4gRkFMU0U7CisgCisgCQkJCWJyZWFrOworZGlmZiAtLWdpdCBhL2xp YmZyZWVyZHAvY29kZWMvbnNjLmMgYi9saWJmcmVlcmRwL2NvZGVjL25zYy5jCitpbmRleCBhMjU3 YWUyNGEuLmY1MGExYWU4OSAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvbnNjLmMKKysr KyBiL2xpYmZyZWVyZHAvY29kZWMvbnNjLmMKK0BAIC00NDcsMTAgKzQ0NywxNyBAQCBCT09MIG5z Y19wcm9jZXNzX21lc3NhZ2UoTlNDX0NPTlRFWFQqIGNvbnRleHQsIFVJTlQxNiBicHAsIFVJTlQz MiB3aWR0aCwgVUlOVDMyCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBuRHN0U3Ry aWRlLCBVSU5UMzIgblhEc3QsIFVJTlQzMiBuWURzdCwgVUlOVDMyIG5XaWR0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgVUlOVDMyIG5IZWlnaHQsIFVJTlQzMiBmbGlwKQorIHsKKysJV0lO UFJfQVNTRVJUKGNvbnRleHQpOworKwlXSU5QUl9BU1NFUlQoY29udGV4dC0+cHJpdik7CisrCisg CXdTdHJlYW0qIHM7CisgCUJPT0wgcmV0OworLQlpZiAoIWNvbnRleHQgfHwgIWRhdGEgfHwgIXBE c3REYXRhKQorKwlpZiAoIWRhdGEgfHwgIXBEc3REYXRhKQorKwl7CisrCQlXTG9nX1ByaW50KGNv bnRleHQtPnByaXYtPmxvZywgV0xPR19FUlJPUiwgIkludmFsaWQgYXJndW1lbnQ6IGRhdGE9JXAs IHBEc3REYXRhPSVwIiwKKysJCSAgICAgICAgICAgKGNvbnN0IHZvaWQqKWRhdGEsICh2b2lkKilw RHN0RGF0YSk7CisgCQlyZXR1cm4gRkFMU0U7CisrCX0KKyAKKyAJcyA9IFN0cmVhbV9OZXcoKEJZ VEUqKWRhdGEsIGxlbmd0aCk7CisgCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9nZGkvZ2RpLmMg Yi9saWJmcmVlcmRwL2dkaS9nZGkuYworaW5kZXggMzdhMDEwNDMxLi44YzVlNGJmMzQgMTAwNjQ0 CistLS0gYS9saWJmcmVlcmRwL2dkaS9nZGkuYworKysrIGIvbGliZnJlZXJkcC9nZGkvZ2RpLmMK K0BAIC0xMDc0LDggKzEwNzQsOCBAQCBzdGF0aWMgQk9PTCBnZGlfc3VyZmFjZV9iaXRzKHJkcENv bnRleHQqIGNvbnRleHQsIGNvbnN0IFNVUkZBQ0VfQklUU19DT01NQU5EKiBjbQorIAkJCWlmICgh bnNjX3Byb2Nlc3NfbWVzc2FnZSgKKyAJCQkgICAgICAgIGNvbnRleHQtPmNvZGVjcy0+bnNjLCBj bWQtPmJtcC5icHAsIGNtZC0+Ym1wLndpZHRoLCBjbWQtPmJtcC5oZWlnaHQsCisgCQkJICAgICAg ICBjbWQtPmJtcC5iaXRtYXBEYXRhLCBjbWQtPmJtcC5iaXRtYXBEYXRhTGVuZ3RoLCBnZGktPnBy aW1hcnlfYnVmZmVyLCBmb3JtYXQsCistCQkJICAgICAgICBnZGktPnN0cmlkZSwgY21kUmVjdC5s ZWZ0LCBjbWRSZWN0LnRvcCwgY21kUmVjdC5yaWdodCAtIGNtZFJlY3QubGVmdCwKKy0JCQkgICAg ICAgIGNtZFJlY3QuYm90dG9tIC0gY21kUmVjdC50b3AsIEZSRUVSRFBfRkxJUF9WRVJUSUNBTCkp CisrCQkJICAgICAgICBnZGktPnN0cmlkZSwgY21kUmVjdC5sZWZ0LCBjbWRSZWN0LnRvcCwgKFVJ TlQzMilnZGktPndpZHRoLCAoVUlOVDMyKWdkaS0+aGVpZ2h0LAorKwkJCSAgICAgICAgRlJFRVJE UF9GTElQX1ZFUlRJQ0FMKSkKKyAJCQl7CisgCQkJCVdMb2dfRVJSKFRBRywgIkZhaWxlZCB0byBw cm9jZXNzIE5TQ29kZWMgbWVzc2FnZSIpOworIAkJCQlnb3RvIG91dDsKKy0tIAorMi41My4wCisK CmRpZmYgLS1naXQgYS9jb2RlYy1uc2MtbGltaXQtY29weS1hcmVhLWluLW5zY19wcm9jZXNzX21l c3NhZ2UucGF0Y2ggYi9jb2RlYy1uc2MtbGltaXQtY29weS1hcmVhLWluLW5zY19wcm9jZXNzX21l c3NhZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0N2RmNQot LS0gL2Rldi9udWxsCisrKyBiL2NvZGVjLW5zYy1saW1pdC1jb3B5LWFyZWEtaW4tbnNjX3Byb2Nl c3NfbWVzc2FnZS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDlhOWUwMDUyOWIxYjA0NzE4 MzcwYTFkOGUyZDhiNjc2OGM5ZWU5MTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBP bmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTYgTWFyIDIwMjYgMTQ6 NTk6MTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLG5zY10gbGltaXQgY29weSBhcmVh IGluIG5zY19wcm9jZXNzX21lc3NhZ2UKKworQmFja3BvcnQgb2YgY29tbWl0IDgzZDlhZWRlYTI3 OGE3NGFmM2U0OTBmZjVlZWI4ODljMDE2ZGJiMmIuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0K KyBsaWJmcmVlcmRwL2NvZGVjL25zYy5jIHwgMTEgKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdl ZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJl ZXJkcC9jb2RlYy9uc2MuYyBiL2xpYmZyZWVyZHAvY29kZWMvbnNjLmMKK2luZGV4IDVkZDI2NDZl YS4uYTI1N2FlMjRhIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9uc2MuYworKysrIGIv bGliZnJlZXJkcC9jb2RlYy9uc2MuYworQEAgLTI0LDYgKzI0LDcgQEAKKyAjaW5jbHVkZSAiY29u ZmlnLmgiCisgI2VuZGlmCisgCisrI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRp by5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitAQCAtNTE1 LDcgKzUxNiwxNSBAQCBCT09MIG5zY19wcm9jZXNzX21lc3NhZ2UoTlNDX0NPTlRFWFQqIGNvbnRl eHQsIFVJTlQxNiBicHAsIFVJTlQzMiB3aWR0aCwgVUlOVDMyCisgCQkJcmV0dXJuIEZBTFNFOwor IAl9CisgCistCWlmICghZnJlZXJkcF9pbWFnZV9jb3B5KHBEc3REYXRhLCBEc3RGb3JtYXQsIG5E c3RTdHJpZGUsIG5YRHN0LCBuWURzdCwgd2lkdGgsIGhlaWdodCwKKysJdWludDMyX3QgY3dpZHRo ID0gd2lkdGg7CisrCWlmICgxdWxsICogblhEc3QgKyB3aWR0aCA+IG5XaWR0aCkKKysJCWN3aWR0 aCA9IG5XaWR0aCAtIG5YRHN0OworKworKwl1aW50MzJfdCBjaGVpZ2h0ID0gaGVpZ2h0OworKwlp ZiAoMXVsbCAqIG5ZRHN0ICsgaGVpZ2h0ID4gbkhlaWdodCkKKysJCWNoZWlnaHQgPSBuSGVpZ2h0 IC0gbllEc3Q7CisrCisrCWlmICghZnJlZXJkcF9pbWFnZV9jb3B5KHBEc3REYXRhLCBEc3RGb3Jt YXQsIG5Ec3RTdHJpZGUsIG5YRHN0LCBuWURzdCwgY3dpZHRoLCBjaGVpZ2h0LAorIAkgICAgICAg ICAgICAgICAgICAgICAgICBjb250ZXh0LT5CaXRtYXBEYXRhLCBQSVhFTF9GT1JNQVRfQkdSQTMy LCAwLCAwLCAwLCBOVUxMLCBmbGlwKSkKKyAJCXJldHVybiBGQUxTRTsKKyAKKy0tIAorMi41My4w CisKCmRpZmYgLS1naXQgYS9jb2RlYy1wbGFuYXItZml4LWJvdW5kcy1jaGVja3MucGF0Y2ggYi9j b2RlYy1wbGFuYXItZml4LWJvdW5kcy1jaGVja3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNTU1MDk5MgotLS0gL2Rldi9udWxsCisrKyBiL2NvZGVjLXBsYW5hci1m aXgtYm91bmRzLWNoZWNrcy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDRiOTM5NDVjZjVm OWI4NWQxNzcwNWQwMzg5NTVlZTU5YzRiNjY5YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBBcm1pbiBOb3ZhayA8YXJtaW4ubm92YWtAdGhpbmNhc3QuY29tPgorRGF0ZTogVGh1LCAz MCBBcHIgMjAyNiAxNTowMzoyMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMscGxhbmFy XSBmaXggYm91bmRzIGNoZWNrcworCistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jIHwg NCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK KworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMgYi9saWJmcmVlcmRwL2Nv ZGVjL3BsYW5hci5jCitpbmRleCA5YjRkMTMwNTcuLjY3ZmM0MjEyZSAxMDA2NDQKKy0tLSBhL2xp YmZyZWVyZHAvY29kZWMvcGxhbmFyLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMK K0BAIC04NDEsMTIgKzg0MSwxMiBAQCBCT09MIHBsYW5hcl9kZWNvbXByZXNzKEJJVE1BUF9QTEFO QVJfQ09OVEVYVCogcGxhbmFyLCBjb25zdCBCWVRFKiBwU3JjRGF0YSwgVUlOVAorIAkJCQlyZXR1 cm4gRkFMU0U7CisgCQkJfQorIAorLQkJCWlmICgoblhEc3QgKyBuU3JjV2lkdGgpICogYnBwID4g bkRzdFN0ZXApCisrCQkJaWYgKChuWERzdCArIG5TcmNXaWR0aCkgKiBicHAgPiBuVGVtcFN0ZXAp CisgCQkJeworIAkJCQlXTG9nX0VSUihUQUcsCisgCQkJCSAgICAgICAgICJwbGFuYXIgcGxhbmUg ZGVzdGluYXRpb24gKFggJSIgUFJJdTMyICIgKyB3aWR0aCAlIiBQUkl1MzIKKyAJCQkJICAgICAg ICAgIikgKiBicHAgJSIgUFJJdTMyICIgZXhjZWVkcyBzdHJpZGUgJSIgUFJJdTMyLAorLQkJCQkg ICAgICAgICBuWERzdCwgblNyY1dpZHRoLCBicHAsIG5Ec3RTdGVwKTsKKysJCQkJICAgICAgICAg blhEc3QsIG5TcmNXaWR0aCwgYnBwLCBuVGVtcFN0ZXApOworIAkJCQlyZXR1cm4gRkFMU0U7Cisg CQkJfQorIAorLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhL2NvZGVjLXBsYW5hci1maXgtZGVj b2Rlci1sZW5ndGgtY2hlY2tzLnBhdGNoIGIvY29kZWMtcGxhbmFyLWZpeC1kZWNvZGVyLWxlbmd0 aC1jaGVja3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThkMmM5 OQotLS0gL2Rldi9udWxsCisrKyBiL2NvZGVjLXBsYW5hci1maXgtZGVjb2Rlci1sZW5ndGgtY2hl Y2tzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMmQ2NTZlYjZiMjlhNjhkZTdmMTllOGEx Y2NlMTY5MjU5ZTc1MDZiNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBI b2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyNyBKYW4gMjAyNiAxNDozNTo0MyAr MDEwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMscGxhbmFyXSBmaXggZGVjb2RlciBsZW5ndGgg Y2hlY2tzCisKK0JhY2twb3J0IG9mIGNvbW1pdCAxYmFiMTk4YTJlZGQwZDBlNmUxNjI3ZDIxYTQz MzE1MWVhMTkwLgorCitDby1BdXRob3JlZC1CeTogQ2xhdWRlIDxub3JlcGx5QGFudGhyb3BpYy5j b20+CistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jIHwgNSArKysrKworIDEgZmlsZSBj aGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMv cGxhbmFyLmMgYi9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jCitpbmRleCBmZTI3MDExZTEuLjFj YjJlMjJiYyAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMKKysrKyBiL2xp YmZyZWVyZHAvY29kZWMvcGxhbmFyLmMKK0BAIC02MTYsNiArNjE2LDExIEBAIEJPT0wgcGxhbmFy X2RlY29tcHJlc3MoQklUTUFQX1BMQU5BUl9DT05URVhUKiBwbGFuYXIsIGNvbnN0IEJZVEUqIHBT cmNEYXRhLCBVSU5UCisgCVdJTlBSX0FTU0VSVChwbGFuYXIpOworIAlXSU5QUl9BU1NFUlQocHJp bXMpOworIAorKwlpZiAocGxhbmFyLT5tYXhXaWR0aCA8IG5TcmNXaWR0aCkKKysJCXJldHVybiBG QUxTRTsKKysJaWYgKHBsYW5hci0+bWF4SGVpZ2h0IDwgblNyY0hlaWdodCkKKysJCXJldHVybiBG QUxTRTsKKysKKyAJaWYgKG5Ec3RTdGVwIDw9IDApCisgCQluRHN0U3RlcCA9IG5Ec3RXaWR0aCAq IEdldEJ5dGVzUGVyUGl4ZWwoRHN0Rm9ybWF0KTsKKyAKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1n aXQgYS9jb2RlYy1wbGFuYXItZml4LW1pc3NpbmctZGVzdGluYXRpb24tYm91bmRzLWNoZWNrcy5w YXRjaCBiL2NvZGVjLXBsYW5hci1maXgtbWlzc2luZy1kZXN0aW5hdGlvbi1ib3VuZHMtY2hlY2tz LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2Y2M3ZGMKLS0tIC9k ZXYvbnVsbAorKysgYi9jb2RlYy1wbGFuYXItZml4LW1pc3NpbmctZGVzdGluYXRpb24tYm91bmRz LWNoZWNrcy5wYXRjaApAQCAtMCwwICsxLDU1IEBACitGcm9tIGVjYThhMWE4NzZiNzdkZTVkYTYw YjE4NzkzZTM1ZTVjMDcxNGVmOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRy ZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgOSBNYXIgMjAyNiAxMjo1Njox MSArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMscGxhbmFyXTogZml4IG1pc3NpbmcgZGVz dGluYXRpb24gYm91bmRzIGNoZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgYTBiZTVjYjg3ZDc2 MGJiMWM4MDNhZDFiYjgzNWFhMWU3M2U2MmFiYy4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQor IGxpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMgfCAyMSArKysrKysrKysrKysrKysrKysrKy0KKyAx IGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0t Z2l0IGEvbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIuYyBiL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFy LmMKK2luZGV4IDFjYjJlMjJiYy4uOWI0ZDEzMDU3IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9j b2RlYy9wbGFuYXIuYworKysrIGIvbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIuYworQEAgLTYyMSw4 ICs2MjEsOSBAQCBCT09MIHBsYW5hcl9kZWNvbXByZXNzKEJJVE1BUF9QTEFOQVJfQ09OVEVYVCog cGxhbmFyLCBjb25zdCBCWVRFKiBwU3JjRGF0YSwgVUlOVAorIAlpZiAocGxhbmFyLT5tYXhIZWln aHQgPCBuU3JjSGVpZ2h0KQorIAkJcmV0dXJuIEZBTFNFOworIAorKwljb25zdCBVSU5UMzIgYnBw ID0gR2V0Qnl0ZXNQZXJQaXhlbChEc3RGb3JtYXQpOworIAlpZiAobkRzdFN0ZXAgPD0gMCkKKy0J CW5Ec3RTdGVwID0gbkRzdFdpZHRoICogR2V0Qnl0ZXNQZXJQaXhlbChEc3RGb3JtYXQpOworKwkJ bkRzdFN0ZXAgPSBuRHN0V2lkdGggKiBicHA7CisgCisgCXNyY3AgPSBwU3JjRGF0YTsKKyAKK0BA IC04MzEsNiArODMyLDI0IEBAIEJPT0wgcGxhbmFyX2RlY29tcHJlc3MoQklUTUFQX1BMQU5BUl9D T05URVhUKiBwbGFuYXIsIGNvbnN0IEJZVEUqIHBTcmNEYXRhLCBVSU5UCisgCQl9CisgCQllbHNl IC8qIFJMRSAqLworIAkJeworKwkJCWlmIChuWURzdCArIG5TcmNIZWlnaHQgPiBuVG90YWxIZWln aHQpCisrCQkJeworKwkJCQlXTG9nX0VSUihUQUcsCisrCQkJCSAgICAgICAgICJwbGFuYXIgcGxh bmUgZGVzdGluYXRpb24gWSAlIiBQUkl1MzIgIiArIGhlaWdodCAlIiBQUkl1MzIKKysJCQkJICAg ICAgICAgIiBleGNlZWRzIHRvdGFsSGVpZ2h0ICUiIFBSSXUzMiwKKysJCQkJICAgICAgICAgbllE c3QsIG5TcmNIZWlnaHQsIG5Ub3RhbEhlaWdodCk7CisrCQkJCXJldHVybiBGQUxTRTsKKysJCQl9 CisrCisrCQkJaWYgKChuWERzdCArIG5TcmNXaWR0aCkgKiBicHAgPiBuRHN0U3RlcCkKKysJCQl7 CisrCQkJCVdMb2dfRVJSKFRBRywKKysJCQkJICAgICAgICAgInBsYW5hciBwbGFuZSBkZXN0aW5h dGlvbiAoWCAlIiBQUkl1MzIgIiArIHdpZHRoICUiIFBSSXUzMgorKwkJCQkgICAgICAgICAiKSAq IGJwcCAlIiBQUkl1MzIgIiBleGNlZWRzIHN0cmlkZSAlIiBQUkl1MzIsCisrCQkJCSAgICAgICAg IG5YRHN0LCBuU3JjV2lkdGgsIGJwcCwgbkRzdFN0ZXApOworKwkJCQlyZXR1cm4gRkFMU0U7Cisr CQkJfQorKworIAkJCXN0YXR1cyA9CisgCQkJICAgIHBsYW5hcl9kZWNvbXByZXNzX3BsYW5lX3Js ZShwbGFuZXNbMF0sIHJsZVNpemVzWzBdLCBwVGVtcERhdGEsIG5UZW1wU3RlcCwgblhEc3QsCisg CQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuWURzdCwgblNyY1dpZHRoLCBuU3Jj SGVpZ2h0LCAyLCB2RmxpcCk7IC8qIFJlZFBsYW5lICovCistLSAKKzIuNTMuMAorCgpkaWZmIC0t Z2l0IGEvY29kZWMtcHJvZ3Jlc3NpdmUtZmFpbC1wcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViLW9u LWludmFsaWQtdmFsdWVzLnBhdGNoIGIvY29kZWMtcHJvZ3Jlc3NpdmUtZmFpbC1wcm9ncmVzc2l2 ZV9yZnhfcXVhbnRfc3ViLW9uLWludmFsaWQtdmFsdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjNmMDI0MTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1wcm9n cmVzc2l2ZS1mYWlsLXByb2dyZXNzaXZlX3JmeF9xdWFudF9zdWItb24taW52YWxpZC12YWx1ZXMu cGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorRnJvbSA3ODE4OGFiNDc5YzhlNmViOWJhMjQ3NWIzNzMy Yzc2YjRiYmU1NDI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkg PG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDEzIEFwciAyMDI2IDE0OjAwOjAwICswMjAw CitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxwcm9ncmVzc2l2ZV0gRmFpbCBwcm9ncmVzc2l2ZV9y ZnhfcXVhbnRfc3ViIG9uIGludmFsaWQKKyB2YWx1ZXMKKworQmFja3BvcnQgb2YgY29tbWl0IDc4 MTg4YWI0NzljOGU2ZWI5YmEyNDc1YjM3MzJjNzZiNGJiZTU0MjUuCisKK01hZGUtd2l0aDogQ3Vy c29yCistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMgfCA0MiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM4IGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL3Byb2dy ZXNzaXZlLmMgYi9saWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMKK2luZGV4IDg4OTRiMzUu LmJiY2M5MjEgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMKKysr KyBiL2xpYmZyZWVyZHAvY29kZWMvcHJvZ3Jlc3NpdmUuYworQEAgLTE1NSwyMCArMTU1LDUxIEBA IHN0YXRpYyBJTkxJTkUgdm9pZCBwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfbHN1YihSRlhfQ09NUE9O RU5UX0NPREVDX1FVQU5UKiBxLCBpbnQKKyAJcS0+TEwzIC09IHZhbDsgLyogTEwzICovCisgfQor IAorLXN0YXRpYyBJTkxJTkUgdm9pZCBwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViKGNvbnN0IFJG WF9DT01QT05FTlRfQ09ERUNfUVVBTlQqIHExLAorK3N0YXRpYyBJTkxJTkUgQk9PTCBwcm9ncmVz c2l2ZV9yZnhfcXVhbnRfc3ViKGNvbnN0IFJGWF9DT01QT05FTlRfQ09ERUNfUVVBTlQqIHExLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJGWF9D T01QT05FTlRfQ09ERUNfUVVBTlQqIHEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJGWF9DT01QT05FTlRfQ09ERUNfUVVBTlQqIGRzdCkKKyB7CisrCWlm IChxMS0+SEgxIDwgcTItPkhMMSkKKysJCXJldHVybiBGQUxTRTsKKyAJZHN0LT5ITDEgPSBxMS0+ SEwxIC0gcTItPkhMMTsgLyogSEwxICovCisrCisrCWlmIChxMS0+TEgxIDwgcTItPkxIMSkKKysJ CXJldHVybiBGQUxTRTsKKyAJZHN0LT5MSDEgPSBxMS0+TEgxIC0gcTItPkxIMTsgLyogTEgxICov CisrCisrCWlmIChxMS0+SEgxIDwgcTItPkhIMSkKKysJCXJldHVybiBGQUxTRTsKKyAJZHN0LT5I SDEgPSBxMS0+SEgxIC0gcTItPkhIMTsgLyogSEgxICovCisrCisrCWlmIChxMS0+SEwyIDwgcTIt PkhMMikKKysJCXJldHVybiBGQUxTRTsKKyAJZHN0LT5ITDIgPSBxMS0+SEwyIC0gcTItPkhMMjsg LyogSEwyICovCisrCisrCWlmIChxMS0+TEgyIDwgcTItPkxIMikKKysJCXJldHVybiBGQUxTRTsK KyAJZHN0LT5MSDIgPSBxMS0+TEgyIC0gcTItPkxIMjsgLyogTEgyICovCisrCisrCWlmIChxMS0+ SEgyIDwgcTItPkhIMikKKysJCXJldHVybiBGQUxTRTsKKyAJZHN0LT5ISDIgPSBxMS0+SEgyIC0g cTItPkhIMjsgLyogSEgyICovCisrCisrCWlmIChxMS0+SEwzIDwgcTItPkhMMykKKysJCXJldHVy biBGQUxTRTsKKyAJZHN0LT5ITDMgPSBxMS0+SEwzIC0gcTItPkhMMzsgLyogSEwzICovCisrCisr CWlmIChxMS0+TEgzIDwgcTItPkxIMykKKysJCXJldHVybiBGQUxTRTsKKyAJZHN0LT5MSDMgPSBx MS0+TEgzIC0gcTItPkxIMzsgLyogTEgzICovCisrCisrCWlmIChxMS0+SEgzIDwgcTItPkhIMykK KysJCXJldHVybiBGQUxTRTsKKyAJZHN0LT5ISDMgPSBxMS0+SEgzIC0gcTItPkhIMzsgLyogSEgz ICovCisrCisrCWlmIChxMS0+TEwzIDwgcTItPkxMMykKKysJCXJldHVybiBGQUxTRTsKKyAJZHN0 LT5MTDMgPSBxMS0+TEwzIC0gcTItPkxMMzsgLyogTEwzICovCisrCisrCXJldHVybiBUUlVFOwor IH0KKyAKKyBzdGF0aWMgSU5MSU5FIEJPT0wgcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X2xjbXBfbGVz c19lcXVhbChjb25zdCBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBxLAorQEAgLTE0MzMsOSAr MTQ2NCwxMiBAQCBzdGF0aWMgSU5MSU5FIGludCBwcm9ncmVzc2l2ZV9kZWNvbXByZXNzX3RpbGVf dXBncmFkZShQUk9HUkVTU0lWRV9DT05URVhUKiBwcm9ncgorIAlwcm9ncmVzc2l2ZV9yZnhfcXVh bnRfYWRkKHF1YW50WSwgcXVhbnRQcm9nWSwgJnlCaXRQb3MpOworIAlwcm9ncmVzc2l2ZV9yZnhf cXVhbnRfYWRkKHF1YW50Q2IsIHF1YW50UHJvZ0NiLCAmY2JCaXRQb3MpOworIAlwcm9ncmVzc2l2 ZV9yZnhfcXVhbnRfYWRkKHF1YW50Q3IsIHF1YW50UHJvZ0NyLCAmY3JCaXRQb3MpOworLQlwcm9n cmVzc2l2ZV9yZnhfcXVhbnRfc3ViKCYodGlsZS0+eUJpdFBvcyksICZ5Qml0UG9zLCAmeU51bUJp dHMpOworLQlwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViKCYodGlsZS0+Y2JCaXRQb3MpLCAmY2JC aXRQb3MsICZjYk51bUJpdHMpOworLQlwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViKCYodGlsZS0+ Y3JCaXRQb3MpLCAmY3JCaXRQb3MsICZjck51bUJpdHMpOworKwlpZiAoIXByb2dyZXNzaXZlX3Jm eF9xdWFudF9zdWIoJih0aWxlLT55Qml0UG9zKSwgJnlCaXRQb3MsICZ5TnVtQml0cykpCisrCQln b3RvIGZhaWw7CisrCWlmICghcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPmNiQml0 UG9zKSwgJmNiQml0UG9zLCAmY2JOdW1CaXRzKSkKKysJCWdvdG8gZmFpbDsKKysJaWYgKCFwcm9n cmVzc2l2ZV9yZnhfcXVhbnRfc3ViKCYodGlsZS0+Y3JCaXRQb3MpLCAmY3JCaXRQb3MsICZjck51 bUJpdHMpKQorKwkJZ290byBmYWlsOworIAlwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfYWRkKHF1YW50 WSwgcXVhbnRQcm9nWSwgJnNoaWZ0WSk7CisgCXByb2dyZXNzaXZlX3JmeF9xdWFudF9sc3ViKCZz aGlmdFksIDEpOyAvKiAtNiArIDUgPSAtMSAqLworIAlwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfYWRk KHF1YW50Q2IsIHF1YW50UHJvZ0NiLCAmc2hpZnRDYik7CistLSAKKzIuNDkuMAorCgpkaWZmIC0t Z2l0IGEvY29kZWMtcHJvZ3Jlc3NpdmUtZml4LXVuZGVyZmxvdy1ndWFyZC1pbi1wcm9ncmVzc2l2 ZV9yZnhfcXVhbnRfc3ViLnBhdGNoIGIvY29kZWMtcHJvZ3Jlc3NpdmUtZml4LXVuZGVyZmxvdy1n dWFyZC1pbi1wcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmFjYjZhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1wcm9n cmVzc2l2ZS1maXgtdW5kZXJmbG93LWd1YXJkLWluLXByb2dyZXNzaXZlX3JmeF9xdWFudF9zdWIu cGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA3ODY3N2RjNmUyNjJmNDY5MzdkMDBjM2FhNTIz ODFlNGJiMTk4ZmE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkg PG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDEzIEFwciAyMDI2IDE0OjAwOjAwICswMjAw CitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxwcm9ncmVzc2l2ZV0gZml4IHVuZGVyZmxvdyBndWFy ZCBpbgorIHByb2dyZXNzaXZlX3JmeF9xdWFudF9zdWIKKworQmFja3BvcnQgb2YgY29tbWl0IDc4 Njc3ZGM2ZTI2MmY0NjkzN2QwMGMzYWE1MjM4MWU0YmIxOThmYTUuCisKK01hZGUtd2l0aDogQ3Vy c29yCistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMgfCAyICstCisgMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9s aWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMgYi9saWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNz aXZlLmMKK2luZGV4IGJiY2M5MjEuLjEyMzQ1NjcgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2Nv ZGVjL3Byb2dyZXNzaXZlLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvcHJvZ3Jlc3NpdmUuYwor QEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgSU5MSU5FIEJPT0wgcHJvZ3Jlc3NpdmVfcmZ4X3F1 YW50X3N1Yihjb25zdCBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBxMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJGWF9DT01QT05FTlRfQ09E RUNfUVVBTlQqIHEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJGWF9DT01QT05FTlRfQ09ERUNfUVVBTlQqIGRzdCkKKyB7CistCWlmIChxMS0+SEgxIDwg cTItPkhMMSkKKysJaWYgKHExLT5ITDEgPCBxMi0+SEwxKQorIAkJcmV0dXJuIEZBTFNFOworIAlk c3QtPkhMMSA9IHExLT5ITDEgLSBxMi0+SEwxOyAvKiBITDEgKi8KKyAKKy0tIAorMi40OS4wCisK CmRpZmYgLS1naXQgYS9jb3JlLWluZm8tZml4LW1pc3NpbmctTlVMTC1jaGVjay5wYXRjaCBiL2Nv cmUtaW5mby1maXgtbWlzc2luZy1OVUxMLWNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjQ0ZGFhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlLWluZm8tZml4 LW1pc3NpbmctTlVMTC1jaGVjay5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIDZhMzI5YTlh MTM1MmM5NDYxYTNhODVlNTVkODQyMzAxMDZiMTk1MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMTAgTWFy IDIwMjYgMTQ6NTM6MjkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvcmUsaW5mb10gZml4IG1p c3NpbmcgTlVMTCBjaGVjaworCitCYWNrcG9ydCBvZiBjb21taXQgNGQ0NGUzYzA5NzY1NmE4Yjll YzY5NjM1MzY0N2IwODg4Y2E0NTg2MC4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGxpYmZy ZWVyZHAvY29yZS9pbmZvLmMgfCAxNyArKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2Vk LCAxMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJl ZXJkcC9jb3JlL2luZm8uYyBiL2xpYmZyZWVyZHAvY29yZS9pbmZvLmMKK2luZGV4IDlhYWE2Y2Zm Ni4uNTY2NzZmMGZiIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb3JlL2luZm8uYworKysrIGIv bGliZnJlZXJkcC9jb3JlL2luZm8uYworQEAgLTI0LDYgKzI0LDcgQEAKKyAjZW5kaWYKKyAKKyAj aW5jbHVkZSA8d2lucHIvY3J0Lmg+CisrI2luY2x1ZGUgPHdpbnByL2Fzc2VydC5oPgorICNpbmNs dWRlIDxmcmVlcmRwL2NyeXB0by9jcnlwdG8uaD4KKyAjaW5jbHVkZSA8ZnJlZXJkcC9sb2cuaD4K KyAjaW5jbHVkZSA8ZnJlZXJkcC9zZXNzaW9uLmg+CitAQCAtMTM2MywxMCArMTM2NCwxMSBAQCBz dGF0aWMgQk9PTCByZHBfd3JpdGVfbG9nb25faW5mb192MSh3U3RyZWFtKiBzLCBsb2dvbl9pbmZv KiBpbmZvKQorIAlyZXR1cm4gVFJVRTsKKyB9CisgCistc3RhdGljIEJPT0wgcmRwX3dyaXRlX2xv Z29uX2luZm9fdjIod1N0cmVhbSogcywgbG9nb25faW5mbyogaW5mbykKKytzdGF0aWMgQk9PTCBy ZHBfd3JpdGVfbG9nb25faW5mb192Mih3U3RyZWFtKiBzLCBjb25zdCBsb2dvbl9pbmZvKiBpbmZv KQorIHsKKyAJVUlOVDMyIFNpemUgPSAyICsgNCArIDQgKyA0ICsgNCArIDU1ODsKKy0Jc2l6ZV90 IGRvbWFpbkxlbiwgdXNlcm5hbWVMZW47CisrCXNpemVfdCBkb21haW5MZW4gPSAwOworKwlzaXpl X3QgdXNlcm5hbWVMZW4gPSAwOworIAlpbnQgbGVuOworIAlXQ0hBUiogd1N0cmluZyA9IE5VTEw7 CisgCitAQCAtMTM3NiwxMSArMTM3OCwxMyBAQCBzdGF0aWMgQk9PTCByZHBfd3JpdGVfbG9nb25f aW5mb192Mih3U3RyZWFtKiBzLCBsb2dvbl9pbmZvKiBpbmZvKQorIAlTdHJlYW1fV3JpdGVfVUlO VDE2KHMsIFNBVkVfU0VTU0lPTl9QRFVfVkVSU0lPTl9PTkUpOworIAlTdHJlYW1fV3JpdGVfVUlO VDMyKHMsIFNpemUpOworIAlTdHJlYW1fV3JpdGVfVUlOVDMyKHMsIGluZm8tPnNlc3Npb25JZCk7 CistCWRvbWFpbkxlbiA9IHN0cmxlbihpbmZvLT5kb21haW4pOworKwlpZiAoaW5mby0+ZG9tYWlu KQorKwkJZG9tYWluTGVuID0gc3RybGVuKGluZm8tPmRvbWFpbik7CisgCWlmIChkb21haW5MZW4g PiBVSU5UMzJfTUFYKQorIAkJcmV0dXJuIEZBTFNFOworIAlTdHJlYW1fV3JpdGVfVUlOVDMyKHMs IChVSU5UMzIpKGRvbWFpbkxlbiArIDEpICogMik7CistCXVzZXJuYW1lTGVuID0gc3RybGVuKGlu Zm8tPnVzZXJuYW1lKTsKKysJaWYgKGluZm8tPnVzZXJuYW1lKQorKwkJdXNlcm5hbWVMZW4gPSBz dHJsZW4oaW5mby0+dXNlcm5hbWUpOworIAlpZiAodXNlcm5hbWVMZW4gPiBVSU5UMzJfTUFYKQor IAkJcmV0dXJuIEZBTFNFOworIAlTdHJlYW1fV3JpdGVfVUlOVDMyKHMsIChVSU5UMzIpKHVzZXJu YW1lTGVuICsgMSkgKiAyKTsKK0BAIC0xNDU3LDEwICsxNDYxLDExIEBAIHN0YXRpYyBCT09MIHJk cF93cml0ZV9sb2dvbl9pbmZvX2V4KHdTdHJlYW0qIHMsIGxvZ29uX2luZm9fZXgqIGluZm8pCisg CisgQk9PTCByZHBfc2VuZF9zYXZlX3Nlc3Npb25faW5mbyhyZHBDb250ZXh0KiBjb250ZXh0LCBV SU5UMzIgdHlwZSwgdm9pZCogZGF0YSkKKyB7CistCXdTdHJlYW0qIHM7CisgCUJPT0wgc3RhdHVz OworKworKwlXSU5QUl9BU1NFUlQoY29udGV4dCk7CisgCXJkcFJkcCogcmRwID0gY29udGV4dC0+ cmRwOworLQlzID0gcmRwX2RhdGFfcGR1X2luaXQocmRwKTsKKysJd1N0cmVhbSogcyA9IHJkcF9k YXRhX3BkdV9pbml0KHJkcCk7CisgCisgCWlmICghcykKKyAJCXJldHVybiBGQUxTRTsKKy0tIAor Mi41My4wCisKCmRpZmYgLS1naXQgYS9jb3JlLW1lc3NhZ2UtZml4LXVwZGF0ZV9tZXNzYWdlX1dp bmRvd0ljb24ucGF0Y2ggYi9jb3JlLW1lc3NhZ2UtZml4LXVwZGF0ZV9tZXNzYWdlX1dpbmRvd0lj b24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY0ODFiMQotLS0g L2Rldi9udWxsCisrKyBiL2NvcmUtbWVzc2FnZS1maXgtdXBkYXRlX21lc3NhZ2VfV2luZG93SWNv bi5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDkzOTdmYmVlZDRiMjg2MmFlNjhmOTU1Njk1 MGFmNDE1MTYzYzkzOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcm1pbiBOb3Zh ayA8YXJtaW4ubm92YWtAdGhpbmNhc3QuY29tPgorRGF0ZTogVHVlLCA3IEp1bCAyMDI2IDEyOjU4 OjExICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb3JlLG1lc3NhZ2VdIGZpeCB1cGRhdGVfbWVz c2FnZV9XaW5kb3dJY29uCisKKy0tLQorIGxpYmZyZWVyZHAvY29yZS9tZXNzYWdlLmMgfCA3ICsr KysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQor CitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb3JlL21lc3NhZ2UuYyBiL2xpYmZyZWVyZHAvY29y ZS9tZXNzYWdlLmMKK2luZGV4IDdhZjI5ZTk0ZC4uMWFiMGQ0ZTRlIDEwMDY0NAorLS0tIGEvbGli ZnJlZXJkcC9jb3JlL21lc3NhZ2UuYworKysrIGIvbGliZnJlZXJkcC9jb3JlL21lc3NhZ2UuYwor QEAgLTExNDcsMTggKzExNDcsMjEgQEAgc3RhdGljIEJPT0wgdXBkYXRlX21lc3NhZ2VfV2luZG93 SWNvbihyZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU4KKyAJaWYgKCF3 UGFyYW0pCisgCQlyZXR1cm4gRkFMU0U7CisKKy0JQ29weU1lbW9yeSh3UGFyYW0sIG9yZGVySW5m bywgc2l6ZW9mKFdJTkRPV19PUkRFUl9JTkZPKSk7CisrCSp3UGFyYW0gPSAqb3JkZXJJbmZvOwor KworIAlsUGFyYW0gPSAoV0lORE9XX0lDT05fT1JERVIqKWNhbGxvYygxLCBzaXplb2YoV0lORE9X X0lDT05fT1JERVIpKTsKKworIAlpZiAoIWxQYXJhbSkKKyAJCWdvdG8gb3V0X2ZhaWw7CisKKysJ KmxQYXJhbSA9ICp3aW5kb3dJY29uOworIAlsUGFyYW0tPmljb25JbmZvID0gY2FsbG9jKDEsIHNp emVvZihJQ09OX0lORk8pKTsKKworIAlpZiAoIWxQYXJhbS0+aWNvbkluZm8pCisgCQlnb3RvIG91 dF9mYWlsOworCistCUNvcHlNZW1vcnkobFBhcmFtLCB3aW5kb3dJY29uLCBzaXplb2YoV0lORE9X X0lDT05fT1JERVIpKTsKKysJKmxQYXJhbS0+aWNvbkluZm8gPSAqd2luZG93SWNvbi0+aWNvbklu Zm87CisrCisgCVdMb2dfVlJCKFRBRywgInVwZGF0ZV9tZXNzYWdlX1dpbmRvd0ljb24iKTsKKwor IAlpZiAod2luZG93SWNvbi0+aWNvbkluZm8tPmNiQml0c0NvbG9yID4gMCkKCmRpZmYgLS1naXQg YS9jb3JlLXJlZGlyZWN0aW9uLWNoZWNrLXJlZGlyZWN0aW9uLXZhbHVlcy1mb3ItdmFsaWRpdHku cGF0Y2ggYi9jb3JlLXJlZGlyZWN0aW9uLWNoZWNrLXJlZGlyZWN0aW9uLXZhbHVlcy1mb3ItdmFs aWRpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2MDUwMAot LS0gL2Rldi9udWxsCisrKyBiL2NvcmUtcmVkaXJlY3Rpb24tY2hlY2stcmVkaXJlY3Rpb24tdmFs dWVzLWZvci12YWxpZGl0eS5wYXRjaApAQCAtMCwwICsxLDE2MyBAQAorRnJvbSBjZGFiYzc4ZmM1 MGE1YTE4NTlmYWViYzFlNDFhM2RmYmJkMDA3MzQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogQXJtaW4gTm92YWsgPGFybWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFRodSwg OSBKdWwgMjAyNiAwODozNDoyNCArMDIwMAorU3ViamVjdDogW1BBVENIXSBbY29yZSxyZWRpcmVj dGlvbl0gY2hlY2sgcmVkaXJlY3Rpb24gdmFsdWVzIGZvciB2YWxpZGl0eQorCitBZGQgc29tZSBi YXNpYyB2YWxpZGl0eSBjaGVja3MgZm9yIGRhdGEgcHJvdmlkZWQgYnkgc2VydmVyLgorLS0tCisg bGliZnJlZXJkcC9jb3JlL3JlZGlyZWN0aW9uLmMgfCAyNSArKysrKysrKysrKysrKysrKysrKy0t LS0tCisgbGliZnJlZXJkcC9jb3JlL3V0aWxzLmMgICAgICAgfCAzMyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKKyBsaWJmcmVlcmRwL2NvcmUvdXRpbHMuaCAgICAgICB8ICAyICsr CisgMyBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitk aWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb3JlL3JlZGlyZWN0aW9uLmMgYi9saWJmcmVlcmRwL2Nv cmUvcmVkaXJlY3Rpb24uYworaW5kZXggNTljNmRiY2VlLi5iNGIyMjJlYjIgMTAwNjQ0CistLS0g YS9saWJmcmVlcmRwL2NvcmUvcmVkaXJlY3Rpb24uYworKysrIGIvbGliZnJlZXJkcC9jb3JlL3Jl ZGlyZWN0aW9uLmMKK0BAIC00MDYsNiArNDA2LDggQEAgc3RhdGljIGludCByZHBfcmVjdl9zZXJ2 ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcFJkcCogcmRwLCB3U3RyZWFtKiBzKQorIAl7CisgCQlpZiAo IXJkcF9yZWRpcmVjdGlvbl9yZWFkX3VuaWNvZGVfc3RyaW5nKHMsICYocmVkaXJlY3Rpb24tPlRh cmdldE5ldEFkZHJlc3MpLCA4MCkpCisgCQkJcmV0dXJuIC0xOworKwkJaWYgKCF1dGlsc19pc192 YWxpZF9pcChyZWRpcmVjdGlvbi0+VGFyZ2V0TmV0QWRkcmVzcykpCisrCQkJcmV0dXJuIC0xOwor IAl9CisKKyAJaWYgKHJlZGlyZWN0aW9uLT5mbGFncyAmIExCX0xPQURfQkFMQU5DRV9JTkZPKQor QEAgLTQxOSwxMyArNDIxLDE3IEBAIHN0YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVyX3JlZGlyZWN0 aW9uX3BkdShyZHBSZHAqIHJkcCwgd1N0cmVhbSogcykKKyAJCWlmICghcmRwX3JlZGlyZWN0aW9u X3JlYWRfZGF0YShMQl9MT0FEX0JBTEFOQ0VfSU5GTywgcywgJnJlZGlyZWN0aW9uLT5Mb2FkQmFs YW5jZUluZm9MZW5ndGgsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlZGly ZWN0aW9uLT5Mb2FkQmFsYW5jZUluZm8pKQorIAkJCXJldHVybiAtMTsKKysJCWlmICghd2lucHJf c3RyX2lzX3ZhbGlkX3VybE4oKGNvbnN0IGNoYXIqKXJlZGlyZWN0aW9uLT5Mb2FkQmFsYW5jZUlu Zm8sCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0aW9uLT5Mb2FkQmFs YW5jZUluZm9MZW5ndGgpKQorKwkJCXJldHVybiAtMTsKKyAJfQorCisgCWlmIChyZWRpcmVjdGlv bi0+ZmxhZ3MgJiBMQl9VU0VSTkFNRSkKKyAJeworIAkJaWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVh ZF91bmljb2RlX3N0cmluZyhzLCAmKHJlZGlyZWN0aW9uLT5Vc2VybmFtZSksIDUxMikpCisgCQkJ cmV0dXJuIC0xOworLQorKwkJaWYgKHdpbnByX3N0cl9oYXNfbmV3bGluZXMocmVkaXJlY3Rpb24t PlVzZXJuYW1lKSkKKysJCQlyZXR1cm4gLTE7CisgCQlXTG9nX0RCRyhUQUcsICJVc2VybmFtZTog JXMiLCByZWRpcmVjdGlvbi0+VXNlcm5hbWUpOworIAl9CisKK0BAIC00MzMsNyArNDM5LDggQEAg c3RhdGljIGludCByZHBfcmVjdl9zZXJ2ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcFJkcCogcmRwLCB3 U3RyZWFtKiBzKQorIAl7CisgCQlpZiAoIXJkcF9yZWRpcmVjdGlvbl9yZWFkX3VuaWNvZGVfc3Ry aW5nKHMsICYocmVkaXJlY3Rpb24tPkRvbWFpbiksIDUyKSkKKyAJCQlyZXR1cm4gLTE7CistCisr CQlpZiAod2lucHJfc3RyX2hhc19uZXdsaW5lcyhyZWRpcmVjdGlvbi0+RG9tYWluKSkKKysJCQly ZXR1cm4gLTE7CisgCQlXTG9nX0RCRyhUQUcsICJEb21haW46ICVzIiwgcmVkaXJlY3Rpb24tPkRv bWFpbik7CisgCX0KKworQEAgLTQ4NCw3ICs0OTEsOCBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3Nl cnZlcl9yZWRpcmVjdGlvbl9wZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCXsKKyAJCWlm ICghcmRwX3JlZGlyZWN0aW9uX3JlYWRfdW5pY29kZV9zdHJpbmcocywgJihyZWRpcmVjdGlvbi0+ VGFyZ2V0RlFETiksIDUxMikpCisgCQkJcmV0dXJuIC0xOworLQorKwkJaWYgKCF3aW5wcl9zdHJf aXNfdmFsaWRfdXJsKHJlZGlyZWN0aW9uLT5UYXJnZXRGUUROKSkKKysJCQlyZXR1cm4gLTE7Cisg CQlXTG9nX0RCRyhUQUcsICJUYXJnZXRGUUROOiAlcyIsIHJlZGlyZWN0aW9uLT5UYXJnZXRGUURO KTsKKyAJfQorCitAQCAtNDkyLDcgKzUwMCw4IEBAIHN0YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVy X3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJkcCwgd1N0cmVhbSogcykKKyAJeworIAkJaWYgKCFy ZHBfcmVkaXJlY3Rpb25fcmVhZF91bmljb2RlX3N0cmluZyhzLCAmKHJlZGlyZWN0aW9uLT5UYXJn ZXROZXRCaW9zTmFtZSksIDMyKSkKKyAJCQlyZXR1cm4gLTE7CistCisrCQlpZiAoIXdpbnByX3N0 cl9pc192YWxpZF91cmwocmVkaXJlY3Rpb24tPlRhcmdldE5ldEJpb3NOYW1lKSkKKysJCQlyZXR1 cm4gLTE7CisgCQlXTG9nX0RCRyhUQUcsICJUYXJnZXROZXRCaW9zTmFtZTogJXMiLCByZWRpcmVj dGlvbi0+VGFyZ2V0TmV0Qmlvc05hbWUpOworIAl9CisKK0BAIC01MDEsNiArNTEwLDggQEAgc3Rh dGljIGludCByZHBfcmVjdl9zZXJ2ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcFJkcCogcmRwLCB3U3Ry ZWFtKiBzKQorIAkJaWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVhZF9kYXRhKExCX0NMSUVOVF9UU1Zf VVJMLCBzLCAmcmVkaXJlY3Rpb24tPlRzdlVybExlbmd0aCwKKyAJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmcmVkaXJlY3Rpb24tPlRzdlVybCkpCisgCQkJcmV0dXJuIC0xOworKwkJ aWYgKCF3aW5wcl9zdHJfaXNfdmFsaWRfdXJsTigoY29uc3QgY2hhciopcmVkaXJlY3Rpb24tPlRz dlVybCwgcmVkaXJlY3Rpb24tPlRzdlVybExlbmd0aCkpCisrCQkJcmV0dXJuIC0xOworIAl9CisK KyAJaWYgKHJlZGlyZWN0aW9uLT5mbGFncyAmIExCX1JFRElSRUNUSU9OX0dVSUQpCitAQCAtNTQx LDcgKzU1Miw4IEBAIHN0YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVyX3JlZGlyZWN0aW9uX3BkdShy ZHBSZHAqIHJkcCwgd1N0cmVhbSogcykKKyAJCXsKKyAJCQlpZiAoIXJkcF9yZWRpcmVjdGlvbl9y ZWFkX3VuaWNvZGVfc3RyaW5nKHMsICYocmVkaXJlY3Rpb24tPlRhcmdldE5ldEFkZHJlc3Nlc1tp XSksIDgwKSkKKyAJCQkJcmV0dXJuIC0xOworLQorKwkJCWlmICghdXRpbHNfaXNfdmFsaWRfaXAo cmVkaXJlY3Rpb24tPlRhcmdldE5ldEFkZHJlc3Nlc1tpXSkpCisrCQkJCXJldHVybiAtMTsKKyAJ CQlXTG9nX0RCRyhUQUcsICJUYXJnZXROZXRBZGRyZXNzZXNbJSIgUFJJdXogIl06ICVzIiwgaSwK KyAJCQkgICAgICAgICByZWRpcmVjdGlvbi0+VGFyZ2V0TmV0QWRkcmVzc2VzW2ldKTsKKyAJCX0K K0BAIC01NjksNyArNTgxLDEwIEBAIGludCByZHBfcmVjdl9lbmhhbmNlZF9zZWN1cml0eV9yZWRp cmVjdGlvbl9wYWNrZXQocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCXN0YXR1cyA9IHJkcF9y ZWN2X3NlcnZlcl9yZWRpcmVjdGlvbl9wZHUocmRwLCBzKTsKKworIAlpZiAoc3RhdHVzIDwgMCkK KysJeworKwkJV0xvZ19FUlIoVEFHLCAicmVkaXJlY3Rpb24gcGFja2V0IGludmFsaWQsIGFib3J0 aW5nIik7CisgCQlyZXR1cm4gc3RhdHVzOworKwl9CisKKyAJaWYgKFN0cmVhbV9HZXRSZW1haW5p bmdMZW5ndGgocykgPj0gMSkKKyAJeworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29yZS91dGls cy5jIGIvbGliZnJlZXJkcC9jb3JlL3V0aWxzLmMKK2luZGV4IDEzOWMxYTQzMy4uMTAyODE5OTE1 IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb3JlL3V0aWxzLmMKKysrKyBiL2xpYmZyZWVyZHAv Y29yZS91dGlscy5jCitAQCAtMjIsNiArMjIsMTYgQEAKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisg I2VuZGlmCisKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2lmZGVmIF9XSU4zMgorKyNpbmNs dWRlIDx3czJ0Y3BpcC5oPgorKyNlbHNlCisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaW5j bHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKysjZW5kaWYKKysK KyAjaW5jbHVkZSA8d2lucHIvYXNzZXJ0Lmg+CisKKyAjaW5jbHVkZSA8ZnJlZXJkcC9mcmVlcmRw Lmg+CitAQCAtNjUsMyArNzUsMjYgQEAgQk9PTCB1dGlsc19zdHJfaXNfZW1wdHkoY29uc3QgY2hh ciogc3RyKQorIAkJcmV0dXJuIFRSVUU7CisgCXJldHVybiBGQUxTRTsKKyB9CisrCisrc3RhdGlj IEJPT0wgaXNWYWxpZElQdjQoY29uc3QgY2hhciogaXBBZGRyZXNzKQorK3sKKysJc3RydWN0IHNv Y2thZGRyX2luIHNhOworKwlpbnQgcmVzdWx0OworKwltZW1zZXQoJnNhLCAwLCBzaXplb2Yoc2Ep KTsKKysJcmVzdWx0ID0gaW5ldF9wdG9uKEFGX0lORVQsIGlwQWRkcmVzcywgJihzYS5zaW5fYWRk cikpOworKwlyZXR1cm4gcmVzdWx0ICE9IDA7CisrfQorKworK3N0YXRpYyBCT09MIGlzVmFsaWRJ UHY2KGNvbnN0IGNoYXIqIGlwQWRkcmVzcykKKyt7CisrCXN0cnVjdCBzb2NrYWRkcl9pbjYgc2E7 CisrCWludCByZXN1bHQ7CisrCW1lbXNldCgmc2EsIDAsIHNpemVvZihzYSkpOworKwlyZXN1bHQg PSBpbmV0X3B0b24oQUZfSU5FVDYsIGlwQWRkcmVzcywgJihzYS5zaW42X2FkZHIpKTsKKysJcmV0 dXJuIHJlc3VsdCAhPSAwOworK30KKysKKytCT09MIHV0aWxzX2lzX3ZhbGlkX2lwKGNvbnN0IGNo YXIqIGlwQWRkcmVzcykKKyt7CisrCXJldHVybiBpc1ZhbGlkSVB2NChpcEFkZHJlc3MpIHx8IGlz VmFsaWRJUHY2KGlwQWRkcmVzcyk7CisrfQorZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29yZS91 dGlscy5oIGIvbGliZnJlZXJkcC9jb3JlL3V0aWxzLmgKK2luZGV4IDQzMjk1MTgxMi4uNGIxNTBj NDE2IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb3JlL3V0aWxzLmgKKysrKyBiL2xpYmZyZWVy ZHAvY29yZS91dGlscy5oCitAQCAtMzAsNCArMzAsNiBAQCBCT09MIHV0aWxzX2Fib3J0X2Nvbm5l Y3QocmRwQ29udGV4dCogY29udGV4dCk7CisgQk9PTCB1dGlsc19zdHJfaXNfZW1wdHkoY29uc3Qg Y2hhciogc3RyKTsKKyBCT09MIHV0aWxzX3N0cl9jb3B5KGNvbnN0IGNoYXIqIHZhbHVlLCBjaGFy KiogZHN0KTsKKworK0ZSRUVSRFBfTE9DQUwgQk9PTCB1dGlsc19pc192YWxpZF9pcChjb25zdCBj aGFyKiBpcEFkZHJlc3MpOworKworICNlbmRpZiAvKiBGUkVFUkRQX0xJQl9DT1JFX1VUSUxTX0gg Ki8KCmRpZmYgLS1naXQgYS9jb3JlLXJlZGlyZWN0aW9uLXJlbGF4LWNoZWNrcy5wYXRjaCBiL2Nv cmUtcmVkaXJlY3Rpb24tcmVsYXgtY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmEwMDNlNGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlLXJlZGlyZWN0aW9u LXJlbGF4LWNoZWNrcy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGIzY2ZmNjVhMWFkYmJk ZWRhNDc4ZjAzNTIxOGVlYWRjNzJjYTAwMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBBcm1pbiBOb3ZhayA8YXJtaW4ubm92YWtAdGhpbmNhc3QuY29tPgorRGF0ZTogVHVlLCAxNCBK dWwgMjAyNiAxMjozMDoyNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBbY29yZSxyZWRpcmVjdGlv bl0gcmVsYXggY2hlY2tzCisKKyogVHN2VXJsIGlzIG9wYXF1ZSwgZG8gbm90IGFzc3VtZSBhbnkg Zm9ybWF0CisqIExvYWRCYWxhbmNlSW5mbyBpcyBvcGFxdWUsIGRvIG5vdCBhc3N1bWUgYW55IGZv cm1hdAorLS0tCisgbGliZnJlZXJkcC9jb3JlL3JlZGlyZWN0aW9uLmMgfCA1IC0tLS0tCisgMSBm aWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2Nv cmUvcmVkaXJlY3Rpb24uYyBiL2xpYmZyZWVyZHAvY29yZS9yZWRpcmVjdGlvbi5jCitpbmRleCBi NGIyMjJlYjIuLjc3MzQ5NjYwMyAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29yZS9yZWRpcmVj dGlvbi5jCisrKysgYi9saWJmcmVlcmRwL2NvcmUvcmVkaXJlY3Rpb24uYworQEAgLTQyMSw5ICs0 MjEsNiBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3NlcnZlcl9yZWRpcmVjdGlvbl9wZHUocmRwUmRw KiByZHAsIHdTdHJlYW0qIHMpCisgCQlpZiAoIXJkcF9yZWRpcmVjdGlvbl9yZWFkX2RhdGEoTEJf TE9BRF9CQUxBTkNFX0lORk8sIHMsICZyZWRpcmVjdGlvbi0+TG9hZEJhbGFuY2VJbmZvTGVuZ3Ro LAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWRpcmVjdGlvbi0+TG9hZEJh bGFuY2VJbmZvKSkKKyAJCQlyZXR1cm4gLTE7CistCQlpZiAoIXdpbnByX3N0cl9pc192YWxpZF91 cmxOKChjb25zdCBjaGFyKilyZWRpcmVjdGlvbi0+TG9hZEJhbGFuY2VJbmZvLAorLQkJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdGlvbi0+TG9hZEJhbGFuY2VJbmZvTGVuZ3Ro KSkKKy0JCQlyZXR1cm4gLTE7CisgCX0KKworIAlpZiAocmVkaXJlY3Rpb24tPmZsYWdzICYgTEJf VVNFUk5BTUUpCitAQCAtNTEwLDggKzUwNyw2IEBAIHN0YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVy X3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJkcCwgd1N0cmVhbSogcykKKyAJCWlmICghcmRwX3Jl ZGlyZWN0aW9uX3JlYWRfZGF0YShMQl9DTElFTlRfVFNWX1VSTCwgcywgJnJlZGlyZWN0aW9uLT5U c3ZVcmxMZW5ndGgsCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlZGlyZWN0 aW9uLT5Uc3ZVcmwpKQorIAkJCXJldHVybiAtMTsKKy0JCWlmICghd2lucHJfc3RyX2lzX3ZhbGlk X3VybE4oKGNvbnN0IGNoYXIqKXJlZGlyZWN0aW9uLT5Uc3ZVcmwsIHJlZGlyZWN0aW9uLT5Uc3ZV cmxMZW5ndGgpKQorLQkJCXJldHVybiAtMTsKKyAJfQorCisgCWlmIChyZWRpcmVjdGlvbi0+Zmxh Z3MgJiBMQl9SRURJUkVDVElPTl9HVUlEKQoKZGlmZiAtLWdpdCBhL2NyeXB0by1iYXNlNjQtZW5z dXJlLWNoYXItaXMtc2luZ2VuZC5wYXRjaCBiL2NyeXB0by1iYXNlNjQtZW5zdXJlLWNoYXItaXMt c2luZ2VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmJhOWM4 Ci0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvLWJhc2U2NC1lbnN1cmUtY2hhci1pcy1zaW5nZW5k LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gN2UxNzU5YzczOTAwMmRjOTVkOGYxNTY3MmQw ZjcwMGNhOGRjY2UwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5 IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxNDoyMzoyOSArMDEw MAorU3ViamVjdDogW1BBVENIXSBbY3J5cHRvLGJhc2U2NF0gZW5zdXJlIGNoYXIgaXMgc2luZ2Vu ZAorCitCYWNrcG9ydCBvZiBjb21taXQgNjJhOWU3ODdlZGIyY2ZjZTk4NThmYTRjZWRhNTQ2MTY4 MGVmYzU5MC4KKworQ28tQXV0aG9yZWQtQnk6IEN1cnNvciA8Y3Vyc29yYWdlbnRAY3Vyc29yLmNv bT4KKy0tLQorIGxpYmZyZWVyZHAvY3J5cHRvL2Jhc2U2NC5jIHwgNCArKysrCisgMSBmaWxlIGNo YW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jcnlwdG8v YmFzZTY0LmMgYi9saWJmcmVlcmRwL2NyeXB0by9iYXNlNjQuYworaW5kZXggNWE1ZGE4OWE0Li5j MDg0ZGUzOGUgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NyeXB0by9iYXNlNjQuYworKysrIGIv bGliZnJlZXJkcC9jcnlwdG8vYmFzZTY0LmMKK0BAIC05Myw2ICs5MywxMCBAQCBjaGFyKiBjcnlw dG9fYmFzZTY0X2VuY29kZShjb25zdCBCWVRFKiBkYXRhLCBpbnQgbGVuZ3RoKQorIAorIHN0YXRp YyBpbnQgYmFzZTY0X2RlY29kZV9jaGFyKGNoYXIgYykKKyB7CisrCS8qIGVuc3VyZSBjaGFyIGlz IHNpZ25lZCBmb3IgdGhpcyBjaGVjayAqLworKwlpZiAoKGludCljIDw9ICdcMCcpCisrCQlyZXR1 cm4gLTE7CisrCisgCWlmIChjID49ICdBJyAmJiBjIDw9ICdaJykKKyAJCXJldHVybiBjIC0gJ0En OworIAorLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhL2ZyZWVyZHAyLnNwZWMgYi9mcmVlcmRw Mi5zcGVjCmluZGV4IGMwYmYxMDAuLjJkMzIzZDcgMTAwNjQ0Ci0tLSBhL2ZyZWVyZHAyLnNwZWMK KysrIGIvZnJlZXJkcDIuc3BlYwpAQCAtMjYsNyArMjYsNyBAQAogCiBOYW1lOiAgICAgICAgICAg ZnJlZXJkcDIKIFZlcnNpb246ICAgICAgICAyLjExLjcKLVJlbGVhc2U6ICAgICAgICAxNSV7P2Rp c3R9CitSZWxlYXNlOiAgICAgICAgMTYlez9kaXN0fQogU3VtbWFyeTogICAgICAgIEZyZWUgaW1w bGVtZW50YXRpb24gb2YgdGhlIFJlbW90ZSBEZXNrdG9wIFByb3RvY29sIChSRFApCiAKICMgVGhl IGVmZmVjdGl2ZSBsaWNlbnNlIGlzIEFwYWNoZS0yLjAgYnV0OgpAQCAtNDIsNiArNDIsMTM3IEBA IFVSTDogICAgICAgICAgICBodHRwOi8vd3d3LmZyZWVyZHAuY29tLwogU291cmNlMDogICAgICAg IEZyZWVSRFAtJXt2ZXJzaW9ufS1yZXBhY2sudGFyLmd6CiBTb3VyY2UxOiAgICAgICAgZnJlZXJk cF9kb3dubG9hZF9hbmRfcmVwYWNrLnNoCiAKKyMgQ1ZFLTIwMjYtMjM1MzIKK1BhdGNoOiAgICAg ICAgICBnZGktZ2Z4LXByb3Blcmx5LWNsYW1wLVN1cmZhY2VUb1N1cmZhY2UucGF0Y2gKKworIyBD VkUtMjAyNi0yMzUzMworUGF0Y2g6ICAgICAgICAgIGNvZGVjLWNsZWFyLWZpeC1jbGVhcl9yZXNp emVfYnVmZmVyLWNoZWNrcy5wYXRjaAorCisjIENWRS0yMDI2LTIzNTM0CitQYXRjaDogICAgICAg ICAgY29kZWMtY2xlYXItZml4LW9mZi1ieS1vbmUtbGVuZ3RoLWNoZWNrLnBhdGNoCisKKyMgQ1ZF LTIwMjYtMjM1MzAKK1BhdGNoOiAgICAgICAgICBjb2RlYy1wbGFuYXItZml4LWRlY29kZXItbGVu Z3RoLWNoZWNrcy5wYXRjaAorCisjIENWRS0yMDI2LTIzNTMxCitQYXRjaDogICAgICAgICAgY29k ZWMtY2xlYXItY2hlY2stY2xlYXJfZGVjb21yZXNzLWdseXBoRGF0YS5wYXRjaAorCisjIENWRS0y MDI2LTIzODgzCitQYXRjaDogICAgICAgICAgY2xpZW50LXgxMS1maXgtZG91YmxlLWZyZWUtaW4t Y2FzZS1vZi1pbnZhbGlkLXBvaW50ZS5wYXRjaAorCisjIENWRS0yMDI2LTIzODg0CitQYXRjaDog ICAgICAgICAgY2FjaGUtb2Zmc2NyZWVuLWludmFsaWRhdGUtYml0bWFwLWJlZm9yZS1mcmVlLnBh dGNoCisKKyMgQ1ZFLTIwMjYtMjI4NTUKK1BhdGNoOiAgICAgICAgICB1dGlscy1zbWFydGNhcmQt YWRkLWxlbmd0aC12YWxpZGl0eS1jaGVja3MucGF0Y2gKKworIyBDVkUtMjAyNi0yMjg1OAorUGF0 Y2g6ICAgICAgICAgIGNyeXB0by1iYXNlNjQtZW5zdXJlLWNoYXItaXMtc2luZ2VuZC5wYXRjaAor CisjIENWRS0yMDI2LTIyODU5CitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtdXJiZHJjLWNoZWNr LWludGVyZmFjZS1pbmRpY2VzLWJlZm9yZS11c2UucGF0Y2gKKworIyBDVkUtMjAyNi0yNjk1NQor UGF0Y2g6ICAgICAgICAgIGNvZGVjLWNsZWFyLWZpeC1kZXN0aW5hdGlvbi1jaGVja3MucGF0Y2gK KworIyBDVkUtMjAyNi0yNjk2NQorUGF0Y2g6ICAgICAgICAgIGNvZGVjLXBsYW5hci1maXgtbWlz c2luZy1kZXN0aW5hdGlvbi1ib3VuZHMtY2hlY2tzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjI4NTIK K1BhdGNoOiAgICAgICAgICBjaGFubmVscy1hdWRpbi1mcmVlLXVwLW9sZC1hdWRpby1mb3JtYXRz LnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjI4NTQKK1BhdGNoOiAgICAgICAgICBjaGFubmVscy1kcml2 ZS1maXgtY29uc3RhbnQtdHlwZS5wYXRjaAorCisjIENWRS0yMDI2LTIyODU2CitQYXRjaDogICAg ICAgICAgY2hhbm5lbHMtc2VyaWFsLWxvY2stbGlzdC1kaWN0aW9uYXJ5LnBhdGNoCitQYXRjaDog ICAgICAgICAgY2hhbm5lbHMtc2VyaWFsLWV4cGxpY2l0bHktbG9jay1zZXJpYWwtSXJwVGhyZWFk cy5wYXRjaAorCisjIENWRS0yMDI2LTIzNzMyCitQYXRjaDogICAgICAgICAgY29kZWMtY29sb3It YWRkLWZyZWVyZHBfZ2x5cGhfY29udmVydF9leC5wYXRjaAorUGF0Y2g6ICAgICAgICAgIGdkaS1n cmFwaGljcy1Vc2UtZnJlZXJkcF9nbHlwaF9jb252ZXJ0X2V4LnBhdGNoCisKKyMgQ1ZFLTIwMjYt MjM5NDgKK1BhdGNoOiAgICAgICAgICBjb3JlLWluZm8tZml4LW1pc3NpbmctTlVMTC1jaGVjay5w YXRjaAorCisjIENWRS0yMDI2LTI0NDkxCitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtZHJkeW52 Yy1yZXNldC1jaGFubmVsX2NhbGxiYWNrLWJlZm9yZS1jbG9zZS5wYXRjaAorUGF0Y2g6ICAgICAg ICAgIGNoYW5uZWxzLXZpZGVvLXVuaWZ5LWVycm9yLWhhbmRsaW5nLnBhdGNoCitQYXRjaDogICAg ICAgICAgY2hhbm5lbHMtdmlkZW8tZml4LXdyb25nLWNhc3QucGF0Y2gKKworIyBDVkUtMjAyNi0y NDY3NQorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLXVyYmRyYy1kby1ub3QtZnJlZS1Nc0NvbmZp Zy1vbi1mYWlsdXJlLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjQ2NzYKK1BhdGNoOiAgICAgICAgICBj aGFubmVscy1hdWRpbi1yZXNldC1hdWRpbi1mb3JtYXQucGF0Y2gKKworIyBDVkUtMjAyNi0yNDY3 OQorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLXVyYmRyYy1lbnN1cmUtSW50ZXJmYWNlTnVtYmVy LWlzLXdpdGhpbi1yYW4ucGF0Y2gKKworIyBDVkUtMjAyNi0yNDY4MQorUGF0Y2g6ICAgICAgICAg IGNoYW5uZWxzLXVyYmRyYy1jYW5jZWwtYWxsLXVzYi10cmFuc2ZlcnMtb24tY2hhbm5lbC0ucGF0 Y2gKKworIyBDVkUtMjAyNi0yNDY4MworUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLWFpbnB1dC1s b2NrLWNvbnRleHQtd2hlbi11cGRhdGluZy1saXN0ZW5lci5wYXRjaAorCisjIENWRS0yMDI2LTI0 Njg0CitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtcmRwc25kLXRlcm1pbmF0ZS10aHJlYWQtYmVm b3JlLWZyZWUucGF0Y2gKK1BhdGNoOiAgICAgICAgICBjaGFubmVsLXJkcHNuZC1vbmx5LWNsZWFu LXVwLXRocmVhZC1iZWZvcmUtZnJlZS5wYXRjaAorCisjIENWRS0yMDI2LTMxODA2CitQYXRjaDog ICAgICAgICAgY29kZWMtbnNjLWxpbWl0LWNvcHktYXJlYS1pbi1uc2NfcHJvY2Vzc19tZXNzYWdl LnBhdGNoCitQYXRjaDogICAgICAgICAgY29kZWMtbnNjLWZpeC11c2Utb2YtbnNjX3Byb2Nlc3Nf bWVzc2FnZS5wYXRjaAorCisjIENWRS0yMDI2LTMzOTg0CitQYXRjaDogICAgICAgICAgY29kZWMt Y2xlYXItdXBkYXRlLUNMRUFSX1ZCQVJfRU5UUlktc2l6ZS1hZnRlci1hbGxvYy5wYXRjaAorCisj IENWRS0yMDI2LTMzOTgzCitQYXRjaDogICAgICAgICAgY29kZWMtcHJvZ3Jlc3NpdmUtZmFpbC1w cm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViLW9uLWludmFsaWQtdmFsdWVzLnBhdGNoCitQYXRjaDog ICAgICAgICAgY29kZWMtcHJvZ3Jlc3NpdmUtZml4LXVuZGVyZmxvdy1ndWFyZC1pbi1wcm9ncmVz c2l2ZV9yZnhfcXVhbnRfc3ViLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjY5ODYKK1BhdGNoOiAgICAg ICAgICBjbGllbnQteDExLWZpeC14Zl9yYWlsX3dpbmRvd19jb21tb24tY2xlYW51cC5wYXRjaAor CisjIENWRS0yMDI2LTI3OTUxCitQYXRjaDogICAgICAgICAgYWxsb2NhdGlvbnMtZml4LWdyb3d0 aC1vZi1wcmVhbGxvY2F0ZWQtYnVmZmVycy5wYXRjaAorCisjIENWRS0yMDI2LTI5Nzc1CitQYXRj aDogICAgICAgICAgY2FjaGUtYml0bWFwLW92ZXJhbGxvY2F0ZS1iaXRtYXAtY2FjaGUucGF0Y2gK K1BhdGNoOiAgICAgICAgICBjYWNoZS1iaXRtYXAtaW5pdGlhbGl6ZS1vdmVyYWxsb2NhdGVkLWJp dG1hcC1jYWNoZS1leHRyYS1zbG90LnBhdGNoCisKKyMgQ1ZFLTIwMjYtMzE4ODQKK1BhdGNoOiAg ICAgICAgICBjb2RlYy1kc3AtYWRkLWZvcm1hdC1jaGVja3MucGF0Y2gKKworIyBDVkUtMjAyNi0z MTg4MworIyBDVkUtMjAyNi0zMTg4NQorUGF0Y2g6ICAgICAgICAgIGNvZGVjLWRzcC1maXgtYXJy YXktYm91bmRzLWNoZWNrcy5wYXRjaAorCisjIENWRS0yMDI2LTMzOTg1CitQYXRjaDogICAgICAg ICAgY29kZWMtY2xlYXItdXBkYXRlLWNsZWFyX2dseXBoX2VudHJ5LWNvdW50LWFmdGVyLWFsbG9j LnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjU5NTIKK1BhdGNoOiAgICAgICAgICBjbGllbnQteDExLWxv Y2stYXBwd2luZG93LnBhdGNoCitQYXRjaDogICAgICAgICAgY2xpZW50LXgxMS1pbXByb3ZlLXJh aWxzLXdpbmRvdy1sb2NraW5nLnBhdGNoCitQYXRjaDogICAgICAgICAgY2xpZW50LXgxMS1yZWZh Y3Rvci1sb2NraW5nLnBhdGNoCitQYXRjaDogICAgICAgICAgY2xpZW50LXgxMS1maXgtZGVhZGxv Y2stb24tb3V0cHV0LWV4cG9zZS5wYXRjaAorCisjIENWRS0yMDI2LTQ1NzAwCitQYXRjaDogICAg ICAgICAgY29kZWMtcGxhbmFyLWZpeC1ib3VuZHMtY2hlY2tzLnBhdGNoCisKKyMgQ1ZFLTIwMjYt Njg1ODAKK1BhdGNoOiAgICAgICAgICBjaGFubmVscy1hdWRpbi1saW1pdC1GcmFtZXNQZXJQYWNr ZXQucGF0Y2gKKworIyBDVkUtMjAyNi02NzI5OQorUGF0Y2g6ICAgICAgICAgIGNvcmUtbWVzc2Fn ZS1maXgtdXBkYXRlX21lc3NhZ2VfV2luZG93SWNvbi5wYXRjaAorCisjIENWRS0yMDI2LTY0NjI0 CitQYXRjaDogICAgICAgICAgY2xpZW50LWNvbW1vbi1kZWFjdGl2YXRlLWNsaS1wYXJzaW5nLWlu LXJkcC1maWxlcy5wYXRjaAorCisjIENWRS0yMDI2LTY3Mjg5CitQYXRjaDogICAgICAgICAgd2lu cHItY3J0LWFkZC1mdW5jdGlvbnMtdG8tdGVzdC1zdHJpbmcucGF0Y2gKK1BhdGNoOiAgICAgICAg ICBjb3JlLXJlZGlyZWN0aW9uLWNoZWNrLXJlZGlyZWN0aW9uLXZhbHVlcy1mb3ItdmFsaWRpdHku cGF0Y2gKK1BhdGNoOiAgICAgICAgICBjb3JlLXJlZGlyZWN0aW9uLXJlbGF4LWNoZWNrcy5wYXRj aAorCiBCdWlsZFJlcXVpcmVzOiAgZ2NjCiBCdWlsZFJlcXVpcmVzOiAgZ2NjLWMrKwogQnVpbGRS ZXF1aXJlczogIGFsc2EtbGliLWRldmVsCkBAIC0yNzAsNiArNDAxLDI3IEBAIHJtIC1yZnYgJXti dWlsZHJvb3R9JXtfYmluZGlyfQogJXtfbGliZGlyfS9wa2djb25maWcvd2lucHItdG9vbHMyLnBj CiAKICVjaGFuZ2Vsb2cKKyogTW9uIEF1ZyAzMSAyMDI2IE9uZHJlaiBIb2x5IDxvaG9seUByZWRo YXQuY29tPiAtIDIuMTEuNy0xNgorLSBCYWNrcG9ydCBzZXZlcmFsIENWRSBmaXhlcyAoQ1ZFLTIw MjYtMjI4NTIsIENWRS0yMDI2LTIyODU0LCBDVkUtMjAyNi0yMjg1NSwKKyAgQ1ZFLTIwMjYtMjI4 NTYsIENWRS0yMDI2LTIyODU4LCBDVkUtMjAyNi0yMjg1OSwgQ1ZFLTIwMjYtMjM1MzAsCisgIENW RS0yMDI2LTIzNTMxLCBDVkUtMjAyNi0yMzUzMiwgQ1ZFLTIwMjYtMjM1MzMsIENWRS0yMDI2LTIz NTM0LAorICBDVkUtMjAyNi0yMzczMiwgQ1ZFLTIwMjYtMjM4ODMsIENWRS0yMDI2LTIzODg0LCBD VkUtMjAyNi0yMzk0OCwKKyAgQ1ZFLTIwMjYtMjQ0OTEsIENWRS0yMDI2LTI0Njc1LCBDVkUtMjAy Ni0yNDY3NiwgQ1ZFLTIwMjYtMjQ2NzksCisgIENWRS0yMDI2LTI0NjgxLCBDVkUtMjAyNi0yNDY4 MywgQ1ZFLTIwMjYtMjQ2ODQsIENWRS0yMDI2LTI1OTUyLAorICBDVkUtMjAyNi0yNjk1NSwgQ1ZF LTIwMjYtMjY5NjUsIENWRS0yMDI2LTI2OTg2LCBDVkUtMjAyNi0yNzk1MSwKKyAgQ1ZFLTIwMjYt Mjk3NzUsIENWRS0yMDI2LTMxODA2LCBDVkUtMjAyNi0zMTg4MywgQ1ZFLTIwMjYtMzE4ODQsCisg IENWRS0yMDI2LTMxODg1LCBDVkUtMjAyNi0zMzk4MywgQ1ZFLTIwMjYtMzM5ODQsIENWRS0yMDI2 LTMzOTg1LAorICBDVkUtMjAyNi00NTcwMCwgQ1ZFLTIwMjYtNjQ2MjQsIENWRS0yMDI2LTY3Mjg5 LCBDVkUtMjAyNi02NzI5OSBhbmQKKyAgQ1ZFLTIwMjYtNjg1ODApCisgIFJlc29sdmVzOiByaGJ6 IzI0MzA5MTksIHJoYnojMjQzMDkwOCwgcmhieiMyNDMwODk4LCByaGJ6IzI0MzA5MTQsIHJoYnoj MjQzMDkwMworICBSZXNvbHZlczogcmhieiMyNDMwOTI0LCByaGJ6IzI0MzA5MzMsIHJoYnojMjQy OTgwOCwgcmhieiMyNDI5ODIzLCByaGJ6IzI0Mjk3OTQKKyAgUmVzb2x2ZXM6IHJoYnojMjQ0MzE0 NiwgcmhieiMyNDQyOTc1LCByaGJ6IzI0Mjk3OTksIHJoYnojMjQyOTgxNCwgcmhieiMyNDI5ODIx CisgIFJlc29sdmVzOiByaGJ6IzI0MzgzMDksIHJoYnojMjQzODMyMSwgcmhieiMyNDM4MzA4LCBy aGJ6IzI0MzgzMjgsIHJoYnojMjQzODMyNAorICBSZXNvbHZlczogcmhieiMyNDM4MzAyLCByaGJ6 IzI0MzgzMTAsIHJoYnojMjQzODMwMCwgcmhieiMyNDQ3Mzk0LCByaGJ6IzI0NTMyNDMKKyAgUmVz b2x2ZXM6IHJoYnojMjQ1MzI0MCwgcmhieiMyNDQyODM3LCByaGJ6IzI0NDI4MTAsIHJoYnojMjQ0 NzQyNiwgcmhieiMyNDQ3NDIyCisgIFJlc29sdmVzOiByaGJ6IzI0NDc0MTMsIHJoYnojMjQ0NzQx NiwgcmhieiMyNDUzMjQ3LCByaGJ6IzI0NDI4NTcsIHJoYnojMjQ5MTY4MworICBSZXNvbHZlczog cmhieiMyNTEwMjk1LCByaGJ6IzI1MTA2NDMsIHJoYnojMjUwMzY0NiwgcmhieiMyNTEwNDQ4CisK ICogV2VkIEp1bCAxNSAyMDI2IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVk b3JhcHJvamVjdC5vcmc+IC0gMi4xMS43LTE1CiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3Jh cHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDVfTWFzc19SZWJ1aWxkCiAKCmRpZmYgLS1naXQgYS9n ZGktZ2Z4LXByb3Blcmx5LWNsYW1wLVN1cmZhY2VUb1N1cmZhY2UucGF0Y2ggYi9nZGktZ2Z4LXBy b3Blcmx5LWNsYW1wLVN1cmZhY2VUb1N1cmZhY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODAwMjg3NwotLS0gL2Rldi9udWxsCisrKyBiL2dkaS1nZngtcHJvcGVy bHktY2xhbXAtU3VyZmFjZVRvU3VyZmFjZS5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGVm OTlkYTAyMDU5OWE2NjZiN2QxNzFlZWM2YWI1MjdiNDdkZDMzZjMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwg MjIgSmFuIDIwMjYgMTI6NDc6NDIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2dkaSxnZnhdIHBy b3Blcmx5IGNsYW1wIFN1cmZhY2VUb1N1cmZhY2UKKworQmFja3BvcnQgb2YgY29tbWl0IGM0YTdj MzcxMzQyZWRmMGQzMDdjZWE3MjhmNTZkMzMwMmYwYWIzOGMuCisKK0NvLUF1dGhvcmVkLUJ5OiBD bGF1ZGUgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4KKy0tLQorIGxpYmZyZWVyZHAvZ2RpL2dmeC5j IHwgOSArKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9nZGkvZ2Z4LmMgYi9saWJmcmVlcmRw L2dkaS9nZnguYworaW5kZXggMzk3MDcxNWUwLi45NjhhNWExN2MgMTAwNjQ0CistLS0gYS9saWJm cmVlcmRwL2dkaS9nZnguYworKysrIGIvbGliZnJlZXJkcC9nZGkvZ2Z4LmMKK0BAIC0xMTc1LDcg KzExNzUsNiBAQCBzdGF0aWMgVUlOVCBnZGlfU3VyZmFjZVRvU3VyZmFjZShSZHBnZnhDbGllbnRD b250ZXh0KiBjb250ZXh0LAorIAlVSU5UIHN0YXR1cyA9IEVSUk9SX0lOVEVSTkFMX0VSUk9SOwor IAlVSU5UMTYgaW5kZXg7CisgCUJPT0wgc2FtZVN1cmZhY2U7CistCVVJTlQzMiBuV2lkdGgsIG5I ZWlnaHQ7CisgCWNvbnN0IFJFQ1RBTkdMRV8xNiogcmVjdFNyYzsKKyAJUkVDVEFOR0xFXzE2IGlu dmFsaWRSZWN0OworIAlnZGlHZnhTdXJmYWNlKiBzdXJmYWNlU3JjOworQEAgLTExOTksOCArMTE5 OCw4IEBAIHN0YXRpYyBVSU5UIGdkaV9TdXJmYWNlVG9TdXJmYWNlKFJkcGdmeENsaWVudENvbnRl eHQqIGNvbnRleHQsCisgCWlmICghaXNfcmVjdF92YWxpZChyZWN0U3JjLCBzdXJmYWNlU3JjLT53 aWR0aCwgc3VyZmFjZVNyYy0+aGVpZ2h0KSkKKyAJCWdvdG8gZmFpbDsKKyAKKy0JbldpZHRoID0g cmVjdFNyYy0+cmlnaHQgLSByZWN0U3JjLT5sZWZ0OworLQluSGVpZ2h0ID0gcmVjdFNyYy0+Ym90 dG9tIC0gcmVjdFNyYy0+dG9wOworKwljb25zdCBVSU5UMzIgbldpZHRoID0gcmVjdFNyYy0+cmln aHQgLSByZWN0U3JjLT5sZWZ0OworKwljb25zdCBVSU5UMzIgbkhlaWdodCA9IHJlY3RTcmMtPmJv dHRvbSAtIHJlY3RTcmMtPnRvcDsKKyAKKyAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgc3VyZmFj ZVRvU3VyZmFjZS0+ZGVzdFB0c0NvdW50OyBpbmRleCsrKQorIAl7CitAQCAtMTIwOSw4ICsxMjA4 LDEwIEBAIHN0YXRpYyBVSU5UIGdkaV9TdXJmYWNlVG9TdXJmYWNlKFJkcGdmeENsaWVudENvbnRl eHQqIGNvbnRleHQsCisgCQlpZiAoIWlzX3JlY3RfdmFsaWQoJnJlY3QsIHN1cmZhY2VEc3QtPndp ZHRoLCBzdXJmYWNlRHN0LT5oZWlnaHQpKQorIAkJCWdvdG8gZmFpbDsKKyAKKysJCWNvbnN0IFVJ TlQzMiByd2lkdGggPSByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0OworKwkJY29uc3QgVUlOVDMyIHJo ZWlnaHQgPSByZWN0LmJvdHRvbSAtIHJlY3QudG9wOworIAkJaWYgKCFmcmVlcmRwX2ltYWdlX2Nv cHkoc3VyZmFjZURzdC0+ZGF0YSwgc3VyZmFjZURzdC0+Zm9ybWF0LCBzdXJmYWNlRHN0LT5zY2Fu bGluZSwKKy0JCSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RQdC0+eCwgZGVzdFB0LT55LCBu V2lkdGgsIG5IZWlnaHQsIHN1cmZhY2VTcmMtPmRhdGEsCisrCQkgICAgICAgICAgICAgICAgICAg ICAgICBkZXN0UHQtPngsIGRlc3RQdC0+eSwgcndpZHRoLCByaGVpZ2h0LCBzdXJmYWNlU3JjLT5k YXRhLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZVNyYy0+Zm9ybWF0LCBzdXJm YWNlU3JjLT5zY2FubGluZSwgcmVjdFNyYy0+bGVmdCwKKyAJCSAgICAgICAgICAgICAgICAgICAg ICAgIHJlY3RTcmMtPnRvcCwgTlVMTCwgRlJFRVJEUF9GTElQX05PTkUpKQorIAkJCWdvdG8gZmFp bDsKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9nZGktZ3JhcGhpY3MtVXNlLWZyZWVyZHBf Z2x5cGhfY29udmVydF9leC5wYXRjaCBiL2dkaS1ncmFwaGljcy1Vc2UtZnJlZXJkcF9nbHlwaF9j b252ZXJ0X2V4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOWI1 NGUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGktZ3JhcGhpY3MtVXNlLWZyZWVyZHBfZ2x5cGhfY29u dmVydF9leC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGQyNWZmZDYwOGJmMmJkMzgwMjJh MzkzMGQwYjNmYzFiN2M4NzNjMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRy ZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFNhdCwgMjggTWFyIDIwMjYgMTI6MTM6 MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2dkaSxncmFwaGljc10gVXNlIGZyZWVyZHBfZ2x5 cGhfY29udmVydF9leAorCitCYWNrcG9ydCBvZiBjb21taXQgOWYwZWIzYjdkNDMwNjlhMWU5NzM0 NjRiY2I0M2QxZWY5NjVhZTY1ZS4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGxpYmZyZWVy ZHAvZ2RpL2dyYXBoaWNzLmMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvZ2RpL2dyYXBoaWNz LmMgYi9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jCitpbmRleCBkYWIxNTljNDMuLmIxMTI5ZmI3 YyAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvZ2RpL2dyYXBoaWNzLmMKKysrKyBiL2xpYmZyZWVy ZHAvZ2RpL2dyYXBoaWNzLmMKK0BAIC0yNjIsNyArMjYyLDYgQEAgc3RhdGljIEJZVEUqIGZyZWVy ZHBfZ2x5cGhfY29udmVydF9leChVSU5UMzIgd2lkdGgsIFVJTlQzMiBoZWlnaHQsIGNvbnN0IEJZ VEUqIGQKKyAKKyBzdGF0aWMgQk9PTCBnZGlfR2x5cGhfTmV3KHJkcENvbnRleHQqIGNvbnRleHQs IGNvbnN0IHJkcEdseXBoKiBnbHlwaCkKKyB7CistCUJZVEUqIGRhdGE7CisgCWdkaUdseXBoKiBn ZGlfZ2x5cGg7CisgCisgCWlmICghY29udGV4dCB8fCAhZ2x5cGgpCitAQCAtMjc1LDcgKzI3NCw3 IEBAIHN0YXRpYyBCT09MIGdkaV9HbHlwaF9OZXcocmRwQ29udGV4dCogY29udGV4dCwgY29uc3Qg cmRwR2x5cGgqIGdseXBoKQorIAkJcmV0dXJuIEZBTFNFOworIAorIAlnZGlfZ2x5cGgtPmhkYy0+ Zm9ybWF0ID0gUElYRUxfRk9STUFUX01PTk87CistCWRhdGEgPSBmcmVlcmRwX2dseXBoX2NvbnZl cnQoZ2x5cGgtPmN4LCBnbHlwaC0+Y3ksIGdseXBoLT5haik7CisrCUJZVEUqIGRhdGEgPSBmcmVl cmRwX2dseXBoX2NvbnZlcnRfZXgoZ2x5cGgtPmN4LCBnbHlwaC0+Y3ksIGdseXBoLT5haiwgZ2x5 cGgtPmNiKTsKKyAKKyAJaWYgKCFkYXRhKQorIAl7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0 IGEvdXRpbHMtc21hcnRjYXJkLWFkZC1sZW5ndGgtdmFsaWRpdHktY2hlY2tzLnBhdGNoIGIvdXRp bHMtc21hcnRjYXJkLWFkZC1sZW5ndGgtdmFsaWRpdHktY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMmViZDcKLS0tIC9kZXYvbnVsbAorKysgYi91dGls cy1zbWFydGNhcmQtYWRkLWxlbmd0aC12YWxpZGl0eS1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSw3 OSBAQAorRnJvbSAwNzBmOWUwNzBjNTlhMTIxY2Q5MzU0MTgzNWRjMDA4NjA4NGJiNmFkIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+ CitEYXRlOiBUdWUsIDE3IEZlYiAyMDI2IDExOjA1OjU5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hd IFt1dGlscyxzbWFydGNhcmRdIGFkZCBsZW5ndGggdmFsaWRpdHkgY2hlY2tzCisKK0JhY2twb3J0 IG9mIGNvbW1pdCA1N2M1NjQ3ZDk4YzJhMDI2ZGU4YjY4MTE1OWNiMTg4Y2EwNDM5ZWY4LgorCitD by1BdXRob3JlZC1CeTogQ3Vyc29yIDxjdXJzb3JhZ2VudEBjdXJzb3IuY29tPgorLS0tCisgY2hh bm5lbHMvc21hcnRjYXJkL2NsaWVudC9zbWFydGNhcmRfcGFjay5jIHwgMjcgKysrKysrKysrKysr KysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvc21hcnRjYXJkL2NsaWVudC9zbWFydGNhcmRf cGFjay5jIGIvY2hhbm5lbHMvc21hcnRjYXJkL2NsaWVudC9zbWFydGNhcmRfcGFjay5jCitpbmRl eCBmNzBlYjRlNWQuLjY4N2YxMTEwYiAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3NtYXJ0Y2FyZC9j bGllbnQvc21hcnRjYXJkX3BhY2suYworKysrIGIvY2hhbm5lbHMvc21hcnRjYXJkL2NsaWVudC9z bWFydGNhcmRfcGFjay5jCitAQCAtOTgsMTMgKzk4LDE2IEBAIHN0YXRpYyBCT09MIHNtYXJ0Y2Fy ZF9uZHJfcG9pbnRlcl9yZWFkXyh3U3RyZWFtKiBzLCBVSU5UMzIqIGluZGV4LCBVSU5UMzIqIHB0 ciwKKyAJcmV0dXJuIFRSVUU7CisgfQorIAorLXN0YXRpYyBMT05HIHNtYXJ0Y2FyZF9uZHJfcmVh ZCh3U3RyZWFtKiBzLCBCWVRFKiogZGF0YSwgc2l6ZV90IG1pbiwgc2l6ZV90IGVsZW1lbnRTaXpl LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZHJfcHRyX3QgdHlwZSkKKytzdGF0 aWMgTE9ORyBzbWFydGNhcmRfbmRyX3JlYWRfZXgod1N0cmVhbSogcywgQllURSoqIGRhdGEsIHNp emVfdCBtaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBlbGVt ZW50U2l6ZSwgbmRyX3B0cl90IHR5cGUsIHNpemVfdCogcGxlbikKKyB7CisgCXNpemVfdCBsZW4s IG9mZnNldCwgbGVuMjsKKyAJdm9pZCogcjsKKyAJc2l6ZV90IHJlcXVpcmVkOworIAorKwlpZiAo cGxlbikKKysJCSpwbGVuID0gMDsKKysKKyAJc3dpdGNoICh0eXBlKQorIAl7CisgCQljYXNlIE5E Ul9QVFJfRlVMTDoKK0BAIC0xODEsMTEgKzE4NCwyMCBAQCBzdGF0aWMgTE9ORyBzbWFydGNhcmRf bmRyX3JlYWQod1N0cmVhbSogcywgQllURSoqIGRhdGEsIHNpemVfdCBtaW4sIHNpemVfdCBlbGVt ZQorIAlpZiAoIXIpCisgCQlyZXR1cm4gU0NBUkRfRV9OT19NRU1PUlk7CisgCVN0cmVhbV9SZWFk KHMsIHIsIGxlbik7CistCXNtYXJ0Y2FyZF91bnBhY2tfcmVhZF9zaXplX2FsaWduKE5VTEwsIHMs IGxlbiwgNCk7CisrCWNvbnN0IExPTkcgcGFkID0gc21hcnRjYXJkX3VucGFja19yZWFkX3NpemVf YWxpZ24oTlVMTCwgcywgbGVuLCA0KTsKKysJbGVuICs9IChzaXplX3QpcGFkOworIAkqZGF0YSA9 IHI7CisrCWlmIChwbGVuKQorKwkJKnBsZW4gPSBsZW47CisgCXJldHVybiBTVEFUVVNfU1VDQ0VT UzsKKyB9CisgCisrc3RhdGljIExPTkcgc21hcnRjYXJkX25kcl9yZWFkKHdTdHJlYW0qIHMsIEJZ VEUqKiBkYXRhLCBzaXplX3QgbWluLCBzaXplX3QgZWxlbWVudFNpemUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5kcl9wdHJfdCB0eXBlKQorK3sKKysJcmV0dXJuIHNtYXJ0Y2Fy ZF9uZHJfcmVhZF9leChzLCBkYXRhLCBtaW4sIGVsZW1lbnRTaXplLCB0eXBlLCBOVUxMKTsKKyt9 CisrCisgc3RhdGljIEJPT0wgc21hcnRjYXJkX25kcl9wb2ludGVyX3dyaXRlKHdTdHJlYW0qIHMs IFVJTlQzMiogaW5kZXgsIERXT1JEIGxlbmd0aCkKKyB7CisgCWNvbnN0IFVJTlQzMiBuZHJQdHIg PSAweDIwMDAwICsgKCppbmRleCkgKiA0OworQEAgLTM0MjcsMTIgKzM0MzksMTUgQEAgTE9ORyBz bWFydGNhcmRfdW5wYWNrX3NldF9hdHRyaWJfY2FsbChTTUFSVENBUkRfREVWSUNFKiBzbWFydGNh cmQsIHdTdHJlYW0qIHMsIFMKKyAKKyAJaWYgKG5kclB0cikKKyAJeworLQkJLy8gVE9ETzogY2Fs bC0+Y2JBdHRyTGVuIHdhcyBsYXJnZXIgdGhhbiB0aGUgcG9pbnRlciB2YWx1ZS4KKy0JCS8vIFRP RE86IE1heWJlIG5lZWQgdG8gcmVmaW5lIHRoZSBjaGVja3M/CistCQlzdGF0dXMgPSBzbWFydGNh cmRfbmRyX3JlYWQocywgJmNhbGwtPnBiQXR0ciwgMCwgMSwgTkRSX1BUUl9TSU1QTEUpOworKwkJ c2l6ZV90IGxlbiA9IDA7CisrCQlzdGF0dXMgPSBzbWFydGNhcmRfbmRyX3JlYWRfZXgocywgJmNh bGwtPnBiQXR0ciwgMCwgMSwgTkRSX1BUUl9TSU1QTEUsICZsZW4pOworIAkJaWYgKHN0YXR1cyAh PSBTQ0FSRF9TX1NVQ0NFU1MpCisgCQkJcmV0dXJuIHN0YXR1czsKKysJCWlmIChjYWxsLT5jYkF0 dHJMZW4gPiBsZW4pCisrCQkJY2FsbC0+Y2JBdHRyTGVuID0gKERXT1JEKWxlbjsKKyAJfQorKwll bHNlCisrCQljYWxsLT5jYkF0dHJMZW4gPSAwOworIAlzbWFydGNhcmRfdHJhY2Vfc2V0X2F0dHJp Yl9jYWxsKHNtYXJ0Y2FyZCwgY2FsbCk7CisgCXJldHVybiBTQ0FSRF9TX1NVQ0NFU1M7CisgfQor LS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhL3dpbnByLWNydC1hZGQtZnVuY3Rpb25zLXRvLXRl c3Qtc3RyaW5nLnBhdGNoIGIvd2lucHItY3J0LWFkZC1mdW5jdGlvbnMtdG8tdGVzdC1zdHJpbmcu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIzNjRhYwotLS0gL2Rl di9udWxsCisrKyBiL3dpbnByLWNydC1hZGQtZnVuY3Rpb25zLXRvLXRlc3Qtc3RyaW5nLnBhdGNo CkBAIC0wLDAgKzEsMjY2IEBACitGcm9tIGE3YTQ3YmMwYmRhYjcyM2I2NzRmYjA1ZjUxZTkzYWUw MDdlZDY0MTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcm1pbiBOb3ZhayA8YXJt aW4ubm92YWtAdGhpbmNhc3QuY29tPgorRGF0ZTogVGh1LCA5IEp1bCAyMDI2IDA4OjM0OjIzICsw MjAwCitTdWJqZWN0OiBbUEFUQ0hdIFt3aW5wcixjcnRdIGFkZCBmdW5jdGlvbnMgdG8gdGVzdCBz dHJpbmcKKworKiB3aW5wcl9zdHJfaGFzX25ld2xpbmVzIHRvIGNoZWNrIGZvciBuZXdsaW5lcyBp biBhIHN0cmluZworKiB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsIGFuZCB3aW5wcl9zdHJfaXNfdmFs aWRfdXJsTiB0byBjaGVjayBpZiBhCisgIHN0cmluZyBpcyBhIHZhbGlkIHVybAorLS0tCisgd2lu cHIvaW5jbHVkZS93aW5wci9zdHJpbmcuaCAgICAgICAgIHwgIDUgKysKKyB3aW5wci9saWJ3aW5w ci9jcnQvQ01ha2VMaXN0cy50eHQgICAgfCAgOCArKysKKyB3aW5wci9saWJ3aW5wci9jcnQvc3Ry aW5nLmMgICAgICAgICAgfCA5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgd2lucHIv bGlid2lucHIvY3J0L3Rlc3QvVGVzdFN0cmluZy5jIHwgODIgKysrKysrKysrKysrKysrKysrKysr KysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxOTEgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEv d2lucHIvaW5jbHVkZS93aW5wci9zdHJpbmcuaCBiL3dpbnByL2luY2x1ZGUvd2lucHIvc3RyaW5n LmgKK2luZGV4IGJiOThkZmZkYy4uN2RlOWY5MzRmIDEwMDY0NAorLS0tIGEvd2lucHIvaW5jbHVk ZS93aW5wci9zdHJpbmcuaAorKysrIGIvd2lucHIvaW5jbHVkZS93aW5wci9zdHJpbmcuaAorQEAg LTMxLDYgKzMxLDExIEBAIGV4dGVybiAiQyIKKyB7CisgI2VuZGlmCisKKysJV0lOUFJfQVBJIEJP T0wgd2lucHJfc3RyX2lzX3ZhbGlkX3VybChjb25zdCBjaGFyKiBzdHIpOworKwlXSU5QUl9BUEkg Qk9PTCB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsTihjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4p OworKwlXSU5QUl9BUEkgQk9PTCB3aW5wcl9zdHJfaGFzX25ld2xpbmVzKGNvbnN0IGNoYXIqIHN0 cik7CisrCisrCisgCVdJTlBSX0FQSSBCT09MIHdpbnByX3N0cl9hcHBlbmQoY29uc3QgY2hhciog d2hhdCwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSwKKyAJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworCitkaWZmIC0tZ2l0IGEvd2lucHIv bGlid2lucHIvY3J0L0NNYWtlTGlzdHMudHh0IGIvd2lucHIvbGlid2lucHIvY3J0L0NNYWtlTGlz dHMudHh0CitpbmRleCA1ZWU0YmJkMWUuLjUzOGU3NGRjZiAxMDA2NDQKKy0tLSBhL3dpbnByL2xp YndpbnByL2NydC9DTWFrZUxpc3RzLnR4dAorKysrIGIvd2lucHIvbGlid2lucHIvY3J0L0NNYWtl TGlzdHMudHh0CitAQCAtMjIsNiArMjIsMTQgQEAgc2V0IChDUlRfRklMRVMgYWxpZ25tZW50LmMK KyAJdW5pY29kZS5jCisgCXN0cmluZy5jKQorCisraW5jbHVkZShDaGVja1N5bWJvbEV4aXN0cykK KytjaGVja19zeW1ib2xfZXhpc3RzKHJlZ2NvbXAgcmVnZXguaCBXSU5QUl9IQVZFX1JFR0NPTVAp CisrY2hlY2tfc3ltYm9sX2V4aXN0cyhyZWdleGVjIHJlZ2V4LmggV0lOUFJfSEFWRV9SRUdFWEVD KQorK2NoZWNrX3N5bWJvbF9leGlzdHMocmVnZnJlZSByZWdleC5oIFdJTlBSX0hBVkVfUkVHRlJF RSkKKytpZihXSU5QUl9IQVZFX1JFR0NPTVAgQU5EIFdJTlBSX0hBVkVfUkVHRVhFQyBBTkQgV0lO UFJfSEFWRV9SRUdGUkVFKQorKyAgd2lucHJfZGVmaW5pdGlvbl9hZGQoLURXSU5QUl9IQVZFX1JF R0NPTVApCisrZW5kaWYoKQorKworIGlmIChOT1QgV0lUSF9JQ1UpCisgCXNldCAoQ1JUX0ZJTEVT ICR7Q1JUX0ZJTEVTfQorIAkJdXRmLmMKK2RpZmYgLS1naXQgYS93aW5wci9saWJ3aW5wci9jcnQv c3RyaW5nLmMgYi93aW5wci9saWJ3aW5wci9jcnQvc3RyaW5nLmMKK2luZGV4IDY1OTZiNDJmNS4u NDY1YjhkMTMzIDEwMDY0NAorLS0tIGEvd2lucHIvbGlid2lucHIvY3J0L3N0cmluZy5jCisrKysg Yi93aW5wci9saWJ3aW5wci9jcnQvc3RyaW5nLmMKK0BAIC0yOSwxMSArMjksNzEgQEAKKyAjaW5j bHVkZSA8d2lucHIvYXNzZXJ0Lmg+CisgI2luY2x1ZGUgPHdpbnByL2VuZGlhbi5oPgorCisrI2lm IGRlZmluZWQoV0lOUFJfSEFWRV9SRUdDT01QKQorKyNpbmNsdWRlIDxyZWdleC5oPgorKyNlbmRp ZgorKworIC8qIFN0cmluZyBNYW5pcHVsYXRpb24gKENSVCk6IGh0dHA6Ly9tc2RuLm1pY3Jvc29m dC5jb20vZW4tdXMvbGlicmFyeS9mMDE1MXM0eC5hc3B4ICovCisKKyAjaW5jbHVkZSAiLi4vbG9n LmgiCisgI2RlZmluZSBUQUcgV0lOUFJfVEFHKCJjcnQiKQorCisrQk9PTCB3aW5wcl9zdHJfaXNf dmFsaWRfdXJsTihjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCisreworKwlpZiAoIXN0ciB8 fCAobGVuID09IDApKQorKwkJcmV0dXJuIEZBTFNFOworKworKwljaGFyKiB1cmwgPSBzdHJuZHVw KHN0ciwgbGVuKTsKKysJaWYgKCF1cmwpCisrCQlyZXR1cm4gRkFMU0U7CisrCisrCWNvbnN0IEJP T0wgcmMgPSB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsKHVybCk7CisrCWZyZWUodXJsKTsKKysJcmV0 dXJuIHJjOworK30KKysKKysjaWYgZGVmaW5lZChfV0lOMzIpCisrI2luY2x1ZGUgPHNobHdhcGku aD4KKysKKytCT09MIHdpbnByX3N0cl9pc192YWxpZF91cmwoY29uc3QgY2hhciogc3RyKQorK3sK KysJaWYgKCFzdHIpCisrCQlyZXR1cm4gRkFMU0U7CisrCXJldHVybiBQYXRoSXNVUkxBKHN0cik7 CisrfQorKworKyNlbGlmIGRlZmluZWQoV0lOUFJfSEFWRV9SRUdDT01QKQorK0JPT0wgd2lucHJf c3RyX2lzX3ZhbGlkX3VybChjb25zdCBjaGFyKiBzdHIpCisreworKwlyZWdleF90IHJlZ2V4Owor Kwljb25zdCBjaGFyIHBhdHRlcm5bXSA9ICJeKFthLXpdKzovLyk/KFthLXpBLVowLTkuLV0rKSg6 WzAtOV0rKT8oL1thLXpBLVowLTkuLz89JiUtXSopPyQiOworKwlpbnQgcmV0OworKworKwlpZiAo IXN0cikKKysJCXJldHVybiBGQUxTRTsKKysJbWVtc2V0KCZyZWdleCwgMCwgc2l6ZW9mKHJlZ2V4 KSk7CisrCisrCXJldCA9IHJlZ2NvbXAoJnJlZ2V4LCBwYXR0ZXJuLCBSRUdfRVhURU5ERUQpOwor KwlpZiAocmV0KQorKwl7CisrCQlwcmludGYoIkNvdWxkIG5vdCBjb21waWxlIHJlZ2V4XG4iKTsK KysJCXJldHVybiBGQUxTRTsKKysJfQorKworKwlyZXQgPSByZWdleGVjKCZyZWdleCwgc3RyLCAw LCBOVUxMLCAwKTsKKysJcmVnZnJlZSgmcmVnZXgpOworKwlyZXR1cm4gcmV0ID09IDA7CisrfQor KworKyNlbHNlCisrQk9PTCB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsKGNvbnN0IGNoYXIqIHN0cikK Kyt7CisrCVdJTlBSX1VOVVNFRChzdHIpOworKwlXTG9nX1dBUk4oVEFHLCAiVVJMIHZhbGlkYXRp b24gbm90IHN1cHBvcnRlZCBieSB5b3VyIGJ1aWxkLCBub3QgcGVyZm9ybWluZyBjaGVjay4iKTsK KysJcmV0dXJuIFRSVUU7CisrfQorKyNlbmRpZgorKworIEJPT0wgd2lucHJfc3RyX2FwcGVuZChj b25zdCBjaGFyKiB3aGF0LCBjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBz ZXBhcmF0b3IpCisgeworIAljb25zdCBzaXplX3QgdXNlZCA9IHN0cm5sZW4oYnVmZmVyLCBzaXpl KTsKK0BAIC02MzYsMyArNjk2LDM5IEBAIElOVDY0IEdldExpbmUoY2hhcioqIGxpbmVwdHIsIHNp emVfdCogc2l6ZSwgRklMRSogc3RyZWFtKQorIAlyZXR1cm4gLTE7CisgI2VuZGlmCisgfQorKwor K0JPT0wgd2lucHJfc3RyX2hhc19uZXdsaW5lcyhjb25zdCBjaGFyKiBzdHIpCisreworKwlpZiAo IXN0cikKKysJCXJldHVybiBGQUxTRTsKKysJZG8KKysJeworKwkJY2hhciBjID0gKnN0cisrOwor KwkJc3dpdGNoIChjKQorKwkJeworKwkJCWNhc2UgJ1xyJzoKKysJCQljYXNlICdcbic6CisrCQkJ Y2FzZSAweDBiOiAgICAgICAvKiBWVCB2ZXJ0aWNhbCB0YWIgKi8KKysJCQljYXNlIDB4MGM6ICAg ICAgIC8qIEZGIGZvcm0gZmVlZCAqLworKwkJCWNhc2UgKGNoYXIpMHg4NTogLyogTkVMIG5leHQg bGluZSAqLworKwkJCQlyZXR1cm4gVFJVRTsKKysJCQljYXNlIDB4MjA6CisrCQkJeworKwkJCQlz d2l0Y2ggKCpzdHIpCisrCQkJCXsKKysJCQkJCWNhc2UgMHgyODogLyogTFMgbGluZSBzZXBhcmF0 b3IgKi8KKysJCQkJCWNhc2UgMHgyOTogLyogUFMgcGFyYWdyYXBoIHNlcGFyYXRvciAqLworKwkJ CQkJCXJldHVybiBUUlVFOworKwkJCQkJZGVmYXVsdDoKKysJCQkJCQlicmVhazsKKysJCQkJfQor KwkJCX0KKysJCQlicmVhazsKKysKKysJCQljYXNlICdcMCc6CisrCQkJCXJldHVybiBGQUxTRTsK KysJCQlkZWZhdWx0OgorKwkJCQlicmVhazsKKysJCX0KKysJfSB3aGlsZSAoMSk7CisrfQorZGlm ZiAtLWdpdCBhL3dpbnByL2xpYndpbnByL2NydC90ZXN0L1Rlc3RTdHJpbmcuYyBiL3dpbnByL2xp YndpbnByL2NydC90ZXN0L1Rlc3RTdHJpbmcuYworaW5kZXggZGYxNTRmZTFjLi5iY2E0NzBiZGQg MTAwNjQ0CistLS0gYS93aW5wci9saWJ3aW5wci9jcnQvdGVzdC9UZXN0U3RyaW5nLmMKKysrKyBi L3dpbnByL2xpYndpbnByL2NydC90ZXN0L1Rlc3RTdHJpbmcuYworQEAgLTI3LDYgKzI3LDc5IEBA IHN0YXRpYyBXQ0hBUiB0ZXN0RGVsaW1pdGVyW10gPSB7ICdccicsICdcbicsICdcMCcgfTsKKwor ICNkZWZpbmUgdGVzdERlbGltaXRlcl9MZW5ndGggKChzaXplb2YodGVzdERlbGltaXRlcikgLyBz aXplb2YoV0NIQVIpKSAtIDEpCisKKytzdGF0aWMgQk9PTCB0ZXN0X3ZhbGlkX3VybCh2b2lkKQor K3sKKysJc3RydWN0IHRlc3RfdAorKwl7CisrCQljaGFyKiBzdHJpbmc7CisrCQlzaXplX3QgbGVu OworKwkJQk9PTCBpc1VybDsKKysJfTsKKysKKysJc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXN0X3Qg dGVzdHNbXSA9IHsgeyAiZm9vLmJhci5ibGFibGEiLCAxNSwgVFJVRSB9LAorKwkJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJzb21laG9zdG5hbWUiLCAxMiwgVFJVRSB9LAor KwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJzb21laG9zdG5hbWU6MTIz NCIsIDE3LCBUUlVFIH0sCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg InRzdjovL3NvbWVob3N0bmFtZSIsIDE4LCBUUlVFIH0sCisrCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgInRzdjovL3NvbWVob3N0bmFtZS9wYXRoL2Zvby9nYWdhIiwgMzIs IFRSVUUgfSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAidHN2Oi8v c29tZWhvc3RuYW1lOjEyMzQiLCAyMywgVFJVRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7ICJ0c3Y6Ly9zb21laG9zdG5hbWU6MTIzNC9wYXRoL2ZvbyIsIDMzLCBU UlVFIH0sCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgImxhbGFccmdh Z2FcbiIsIDEyLCBGQUxTRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7ICIxOTIuMTY4LjAuMSIsIDExLCBUUlVFIH0sCisrCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8veyAiMTkyLjE2OC4wLjE6MTIzNCIsIDE2LCBGQUxTRSB9LAorKwkJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3sgIjE5Mi4xNjguMC4xOjEyMzQvZm9v LyIsIDIxLCBGQUxTRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 ICIxOTIuMTY4LjAuMS9iYXIvZm9vLyIsIDIwLCBUUlVFIH0sCisrCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgIls6OjFdIiwgNSwgRkFMU0UgfSwKKysJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyAiWzo6MV06MTIzNCIsIDgsIEZBTFNFIH0sCisrCQkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIlsyMDAxOmRiODozMzMzOjQ0NDQ6 NTU1NTo2NjY2Ojc3Nzc6ODg4OF0iLCA0MCwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGQUxTRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7ICJbMjAwMTpkYjg6OjFdIiwgMTMsIEZBTFNFIH0gfTsKKysJQk9PTCByYyA9IFRSVUU7Cisr CWZvciAoc2l6ZV90IHggPSAwOyB4IDwgQVJSQVlTSVpFKHRlc3RzKTsgeCsrKQorKwl7CisrCQlj b25zdCBzdHJ1Y3QgdGVzdF90KiBjdXIgPSAmdGVzdHNbeF07CisrCisrCQljb25zdCBCT09MIHJj MSA9IHdpbnByX3N0cl9pc192YWxpZF91cmwoY3VyLT5zdHJpbmcpOworKwkJY29uc3QgQk9PTCBy YzIgPSB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsTihjdXItPnN0cmluZywgY3VyLT5sZW4pOworKwor KyNpZiBkZWZpbmVkKFdJTlBSX0hBVkVfUkVHQ09NUCkgfHwgZGVmaW5lZChXSVRIX1VSSVBBUlNF UikKKysJCWlmIChyYzEgIT0gcmMyKQorKwkJCXJjID0gRkFMU0U7CisrCQlpZiAocmMxICE9IGN1 ci0+aXNVcmwpCisrCQkJcmMgPSBGQUxTRTsKKysjZWxzZQorKwkJZnByaW50ZihzdGRlcnIsICJb JXNdIFRPRE86ICFkZWZpbmVkKFdJTlBSX0hBVkVfUkVHQ09NUCkgJiYgIWRlZmluZWQoV0lUSF9V UklQQVJTRVIpXG4iLAorKwkJICAgICAgICBfX2Z1bmNfXyk7CisrI2VuZGlmCisrCX0KKysKKysJ cmV0dXJuIHJjOworK30KKysKKytzdGF0aWMgQk9PTCB0ZXN0X25ld2xpbmUodm9pZCkKKyt7Cisr CXN0cnVjdCB0ZXN0X3QKKysJeworKwkJY2hhciogc3RyaW5nOworKwkJc2l6ZV90IGxlbjsKKysJ CUJPT0wgaGFzTmV3bGluZXM7CisrCX07CisrCisrCWNvbnN0IHN0cnVjdCB0ZXN0X3QgdGVzdHNb XSA9IHsgeyAiZm9vLmJhci5ibGFibGEiLCAxNSwgRkFMU0UgfSwKKysJCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7ICJzb21laG9zdG5hbWUiLCAxMiwgRkFMU0UgfSwKKysJCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7ICJsYWxhXHJnYWdhXG4iLCAxMywgVFJVRSB9IH07CisrCisr CWZvciAoc2l6ZV90IHggPSAwOyB4IDwgQVJSQVlTSVpFKHRlc3RzKTsgeCsrKQorKwl7CisrCQlj b25zdCBzdHJ1Y3QgdGVzdF90KiBjdXIgPSAmdGVzdHNbeF07CisrCisrCQljb25zdCBCT09MIHJj MSA9IHdpbnByX3N0cl9oYXNfbmV3bGluZXMoY3VyLT5zdHJpbmcpOworKwkJaWYgKHJjMSAhPSBj dXItPmhhc05ld2xpbmVzKQorKwkJCXJldHVybiBGQUxTRTsKKysJfQorKworKwlyZXR1cm4gVFJV RTsKKyt9CisrCisgaW50IFRlc3RTdHJpbmcoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKKyB7Cisg CVdDSEFSKiBwOworQEAgLTM0LDYgKzEwNywxNSBAQCBpbnQgVGVzdFN0cmluZyhpbnQgYXJnYywg Y2hhciogYXJndltdKQorIAlzaXplX3QgbGVuZ3RoOworIAlXQ0hBUiogY29udGV4dDsKKworKwlX SU5QUl9VTlVTRUQoYXJnYyk7CisrCVdJTlBSX1VOVVNFRChhcmd2KTsKKysKKysJaWYgKCF0ZXN0 X3ZhbGlkX3VybCgpKQorKwkJcmV0dXJuIC0xOworKworKwlpZiAoIXRlc3RfbmV3bGluZSgpKQor KwkJcmV0dXJuIC0xOworKworICNpZmRlZiBfX0JJR19FTkRJQU5fXworIAkvKiBCZSBzdXJlIHRo YXQgd2UgYWx3YXlzIHVzZSBMRSBlbmNvZGVkIHN0cmluZyAqLworIAlCeXRlU3dhcFVuaWNvZGUo dGVzdFN0cmluZ1csIHRlc3RTdHJpbmdXX0xlbmd0aCk7Cg==