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: Augusto Caringi To: git-commits@fedoraproject.org Subject: [rpms/kernel] f43: kernel-7.1.6-100 Date: Mon, 03 Aug 2026 15:41:40 GMT Message-ID: <178577170003.1.2219838575886798183.rpms-kernel-3c36531f689d@fedoraproject.org> List-ID: X-Git-Repo: rpms/kernel X-Git-Branch: f43 X-Git-Rev: 3c36531f689df49e6c55c5b97cde90eab35cb89a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMva2VybmVsCiAgICAgICAgICAgIEJyYW5jaCA6IGY0MwogICAgICAgICAgICBD b21taXQgOiAzYzM2NTMxZjY4OWRmNDllNmM1NWM1Yjk3Y2RlOTBlYWIzNWNiODlhCiAgICAgICAg ICAgIEF1dGhvciA6IEF1Z3VzdG8gQ2FyaW5naSA8YWNhcmluZ2lAcmVkaGF0LmNvbT4KICAgICAg ICAgICAgRGF0ZSAgIDogMjAyNi0wOC0wM1QxMjo0MToyNS0wMzowMAogICAgICAgICAgICBTdGF0 cyAgOiArNDU0OS8tNjYzIGluIDMwIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6 Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9rZXJuZWwvYy8zYzM2NTMxZjY4OWRmNDllNmM1 NWM1Yjk3Y2RlOTBlYWIzNWNiODlhP2JyYW5jaD1mNDMKCiAgICAgICAgICAgIExvZzoKICAgICAg ICAgICAga2VybmVsLTcuMS42LTEwMAoKKiBNb24gQXVnIDAzIDIwMjYgQXVndXN0byBDYXJpbmdp IDxhY2FyaW5naUByZWRoYXQuY29tPiBbNy4xLjYtMF0KLSBOZXcgY29uZmlnIGZvciBzdGFibGUg KEp1c3RpbiBNLiBGb3JiZXMpCi0gYWNwaTogYmF0dGVyeTogU2FuaXRpc2UgbW9kZWxfbnVtYmVy IGJ5IGRyb3BwaW5nIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMgKEthdGUgSHN1YW4pCi0gcmVkaGF0 OiBjb25maWdzOiBFbmFibGUgQU1EIElTUDQgTUlQSSBjYW1lcmEgc29sdXRpb24gKEthdGUgSHN1 YW4pCi0gbWVkaWE6IHBsYXRmb3JtOiBhbWQ6IGFkZCBEUk1fQU1ER1BVIGRlcGVuZGVuY3kgKEFy bmQgQmVyZ21hbm4pCi0gbWVkaWE6IHBsYXRmb3JtOiBhbWQ6IGlzcDQ6IGRyb3Agc3RhbGUgbGlz dCByZWluaXQgYmVmb3JlIGZyZWUgKEJpbiBEdSkKLSBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNw NCBkZWJ1ZyBmcyBsb2dnaW5nIGFuZCBtb3JlIGRlc2NyaXB0aXZlIGVycm9ycyAoQmluIER1KQot IG1lZGlhOiBwbGF0Zm9ybTogYW1kOiBpc3A0IHZpZGVvIG5vZGUgYW5kIGJ1ZmZlcnMgaGFuZGxp bmcgYWRkZWQgKEJpbiBEdSkKLSBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNwNCBzdWJkZXYgYW5k IGZpcm13YXJlIGxvYWRpbmcgaGFuZGxpbmcgYWRkZWQgKEJpbiBEdSkKLSBtZWRpYTogcGxhdGZv cm06IGFtZDogQWRkIGlzcDQgZncgYW5kIGh3IGludGVyZmFjZSAoQmluIER1KQotIG1lZGlhOiBw bGF0Zm9ybTogYW1kOiBsb3cgbGV2ZWwgc3VwcG9ydCBmb3IgaXNwNCBmaXJtd2FyZSAoQmluIER1 KQotIG1lZGlhOiBwbGF0Zm9ybTogYW1kOiBJbnRyb2R1Y2UgYW1kIGlzcDQgY2FwdHVyZSBkcml2 ZXIgKEJpbiBEdSkKLSBzZXJpYWw6IDgyNTBfbWlkOiBGaXggTlVMTCBmdW5jdGlvbiBwb2ludGVy IGRlcmVmZXJlbmNlIG9uIEROVi9JQ1gtRC9TTlIgcGxhdGZvcm1zIChKaWFuZ3NoYW4gWWkpCi0g TGludXggdjcuMS42ClJlc29sdmVzOgoKU2lnbmVkLW9mZi1ieTogQXVndXN0byBDYXJpbmdpIDxh Y2FyaW5naUByZWRoYXQuY29tPgoKLS0tCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5yaGVsdmVyIGIv TWFrZWZpbGUucmhlbHZlcgppbmRleCBlODEwYjg5Li45NWI5ZmQ3IDEwMDY0NAotLS0gYS9NYWtl ZmlsZS5yaGVsdmVyCisrKyBiL01ha2VmaWxlLnJoZWx2ZXIKQEAgLTEyLDcgKzEyLDcgQEAgUkhF TF9NSU5PUiA9IDk5CiAjCiAjIFVzZSB0aGlzIHNwb3QgdG8gYXZvaWQgZnV0dXJlIG1lcmdlIGNv bmZsaWN0cy4KICMgRG8gbm90IHRyaW0gdGhpcyBjb21tZW50LgotUkhFTF9SRUxFQVNFID0gMQor UkhFTF9SRUxFQVNFID0gMAogCiAjCiAjIFJIRUxfUkVCQVNFX05VTQoKZGlmZiAtLWdpdCBhL1Bh dGNobGlzdC5jaGFuZ2Vsb2cgYi9QYXRjaGxpc3QuY2hhbmdlbG9nCmluZGV4IGUwOWZmYmMuLjdl MjYyMjMgMTAwNjQ0Ci0tLSBhL1BhdGNobGlzdC5jaGFuZ2Vsb2cKKysrIGIvUGF0Y2hsaXN0LmNo YW5nZWxvZwpAQCAtMSwzICsxLDMwIEBACitodHRwczovL2dpdGxhYi5jb20vY2tpLXByb2plY3Qv a2VybmVsLWFyay8tL2NvbW1pdC83MzM0NmQwY2YwOGRiODM1OGRkOGNlMzcyYzZiNTYwNWE3Nzk0 NGM2CisgNzMzNDZkMGNmMDhkYjgzNThkZDhjZTM3MmM2YjU2MDVhNzc5NDRjNiBtZWRpYTogcGxh dGZvcm06IGFtZDogYWRkIERSTV9BTURHUFUgZGVwZW5kZW5jeQorCitodHRwczovL2dpdGxhYi5j b20vY2tpLXByb2plY3Qva2VybmVsLWFyay8tL2NvbW1pdC80ZTM5YTAzZGYwZmFlYWRjZWM5ZDk5 ZWRlMmNjNTNlNjBmYzk3ZmM3CisgNGUzOWEwM2RmMGZhZWFkY2VjOWQ5OWVkZTJjYzUzZTYwZmM5 N2ZjNyBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNwNDogZHJvcCBzdGFsZSBsaXN0IHJlaW5pdCBi ZWZvcmUgZnJlZQorCitodHRwczovL2dpdGxhYi5jb20vY2tpLXByb2plY3Qva2VybmVsLWFyay8t L2NvbW1pdC9hMjVhYWRiNGU5ZmE1MGQ2NjAxOTFkM2U2NzFmZGM5MDczMWYxYjkwCisgYTI1YWFk YjRlOWZhNTBkNjYwMTkxZDNlNjcxZmRjOTA3MzFmMWI5MCBtZWRpYTogcGxhdGZvcm06IGFtZDog aXNwNCBkZWJ1ZyBmcyBsb2dnaW5nIGFuZCBtb3JlIGRlc2NyaXB0aXZlIGVycm9ycworCitodHRw czovL2dpdGxhYi5jb20vY2tpLXByb2plY3Qva2VybmVsLWFyay8tL2NvbW1pdC9iOWQ3MmIyYTMw NTQ4OWIwYTA4NGM4MDAxMDlhMTZhNjhmNDFiMjUwCisgYjlkNzJiMmEzMDU0ODliMGEwODRjODAw MTA5YTE2YTY4ZjQxYjI1MCBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNwNCB2aWRlbyBub2RlIGFu ZCBidWZmZXJzIGhhbmRsaW5nIGFkZGVkCisKK2h0dHBzOi8vZ2l0bGFiLmNvbS9ja2ktcHJvamVj dC9rZXJuZWwtYXJrLy0vY29tbWl0LzU5ZWQzODMyOGM4Mzc4MTg1ZGU0NGRiYTc0MWI0MTM4Y2E2 NTAwYWEKKyA1OWVkMzgzMjhjODM3ODE4NWRlNDRkYmE3NDFiNDEzOGNhNjUwMGFhIG1lZGlhOiBw bGF0Zm9ybTogYW1kOiBpc3A0IHN1YmRldiBhbmQgZmlybXdhcmUgbG9hZGluZyBoYW5kbGluZyBh ZGRlZAorCitodHRwczovL2dpdGxhYi5jb20vY2tpLXByb2plY3Qva2VybmVsLWFyay8tL2NvbW1p dC8xMWFmMjg1MjQ2NTE3N2YyYmRlZGE3ZTkwZWQ1ZGUwZDU1N2JmODZkCisgMTFhZjI4NTI0NjUx NzdmMmJkZWRhN2U5MGVkNWRlMGQ1NTdiZjg2ZCBtZWRpYTogcGxhdGZvcm06IGFtZDogQWRkIGlz cDQgZncgYW5kIGh3IGludGVyZmFjZQorCitodHRwczovL2dpdGxhYi5jb20vY2tpLXByb2plY3Qv a2VybmVsLWFyay8tL2NvbW1pdC9lYmJiNGMxMmE1OGY1ZmE5OWQ5OTZmZTA3NDJiOWI5YzAzZmVj N2M4CisgZWJiYjRjMTJhNThmNWZhOTlkOTk2ZmUwNzQyYjliOWMwM2ZlYzdjOCBtZWRpYTogcGxh dGZvcm06IGFtZDogbG93IGxldmVsIHN1cHBvcnQgZm9yIGlzcDQgZmlybXdhcmUKKworaHR0cHM6 Ly9naXRsYWIuY29tL2NraS1wcm9qZWN0L2tlcm5lbC1hcmsvLS9jb21taXQvMDhmYTI3ZWYzODM4 YjRkMjk0NjkxZTVmOWY3YmI4ODExMGQ4NGZhZAorIDA4ZmEyN2VmMzgzOGI0ZDI5NDY5MWU1Zjlm N2JiODgxMTBkODRmYWQgbWVkaWE6IHBsYXRmb3JtOiBhbWQ6IEludHJvZHVjZSBhbWQgaXNwNCBj YXB0dXJlIGRyaXZlcgorCitodHRwczovL2dpdGxhYi5jb20vY2tpLXByb2plY3Qva2VybmVsLWFy ay8tL2NvbW1pdC8zMzlhZjQ2ZDZmNTY4NzQyYjAwNWU4NDZiMTEzNDMzZmFjOTI5MTMwCisgMzM5 YWY0NmQ2ZjU2ODc0MmIwMDVlODQ2YjExMzQzM2ZhYzkyOTEzMCBzZXJpYWw6IDgyNTBfbWlkOiBG aXggTlVMTCBmdW5jdGlvbiBwb2ludGVyIGRlcmVmZXJlbmNlIG9uIEROVi9JQ1gtRC9TTlIgcGxh dGZvcm1zCisKIGh0dHBzOi8vZ2l0bGFiLmNvbS9ja2ktcHJvamVjdC9rZXJuZWwtYXJrLy0vY29t bWl0LzlmYTFjY2ViMzg0YWFkYzVjYTM0NWU3ZjQyNTIyYmNhZjY1YjFhNGYKICA5ZmExY2NlYjM4 NGFhZGM1Y2EzNDVlN2Y0MjUyMmJjYWY2NWIxYTRmIEFTb0M6IGNzNDJsNDM6IENvcnJlY3QgcmVw b3J0IGZvciBmb3JjZWQgbWljcm9waG9uZSBqYWNrCiAKQEAgLTMxLDYgKzU4LDkgQEAgaHR0cHM6 Ly9naXRsYWIuY29tL2NraS1wcm9qZWN0L2tlcm5lbC1hcmsvLS9jb21taXQvNDczNWYyZWVjNjNh NmExOTJiNjlhNzk5MjFmODUKIGh0dHBzOi8vZ2l0bGFiLmNvbS9ja2ktcHJvamVjdC9rZXJuZWwt YXJrLy0vY29tbWl0L2NlNDIxMGU0MzdjZWY1YzU4ZDQ5NjExNzYzMjQ3M2Y2YWQyMGYxZDEKICBj ZTQyMTBlNDM3Y2VmNWM1OGQ0OTYxMTc2MzI0NzNmNmFkMjBmMWQxIG5ldC9zY2hlZDogY2xzX2Fw aTogSGFuZGxlIFRDX0FDVF9DT05TVU1FRCBpbiB0Y2ZfcWV2ZW50X2hhbmRsZQogCitodHRwczov L2dpdGxhYi5jb20vY2tpLXByb2plY3Qva2VybmVsLWFyay8tL2NvbW1pdC8xMDc3YmU5Yjk4NjZh OGE0NTBiOWIyNjIwOTEwZTMzZmQ4YjNiZTc2CisgMTA3N2JlOWI5ODY2YThhNDUwYjliMjYyMDkx MGUzM2ZkOGIzYmU3NiBhY3BpOiBiYXR0ZXJ5OiBTYW5pdGlzZSBtb2RlbF9udW1iZXIgYnkgZHJv cHBpbmcgdW5wcmludGFibGUgY2hhcmFjdGVycworCiBodHRwczovL2dpdGxhYi5jb20vY2tpLXBy b2plY3Qva2VybmVsLWFyay8tL2NvbW1pdC8wMzgxOTAyMjlhN2M0Y2U5ZmQ3OGEwZWNlNTk5OGE0 ODNlOTE3YjEwCiAgMDM4MTkwMjI5YTdjNGNlOWZkNzhhMGVjZTU5OThhNDgzZTkxN2IxMCBSZXZl cnQgIlBDSS9NU0k6IFVubWFwIE1TSS1YIHJlZ2lvbiBvbiBlcnJvciIKIAoKZGlmZiAtLWdpdCBh L2tlcm5lbC1hYXJjaDY0LTE2ay1kZWJ1Zy1mZWRvcmEuY29uZmlnIGIva2VybmVsLWFhcmNoNjQt MTZrLWRlYnVnLWZlZG9yYS5jb25maWcKaW5kZXggY2ExOWJlZC4uM2ExMzFlMyAxMDA2NDQKLS0t IGEva2VybmVsLWFhcmNoNjQtMTZrLWRlYnVnLWZlZG9yYS5jb25maWcKKysrIGIva2VybmVsLWFh cmNoNjQtMTZrLWRlYnVnLWZlZG9yYS5jb25maWcKQEAgLTEwMjc2LDYgKzEwMjc2LDcgQEAgQ09O RklHX1ZJREVPX0FLNzM3NT1tCiBDT05GSUdfVklERU9fQUs4ODFYPW0KIENPTkZJR19WSURFT19B TExFR1JPX0RWVD1tCiAjIENPTkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBub3Qgc2V0CisjIENP TkZJR19WSURFT19BTURfSVNQNF9DQVBUVVJFIGlzIG5vdCBzZXQKIENPTkZJR19WSURFT19BTVBI SU9OX1ZQVT1tCiBDT05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQoK ZGlmZiAtLWdpdCBhL2tlcm5lbC1hYXJjaDY0LTE2ay1mZWRvcmEuY29uZmlnIGIva2VybmVsLWFh cmNoNjQtMTZrLWZlZG9yYS5jb25maWcKaW5kZXggMDY3MTU5Yi4uNTQyODQ2ZCAxMDA2NDQKLS0t IGEva2VybmVsLWFhcmNoNjQtMTZrLWZlZG9yYS5jb25maWcKKysrIGIva2VybmVsLWFhcmNoNjQt MTZrLWZlZG9yYS5jb25maWcKQEAgLTEwMjQyLDYgKzEwMjQyLDcgQEAgQ09ORklHX1ZJREVPX0FL NzM3NT1tCiBDT05GSUdfVklERU9fQUs4ODFYPW0KIENPTkZJR19WSURFT19BTExFR1JPX0RWVD1t CiAjIENPTkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBub3Qgc2V0CisjIENPTkZJR19WSURFT19B TURfSVNQNF9DQVBUVVJFIGlzIG5vdCBzZXQKIENPTkZJR19WSURFT19BTVBISU9OX1ZQVT1tCiBD T05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQoKZGlmZiAtLWdpdCBh L2tlcm5lbC1hYXJjaDY0LWRlYnVnLWZlZG9yYS5jb25maWcgYi9rZXJuZWwtYWFyY2g2NC1kZWJ1 Zy1mZWRvcmEuY29uZmlnCmluZGV4IDJjZjY1NzcuLjMyNDZlZTYgMTAwNjQ0Ci0tLSBhL2tlcm5l bC1hYXJjaDY0LWRlYnVnLWZlZG9yYS5jb25maWcKKysrIGIva2VybmVsLWFhcmNoNjQtZGVidWct ZmVkb3JhLmNvbmZpZwpAQCAtMTAyNzUsNiArMTAyNzUsNyBAQCBDT05GSUdfVklERU9fQUs3Mzc1 PW0KIENPTkZJR19WSURFT19BSzg4MVg9bQogQ09ORklHX1ZJREVPX0FMTEVHUk9fRFZUPW0KICMg Q09ORklHX1ZJREVPX0FMVklVTV9DU0kyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX0FNRF9J U1A0X0NBUFRVUkUgaXMgbm90IHNldAogQ09ORklHX1ZJREVPX0FNUEhJT05fVlBVPW0KIENPTkZJ R19WSURFT19BUjA1MjE9bQogQ09ORklHX1ZJREVPX0FVMDgyOD1tCgpkaWZmIC0tZ2l0IGEva2Vy bmVsLWFhcmNoNjQtZmVkb3JhLmNvbmZpZyBiL2tlcm5lbC1hYXJjaDY0LWZlZG9yYS5jb25maWcK aW5kZXggMjBjMjJmNi4uYTUxMDMzOCAxMDA2NDQKLS0tIGEva2VybmVsLWFhcmNoNjQtZmVkb3Jh LmNvbmZpZworKysgYi9rZXJuZWwtYWFyY2g2NC1mZWRvcmEuY29uZmlnCkBAIC0xMDI0MSw2ICsx MDI0MSw3IEBAIENPTkZJR19WSURFT19BSzczNzU9bQogQ09ORklHX1ZJREVPX0FLODgxWD1tCiBD T05GSUdfVklERU9fQUxMRUdST19EVlQ9bQogIyBDT05GSUdfVklERU9fQUxWSVVNX0NTSTIgaXMg bm90IHNldAorIyBDT05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRSBpcyBub3Qgc2V0CiBDT05G SUdfVklERU9fQU1QSElPTl9WUFU9bQogQ09ORklHX1ZJREVPX0FSMDUyMT1tCiBDT05GSUdfVklE RU9fQVUwODI4PW0KCmRpZmYgLS1naXQgYS9rZXJuZWwtYWFyY2g2NC1ydC02NGstZGVidWctZmVk b3JhLmNvbmZpZyBiL2tlcm5lbC1hYXJjaDY0LXJ0LTY0ay1kZWJ1Zy1mZWRvcmEuY29uZmlnCmlu ZGV4IGJmODUxODAuLjUxNTQ3ZWIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC1hYXJjaDY0LXJ0LTY0ay1k ZWJ1Zy1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC1hYXJjaDY0LXJ0LTY0ay1kZWJ1Zy1mZWRv cmEuY29uZmlnCkBAIC0xMDI5MSw2ICsxMDI5MSw3IEBAIENPTkZJR19WSURFT19BSzczNzU9bQog Q09ORklHX1ZJREVPX0FLODgxWD1tCiBDT05GSUdfVklERU9fQUxMRUdST19EVlQ9bQogIyBDT05G SUdfVklERU9fQUxWSVVNX0NTSTIgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fQU1EX0lTUDRf Q0FQVFVSRSBpcyBub3Qgc2V0CiBDT05GSUdfVklERU9fQU1QSElPTl9WUFU9bQogQ09ORklHX1ZJ REVPX0FSMDUyMT1tCiBDT05GSUdfVklERU9fQVUwODI4PW0KCmRpZmYgLS1naXQgYS9rZXJuZWwt YWFyY2g2NC1ydC02NGstZmVkb3JhLmNvbmZpZyBiL2tlcm5lbC1hYXJjaDY0LXJ0LTY0ay1mZWRv cmEuY29uZmlnCmluZGV4IDZiYjdlMjIuLjRlODA4NGQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC1hYXJj aDY0LXJ0LTY0ay1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC1hYXJjaDY0LXJ0LTY0ay1mZWRv cmEuY29uZmlnCkBAIC0xMDI1Nyw2ICsxMDI1Nyw3IEBAIENPTkZJR19WSURFT19BSzczNzU9bQog Q09ORklHX1ZJREVPX0FLODgxWD1tCiBDT05GSUdfVklERU9fQUxMRUdST19EVlQ9bQogIyBDT05G SUdfVklERU9fQUxWSVVNX0NTSTIgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fQU1EX0lTUDRf Q0FQVFVSRSBpcyBub3Qgc2V0CiBDT05GSUdfVklERU9fQU1QSElPTl9WUFU9bQogQ09ORklHX1ZJ REVPX0FSMDUyMT1tCiBDT05GSUdfVklERU9fQVUwODI4PW0KCmRpZmYgLS1naXQgYS9rZXJuZWwt YWFyY2g2NC1ydC1kZWJ1Zy1mZWRvcmEuY29uZmlnIGIva2VybmVsLWFhcmNoNjQtcnQtZGVidWct ZmVkb3JhLmNvbmZpZwppbmRleCBhNDE5ZTUxLi5jZjFlNTRjIDEwMDY0NAotLS0gYS9rZXJuZWwt YWFyY2g2NC1ydC1kZWJ1Zy1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC1hYXJjaDY0LXJ0LWRl YnVnLWZlZG9yYS5jb25maWcKQEAgLTEwMjg3LDYgKzEwMjg3LDcgQEAgQ09ORklHX1ZJREVPX0FL NzM3NT1tCiBDT05GSUdfVklERU9fQUs4ODFYPW0KIENPTkZJR19WSURFT19BTExFR1JPX0RWVD1t CiAjIENPTkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBub3Qgc2V0CisjIENPTkZJR19WSURFT19B TURfSVNQNF9DQVBUVVJFIGlzIG5vdCBzZXQKIENPTkZJR19WSURFT19BTVBISU9OX1ZQVT1tCiBD T05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQoKZGlmZiAtLWdpdCBh L2tlcm5lbC1hYXJjaDY0LXJ0LWZlZG9yYS5jb25maWcgYi9rZXJuZWwtYWFyY2g2NC1ydC1mZWRv cmEuY29uZmlnCmluZGV4IDhmZDg1NTEuLjVmY2VmN2UgMTAwNjQ0Ci0tLSBhL2tlcm5lbC1hYXJj aDY0LXJ0LWZlZG9yYS5jb25maWcKKysrIGIva2VybmVsLWFhcmNoNjQtcnQtZmVkb3JhLmNvbmZp ZwpAQCAtMTAyNTMsNiArMTAyNTMsNyBAQCBDT05GSUdfVklERU9fQUs3Mzc1PW0KIENPTkZJR19W SURFT19BSzg4MVg9bQogQ09ORklHX1ZJREVPX0FMTEVHUk9fRFZUPW0KICMgQ09ORklHX1ZJREVP X0FMVklVTV9DU0kyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVPX0FNRF9JU1A0X0NBUFRVUkUg aXMgbm90IHNldAogQ09ORklHX1ZJREVPX0FNUEhJT05fVlBVPW0KIENPTkZJR19WSURFT19BUjA1 MjE9bQogQ09ORklHX1ZJREVPX0FVMDgyOD1tCgpkaWZmIC0tZ2l0IGEva2VybmVsLXBwYzY0bGUt ZGVidWctZmVkb3JhLmNvbmZpZyBiL2tlcm5lbC1wcGM2NGxlLWRlYnVnLWZlZG9yYS5jb25maWcK aW5kZXggNzMyOGQ4NC4uYTFkN2UyZSAxMDA2NDQKLS0tIGEva2VybmVsLXBwYzY0bGUtZGVidWct ZmVkb3JhLmNvbmZpZworKysgYi9rZXJuZWwtcHBjNjRsZS1kZWJ1Zy1mZWRvcmEuY29uZmlnCkBA IC04MzAxLDYgKzgzMDEsNyBAQCBDT05GSUdfVklERU9fQURWNzg0Mj1tCiBDT05GSUdfVklERU9f QUs3Mzc1PW0KIENPTkZJR19WSURFT19BSzg4MVg9bQogIyBDT05GSUdfVklERU9fQUxWSVVNX0NT STIgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRSBpcyBub3Qgc2V0 CiBDT05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQogIyBDT05GSUdf VklERU9fQVUwODI4X1JDIGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwtcHBjNjRsZS1m ZWRvcmEuY29uZmlnIGIva2VybmVsLXBwYzY0bGUtZmVkb3JhLmNvbmZpZwppbmRleCA3ODhlMjdi Li5lMWM0MTA0IDEwMDY0NAotLS0gYS9rZXJuZWwtcHBjNjRsZS1mZWRvcmEuY29uZmlnCisrKyBi L2tlcm5lbC1wcGM2NGxlLWZlZG9yYS5jb25maWcKQEAgLTgyNjYsNiArODI2Niw3IEBAIENPTkZJ R19WSURFT19BRFY3ODQyPW0KIENPTkZJR19WSURFT19BSzczNzU9bQogQ09ORklHX1ZJREVPX0FL ODgxWD1tCiAjIENPTkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBub3Qgc2V0CisjIENPTkZJR19W SURFT19BTURfSVNQNF9DQVBUVVJFIGlzIG5vdCBzZXQKIENPTkZJR19WSURFT19BUjA1MjE9bQog Q09ORklHX1ZJREVPX0FVMDgyOD1tCiAjIENPTkZJR19WSURFT19BVTA4MjhfUkMgaXMgbm90IHNl dAoKZGlmZiAtLWdpdCBhL2tlcm5lbC1yaXNjdjY0LWRlYnVnLWZlZG9yYS5jb25maWcgYi9rZXJu ZWwtcmlzY3Y2NC1kZWJ1Zy1mZWRvcmEuY29uZmlnCmluZGV4IGZlODYzYzIuLmJiOWFjNzMgMTAw NjQ0Ci0tLSBhL2tlcm5lbC1yaXNjdjY0LWRlYnVnLWZlZG9yYS5jb25maWcKKysrIGIva2VybmVs LXJpc2N2NjQtZGVidWctZmVkb3JhLmNvbmZpZwpAQCAtODQ3OCw2ICs4NDc4LDcgQEAgQ09ORklH X1ZJREVPX0FEUDE2NTM9bQogQ09ORklHX1ZJREVPX0FLNzM3NT1tCiAjIENPTkZJR19WSURFT19B Szg4MVggaXMgbm90IHNldAogIyBDT05GSUdfVklERU9fQUxWSVVNX0NTSTIgaXMgbm90IHNldAor IyBDT05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRSBpcyBub3Qgc2V0CiBDT05GSUdfVklERU9f QVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQogIyBDT05GSUdfVklERU9fQVUwODI4X1JD IGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwtcmlzY3Y2NC1mZWRvcmEuY29uZmlnIGIv a2VybmVsLXJpc2N2NjQtZmVkb3JhLmNvbmZpZwppbmRleCBhMzVmNTM3Li45NGEyZjYxIDEwMDY0 NAotLS0gYS9rZXJuZWwtcmlzY3Y2NC1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC1yaXNjdjY0 LWZlZG9yYS5jb25maWcKQEAgLTg0NDMsNiArODQ0Myw3IEBAIENPTkZJR19WSURFT19BRFAxNjUz PW0KIENPTkZJR19WSURFT19BSzczNzU9bQogIyBDT05GSUdfVklERU9fQUs4ODFYIGlzIG5vdCBz ZXQKICMgQ09ORklHX1ZJREVPX0FMVklVTV9DU0kyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1ZJREVP X0FNRF9JU1A0X0NBUFRVUkUgaXMgbm90IHNldAogQ09ORklHX1ZJREVPX0FSMDUyMT1tCiBDT05G SUdfVklERU9fQVUwODI4PW0KICMgQ09ORklHX1ZJREVPX0FVMDgyOF9SQyBpcyBub3Qgc2V0Cgpk aWZmIC0tZ2l0IGEva2VybmVsLXJpc2N2NjQtcnQtZGVidWctZmVkb3JhLmNvbmZpZyBiL2tlcm5l bC1yaXNjdjY0LXJ0LWRlYnVnLWZlZG9yYS5jb25maWcKaW5kZXggODI3NDcxNi4uZWU5NDA3ZSAx MDA2NDQKLS0tIGEva2VybmVsLXJpc2N2NjQtcnQtZGVidWctZmVkb3JhLmNvbmZpZworKysgYi9r ZXJuZWwtcmlzY3Y2NC1ydC1kZWJ1Zy1mZWRvcmEuY29uZmlnCkBAIC04NDkwLDYgKzg0OTAsNyBA QCBDT05GSUdfVklERU9fQURQMTY1Mz1tCiBDT05GSUdfVklERU9fQUs3Mzc1PW0KICMgQ09ORklH X1ZJREVPX0FLODgxWCBpcyBub3Qgc2V0CiAjIENPTkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBu b3Qgc2V0CisjIENPTkZJR19WSURFT19BTURfSVNQNF9DQVBUVVJFIGlzIG5vdCBzZXQKIENPTkZJ R19WSURFT19BUjA1MjE9bQogQ09ORklHX1ZJREVPX0FVMDgyOD1tCiAjIENPTkZJR19WSURFT19B VTA4MjhfUkMgaXMgbm90IHNldAoKZGlmZiAtLWdpdCBhL2tlcm5lbC1yaXNjdjY0LXJ0LWZlZG9y YS5jb25maWcgYi9rZXJuZWwtcmlzY3Y2NC1ydC1mZWRvcmEuY29uZmlnCmluZGV4IDU5M2MzN2Iu LjRkMzk5MTIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC1yaXNjdjY0LXJ0LWZlZG9yYS5jb25maWcKKysr IGIva2VybmVsLXJpc2N2NjQtcnQtZmVkb3JhLmNvbmZpZwpAQCAtODQ1NSw2ICs4NDU1LDcgQEAg Q09ORklHX1ZJREVPX0FEUDE2NTM9bQogQ09ORklHX1ZJREVPX0FLNzM3NT1tCiAjIENPTkZJR19W SURFT19BSzg4MVggaXMgbm90IHNldAogIyBDT05GSUdfVklERU9fQUxWSVVNX0NTSTIgaXMgbm90 IHNldAorIyBDT05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRSBpcyBub3Qgc2V0CiBDT05GSUdf VklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQogIyBDT05GSUdfVklERU9fQVUw ODI4X1JDIGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwtczM5MHgtZGVidWctZmVkb3Jh LmNvbmZpZyBiL2tlcm5lbC1zMzkweC1kZWJ1Zy1mZWRvcmEuY29uZmlnCmluZGV4IDM3YjkwNWQu LjhkOTQ3MzMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC1zMzkweC1kZWJ1Zy1mZWRvcmEuY29uZmlnCisr KyBiL2tlcm5lbC1zMzkweC1kZWJ1Zy1mZWRvcmEuY29uZmlnCkBAIC04MjU3LDYgKzgyNTcsNyBA QCBDT05GSUdfVklERU9fQURWNzg0Mj1tCiBDT05GSUdfVklERU9fQUs3Mzc1PW0KIENPTkZJR19W SURFT19BSzg4MVg9bQogIyBDT05GSUdfVklERU9fQUxWSVVNX0NTSTIgaXMgbm90IHNldAorIyBD T05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRSBpcyBub3Qgc2V0CiBDT05GSUdfVklERU9fQVIw NTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQogIyBDT05GSUdfVklERU9fQVUwODI4X1JDIGlz IG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwtczM5MHgtZmVkb3JhLmNvbmZpZyBiL2tlcm5l bC1zMzkweC1mZWRvcmEuY29uZmlnCmluZGV4IGUwY2ZhNmIuLjkzYmIyMTEgMTAwNjQ0Ci0tLSBh L2tlcm5lbC1zMzkweC1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC1zMzkweC1mZWRvcmEuY29u ZmlnCkBAIC04MjIyLDYgKzgyMjIsNyBAQCBDT05GSUdfVklERU9fQURWNzg0Mj1tCiBDT05GSUdf VklERU9fQUs3Mzc1PW0KIENPTkZJR19WSURFT19BSzg4MVg9bQogIyBDT05GSUdfVklERU9fQUxW SVVNX0NTSTIgaXMgbm90IHNldAorIyBDT05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRSBpcyBu b3Qgc2V0CiBDT05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQogIyBD T05GSUdfVklERU9fQVUwODI4X1JDIGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwteDg2 XzY0LWRlYnVnLWZlZG9yYS5jb25maWcgYi9rZXJuZWwteDg2XzY0LWRlYnVnLWZlZG9yYS5jb25m aWcKaW5kZXggNzE4NTZlMS4uNWVmYTFhYSAxMDA2NDQKLS0tIGEva2VybmVsLXg4Nl82NC1kZWJ1 Zy1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC14ODZfNjQtZGVidWctZmVkb3JhLmNvbmZpZwpA QCAtNzIyNSw2ICs3MjI1LDcgQEAgQ09ORklHX1NORF9TSU1QTEVfQ0FSRF9VVElMUz1tCiAjIENP TkZJR19TTkRfU0lTNzAxOSBpcyBub3Qgc2V0CiBDT05GSUdfU05EX1NPQ19BQzk3X0JVUz15CiBD T05GSUdfU05EX1NPQ19BQzk3X0NPREVDPW0KK0NPTkZJR19TTkRfU09DX0FDUElfQU1EX1NEQ0Ff UVVJUktTPXkKICMgQ09ORklHX1NORF9TT0NfQURBVTEzNzJfSTJDIGlzIG5vdCBzZXQKICMgQ09O RklHX1NORF9TT0NfQURBVTEzNzJfU1BJIGlzIG5vdCBzZXQKIENPTkZJR19TTkRfU09DX0FEQVUx MzczPW0KQEAgLTg4OTgsNiArODg5OSw3IEBAIENPTkZJR19WSURFT19BRFY3ODQyPW0KIENPTkZJ R19WSURFT19BSzczNzU9bQogQ09ORklHX1ZJREVPX0FLODgxWD1tCiAjIENPTkZJR19WSURFT19B TFZJVU1fQ1NJMiBpcyBub3Qgc2V0CitDT05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRT1tCiBD T05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQogIyBDT05GSUdfVklE RU9fQVUwODI4X1JDIGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwteDg2XzY0LWRlYnVn LXJoZWwuY29uZmlnIGIva2VybmVsLXg4Nl82NC1kZWJ1Zy1yaGVsLmNvbmZpZwppbmRleCBlZjg1 YjBkLi42ZmMxN2I1IDEwMDY0NAotLS0gYS9rZXJuZWwteDg2XzY0LWRlYnVnLXJoZWwuY29uZmln CisrKyBiL2tlcm5lbC14ODZfNjQtZGVidWctcmhlbC5jb25maWcKQEAgLTY2NTEsNiArNjY1MSw3 IEBAIENPTkZJR19TTkRfU0VRX1VNUD15CiAjIENPTkZJR19TTkRfU0lTNzAxOSBpcyBub3Qgc2V0 CiAjIENPTkZJR19TTkRfU09DX0FDOTdfQlVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9TT0Nf QUM5N19DT0RFQyBpcyBub3Qgc2V0CitDT05GSUdfU05EX1NPQ19BQ1BJX0FNRF9TRENBX1FVSVJL Uz15CiAjIENPTkZJR19TTkRfU09DX0FEQVUxMzcyX0kyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19T TkRfU09DX0FEQVUxMzcyX1NQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfU09DX0FEQVUxMzcz IGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwteDg2XzY0LWZlZG9yYS5jb25maWcgYi9r ZXJuZWwteDg2XzY0LWZlZG9yYS5jb25maWcKaW5kZXggZmU1MjQ3My4uOTg2MzJjNiAxMDA2NDQK LS0tIGEva2VybmVsLXg4Nl82NC1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC14ODZfNjQtZmVk b3JhLmNvbmZpZwpAQCAtNzE5Miw2ICs3MTkyLDcgQEAgQ09ORklHX1NORF9TSU1QTEVfQ0FSRF9V VElMUz1tCiAjIENPTkZJR19TTkRfU0lTNzAxOSBpcyBub3Qgc2V0CiBDT05GSUdfU05EX1NPQ19B Qzk3X0JVUz15CiBDT05GSUdfU05EX1NPQ19BQzk3X0NPREVDPW0KK0NPTkZJR19TTkRfU09DX0FD UElfQU1EX1NEQ0FfUVVJUktTPXkKICMgQ09ORklHX1NORF9TT0NfQURBVTEzNzJfSTJDIGlzIG5v dCBzZXQKICMgQ09ORklHX1NORF9TT0NfQURBVTEzNzJfU1BJIGlzIG5vdCBzZXQKIENPTkZJR19T TkRfU09DX0FEQVUxMzczPW0KQEAgLTg4NjQsNiArODg2NSw3IEBAIENPTkZJR19WSURFT19BRFY3 ODQyPW0KIENPTkZJR19WSURFT19BSzczNzU9bQogQ09ORklHX1ZJREVPX0FLODgxWD1tCiAjIENP TkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBub3Qgc2V0CitDT05GSUdfVklERU9fQU1EX0lTUDRf Q0FQVFVSRT1tCiBDT05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9bQog IyBDT05GSUdfVklERU9fQVUwODI4X1JDIGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwt eDg2XzY0LXJoZWwuY29uZmlnIGIva2VybmVsLXg4Nl82NC1yaGVsLmNvbmZpZwppbmRleCBjMmFi MTk4Li40ZGI5YTQ2IDEwMDY0NAotLS0gYS9rZXJuZWwteDg2XzY0LXJoZWwuY29uZmlnCisrKyBi L2tlcm5lbC14ODZfNjQtcmhlbC5jb25maWcKQEAgLTY2MjQsNiArNjYyNCw3IEBAIENPTkZJR19T TkRfU0VRX1VNUD15CiAjIENPTkZJR19TTkRfU0lTNzAxOSBpcyBub3Qgc2V0CiAjIENPTkZJR19T TkRfU09DX0FDOTdfQlVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9TT0NfQUM5N19DT0RFQyBp cyBub3Qgc2V0CitDT05GSUdfU05EX1NPQ19BQ1BJX0FNRF9TRENBX1FVSVJLUz15CiAjIENPTkZJ R19TTkRfU09DX0FEQVUxMzcyX0kyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfU09DX0FEQVUx MzcyX1NQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfU09DX0FEQVUxMzczIGlzIG5vdCBzZXQK CmRpZmYgLS1naXQgYS9rZXJuZWwteDg2XzY0LXJ0LWRlYnVnLWZlZG9yYS5jb25maWcgYi9rZXJu ZWwteDg2XzY0LXJ0LWRlYnVnLWZlZG9yYS5jb25maWcKaW5kZXggMTYwMThkZC4uOThmODhkOSAx MDA2NDQKLS0tIGEva2VybmVsLXg4Nl82NC1ydC1kZWJ1Zy1mZWRvcmEuY29uZmlnCisrKyBiL2tl cm5lbC14ODZfNjQtcnQtZGVidWctZmVkb3JhLmNvbmZpZwpAQCAtNzIzNiw2ICs3MjM2LDcgQEAg Q09ORklHX1NORF9TSU1QTEVfQ0FSRF9VVElMUz1tCiAjIENPTkZJR19TTkRfU0lTNzAxOSBpcyBu b3Qgc2V0CiBDT05GSUdfU05EX1NPQ19BQzk3X0JVUz15CiBDT05GSUdfU05EX1NPQ19BQzk3X0NP REVDPW0KK0NPTkZJR19TTkRfU09DX0FDUElfQU1EX1NEQ0FfUVVJUktTPXkKICMgQ09ORklHX1NO RF9TT0NfQURBVTEzNzJfSTJDIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9TT0NfQURBVTEzNzJf U1BJIGlzIG5vdCBzZXQKIENPTkZJR19TTkRfU09DX0FEQVUxMzczPW0KQEAgLTg5MTAsNiArODkx MSw3IEBAIENPTkZJR19WSURFT19BRFY3ODQyPW0KIENPTkZJR19WSURFT19BSzczNzU9bQogQ09O RklHX1ZJREVPX0FLODgxWD1tCiAjIENPTkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBub3Qgc2V0 CitDT05GSUdfVklERU9fQU1EX0lTUDRfQ0FQVFVSRT1tCiBDT05GSUdfVklERU9fQVIwNTIxPW0K IENPTkZJR19WSURFT19BVTA4Mjg9bQogIyBDT05GSUdfVklERU9fQVUwODI4X1JDIGlzIG5vdCBz ZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwteDg2XzY0LXJ0LWRlYnVnLXJoZWwuY29uZmlnIGIva2Vy bmVsLXg4Nl82NC1ydC1kZWJ1Zy1yaGVsLmNvbmZpZwppbmRleCBhZWVmY2RmLi43ZmI0NDg2IDEw MDY0NAotLS0gYS9rZXJuZWwteDg2XzY0LXJ0LWRlYnVnLXJoZWwuY29uZmlnCisrKyBiL2tlcm5l bC14ODZfNjQtcnQtZGVidWctcmhlbC5jb25maWcKQEAgLTY2OTYsNiArNjY5Niw3IEBAIENPTkZJ R19TTkRfU0VRX1VNUD15CiAjIENPTkZJR19TTkRfU0lTNzAxOSBpcyBub3Qgc2V0CiAjIENPTkZJ R19TTkRfU09DX0FDOTdfQlVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9TT0NfQUM5N19DT0RF QyBpcyBub3Qgc2V0CitDT05GSUdfU05EX1NPQ19BQ1BJX0FNRF9TRENBX1FVSVJLUz15CiAjIENP TkZJR19TTkRfU09DX0FEQVUxMzcyX0kyQyBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfU09DX0FE QVUxMzcyX1NQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfU09DX0FEQVUxMzczIGlzIG5vdCBz ZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwteDg2XzY0LXJ0LWZlZG9yYS5jb25maWcgYi9rZXJuZWwt eDg2XzY0LXJ0LWZlZG9yYS5jb25maWcKaW5kZXggYWZlYWQyYi4uMDc0YjU2ZSAxMDA2NDQKLS0t IGEva2VybmVsLXg4Nl82NC1ydC1mZWRvcmEuY29uZmlnCisrKyBiL2tlcm5lbC14ODZfNjQtcnQt ZmVkb3JhLmNvbmZpZwpAQCAtNzIwMyw2ICs3MjAzLDcgQEAgQ09ORklHX1NORF9TSU1QTEVfQ0FS RF9VVElMUz1tCiAjIENPTkZJR19TTkRfU0lTNzAxOSBpcyBub3Qgc2V0CiBDT05GSUdfU05EX1NP Q19BQzk3X0JVUz15CiBDT05GSUdfU05EX1NPQ19BQzk3X0NPREVDPW0KK0NPTkZJR19TTkRfU09D X0FDUElfQU1EX1NEQ0FfUVVJUktTPXkKICMgQ09ORklHX1NORF9TT0NfQURBVTEzNzJfSTJDIGlz IG5vdCBzZXQKICMgQ09ORklHX1NORF9TT0NfQURBVTEzNzJfU1BJIGlzIG5vdCBzZXQKIENPTkZJ R19TTkRfU09DX0FEQVUxMzczPW0KQEAgLTg4NzYsNiArODg3Nyw3IEBAIENPTkZJR19WSURFT19B RFY3ODQyPW0KIENPTkZJR19WSURFT19BSzczNzU9bQogQ09ORklHX1ZJREVPX0FLODgxWD1tCiAj IENPTkZJR19WSURFT19BTFZJVU1fQ1NJMiBpcyBub3Qgc2V0CitDT05GSUdfVklERU9fQU1EX0lT UDRfQ0FQVFVSRT1tCiBDT05GSUdfVklERU9fQVIwNTIxPW0KIENPTkZJR19WSURFT19BVTA4Mjg9 bQogIyBDT05GSUdfVklERU9fQVUwODI4X1JDIGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJu ZWwteDg2XzY0LXJ0LXJoZWwuY29uZmlnIGIva2VybmVsLXg4Nl82NC1ydC1yaGVsLmNvbmZpZwpp bmRleCAwODZjMzNlLi5mYjJjODE5IDEwMDY0NAotLS0gYS9rZXJuZWwteDg2XzY0LXJ0LXJoZWwu Y29uZmlnCisrKyBiL2tlcm5lbC14ODZfNjQtcnQtcmhlbC5jb25maWcKQEAgLTY2NjksNiArNjY2 OSw3IEBAIENPTkZJR19TTkRfU0VRX1VNUD15CiAjIENPTkZJR19TTkRfU0lTNzAxOSBpcyBub3Qg c2V0CiAjIENPTkZJR19TTkRfU09DX0FDOTdfQlVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NORF9T T0NfQUM5N19DT0RFQyBpcyBub3Qgc2V0CitDT05GSUdfU05EX1NPQ19BQ1BJX0FNRF9TRENBX1FV SVJLUz15CiAjIENPTkZJR19TTkRfU09DX0FEQVUxMzcyX0kyQyBpcyBub3Qgc2V0CiAjIENPTkZJ R19TTkRfU09DX0FEQVUxMzcyX1NQSSBpcyBub3Qgc2V0CiAjIENPTkZJR19TTkRfU09DX0FEQVUx MzczIGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwuY2hhbmdlbG9nIGIva2VybmVsLmNo YW5nZWxvZwppbmRleCAwNWE1N2QxLi4yNjkwYzE4IDEwMDY0NAotLS0gYS9rZXJuZWwuY2hhbmdl bG9nCisrKyBiL2tlcm5lbC5jaGFuZ2Vsb2cKQEAgLTEsMyArMSwxOSBAQAorKiBNb24gQXVnIDAz IDIwMjYgQXVndXN0byBDYXJpbmdpIDxhY2FyaW5naUByZWRoYXQuY29tPiBbNy4xLjYtMF0KKy0g TmV3IGNvbmZpZyBmb3Igc3RhYmxlIChKdXN0aW4gTS4gRm9yYmVzKQorLSBhY3BpOiBiYXR0ZXJ5 OiBTYW5pdGlzZSBtb2RlbF9udW1iZXIgYnkgZHJvcHBpbmcgdW5wcmludGFibGUgY2hhcmFjdGVy cyAoS2F0ZSBIc3VhbikKKy0gcmVkaGF0OiBjb25maWdzOiBFbmFibGUgQU1EIElTUDQgTUlQSSBj YW1lcmEgc29sdXRpb24gKEthdGUgSHN1YW4pCistIG1lZGlhOiBwbGF0Zm9ybTogYW1kOiBhZGQg RFJNX0FNREdQVSBkZXBlbmRlbmN5IChBcm5kIEJlcmdtYW5uKQorLSBtZWRpYTogcGxhdGZvcm06 IGFtZDogaXNwNDogZHJvcCBzdGFsZSBsaXN0IHJlaW5pdCBiZWZvcmUgZnJlZSAoQmluIER1KQor LSBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNwNCBkZWJ1ZyBmcyBsb2dnaW5nIGFuZCBtb3JlIGRl c2NyaXB0aXZlIGVycm9ycyAoQmluIER1KQorLSBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNwNCB2 aWRlbyBub2RlIGFuZCBidWZmZXJzIGhhbmRsaW5nIGFkZGVkIChCaW4gRHUpCistIG1lZGlhOiBw bGF0Zm9ybTogYW1kOiBpc3A0IHN1YmRldiBhbmQgZmlybXdhcmUgbG9hZGluZyBoYW5kbGluZyBh ZGRlZCAoQmluIER1KQorLSBtZWRpYTogcGxhdGZvcm06IGFtZDogQWRkIGlzcDQgZncgYW5kIGh3 IGludGVyZmFjZSAoQmluIER1KQorLSBtZWRpYTogcGxhdGZvcm06IGFtZDogbG93IGxldmVsIHN1 cHBvcnQgZm9yIGlzcDQgZmlybXdhcmUgKEJpbiBEdSkKKy0gbWVkaWE6IHBsYXRmb3JtOiBhbWQ6 IEludHJvZHVjZSBhbWQgaXNwNCBjYXB0dXJlIGRyaXZlciAoQmluIER1KQorLSBzZXJpYWw6IDgy NTBfbWlkOiBGaXggTlVMTCBmdW5jdGlvbiBwb2ludGVyIGRlcmVmZXJlbmNlIG9uIEROVi9JQ1gt RC9TTlIgcGxhdGZvcm1zIChKaWFuZ3NoYW4gWWkpCistIExpbnV4IHY3LjEuNgorUmVzb2x2ZXM6 IAorCiAqIFR1ZSBKdWwgMjggMjAyNiBKdXN0aW4gTS4gRm9yYmVzIDxqZm9yYmVzQGZlZG9yYXBy b2plY3Qub3JnPiBbNy4xLjUtMV0KIC0gQVNvQzogY3M0Mmw0MzogQ29ycmVjdCByZXBvcnQgZm9y IGZvcmNlZCBtaWNyb3Bob25lIGphY2sgKENoYXJsZXMgS2VlcGF4KQogLSBwbGF0Zm9ybS94ODYv aW50ZWwtdW5jb3JlLWZyZXE6IEZpeCBjdXJyZW50X2ZyZXFfa2h6IGFmdGVyIENQVSBob3RwbHVn IChHdWl4aW9uZyBXZWkpCgpkaWZmIC0tZ2l0IGEva2VybmVsLnNwZWMgYi9rZXJuZWwuc3BlYwpp bmRleCBiNjliNjBlLi5jY2M5MDVmIDEwMDY0NAotLS0gYS9rZXJuZWwuc3BlYworKysgYi9rZXJu ZWwuc3BlYwpAQCAtMTg3LDE4ICsxODcsMTggQEAgU3VtbWFyeTogVGhlIExpbnV4IGtlcm5lbAog IyAgdGhlIC0td2l0aC1yZWxlYXNlIG9wdGlvbiBvdmVycmlkZXMgdGhpcyBzZXR0aW5nLikKICVk ZWZpbmUgZGVidWdidWlsZHNlbmFibGVkIDEKICMgZGVmaW5lIGJ1aWxkaWQgLmxvY2FsCi0lZGVm aW5lIHNwZWNycG12ZXJzaW9uIDcuMS41Ci0lZGVmaW5lIHNwZWN2ZXJzaW9uIDcuMS41CislZGVm aW5lIHNwZWNycG12ZXJzaW9uIDcuMS42CislZGVmaW5lIHNwZWN2ZXJzaW9uIDcuMS42CiAlZGVm aW5lIHBhdGNodmVyc2lvbiA3LjEKLSVkZWZpbmUgcGtncmVsZWFzZSAxMDEKKyVkZWZpbmUgcGtn cmVsZWFzZSAxMDAKICVkZWZpbmUga3ZlcnNpb24gNwotJWRlZmluZSB0YXJmaWxlX3JlbGVhc2Ug Ny4xLjUKKyVkZWZpbmUgdGFyZmlsZV9yZWxlYXNlIDcuMS42CiAjIFRoaXMgaXMgbmVlZGVkIHRv IGRvIG1lcmdlIHdpbmRvdyB2ZXJzaW9uIG1hZ2ljCiAlZGVmaW5lIHBhdGNobGV2ZWwgMQogIyBU aGlzIGFsbG93cyBwa2dfcmVsZWFzZSB0byBoYXZlIGNvbmZpZ3VyYWJsZSAlJXs/ZGlzdH0gdGFn Ci0lZGVmaW5lIHNwZWNyZWxlYXNlIDEwMSV7P2J1aWxkaWR9JXs/ZGlzdH0KKyVkZWZpbmUgc3Bl Y3JlbGVhc2UgMTAwJXs/YnVpbGRpZH0lez9kaXN0fQogIyBUaGlzIGRlZmluZXMgdGhlIGthYmkg dGFyYmFsbCB2ZXJzaW9uCi0lZGVmaW5lIGthYml2ZXJzaW9uIDcuMS41CislZGVmaW5lIGthYml2 ZXJzaW9uIDcuMS42CiAKICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gMSwgYSBicGYgc2Vs ZnRlc3RzIGJ1aWxkIGZhaWx1cmUgd2lsbCBjYXVzZSBhCiAjIGZhdGFsIGtlcm5lbCBwYWNrYWdl IGJ1aWxkIGVycm9yCkBAIC0xNTkzLDcgKzE1OTMsNyBAQCBBdXRvUmVxUHJvdjogbm9cCiAlZGVz Y3JpcHRpb24gJXs/MTolezF9LX1kZWJ1Z2luZm9cCiBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgZGVi dWcgaW5mb3JtYXRpb24gZm9yIHBhY2thZ2UgJXtuYW1lfSV7PzE6LSV7MX19LlwKIFRoaXMgaXMg cmVxdWlyZWQgdG8gdXNlIFN5c3RlbVRhcCB3aXRoICV7bmFtZX0lez8xOi0lezF9fS0le0tWRVJS RUx9LlwKLSV7ZXhwYW5kOiUlZ2xvYmFsIF9maW5kX2RlYnVnaW5mb19vcHRzICV7P19maW5kX2Rl YnVnaW5mb19vcHRzfSAtLWtlZXAtc2VjdGlvbiAnLkJURicgLXAgJy4qXC91c3JcL3NyY1wva2Vy bmVscy8uKnxYWFgnIC1vIGlnbm9yZWQtZGVidWdpbmZvLmxpc3QgLXAgJy8uKi8lJXtLVkVSUkVM X1JFfSV7PzE6WytdJXsxfX0vLip8Ly4qJSV7S1ZFUlJFTF9SRX0lez8xOlwrJXsxfX0oXC5kZWJ1 Zyk/JyAtbyBkZWJ1Z2luZm8lez8xfS5saXN0fVwKKyV7ZXhwYW5kOiUlZ2xvYmFsIF9maW5kX2Rl YnVnaW5mb19vcHRzICV7P19maW5kX2RlYnVnaW5mb19vcHRzfSAtLWtlZXAtc2VjdGlvbiAnLkJU RicgLS1rZWVwLXNlY3Rpb24gJy5ydXN0YycgLXAgJy4qXC91c3JcL3NyY1wva2VybmVscy8uKnxY WFgnIC1vIGlnbm9yZWQtZGVidWdpbmZvLmxpc3QgLXAgJy8uKi8lJXtLVkVSUkVMX1JFfSV7PzE6 WytdJXsxfX0vLip8Ly4qJSV7S1ZFUlJFTF9SRX0lez8xOlwrJXsxfX0oXC5kZWJ1Zyk/JyAtbyBk ZWJ1Z2luZm8lez8xfS5saXN0fVwKICV7bmlsfQogCiAjCkBAIC0yODI3LDYgKzI4MjcsMTQgQEAg QnVpbGRLZXJuZWwoKSB7CiAgICAgaWYgWyAtZiB0b29scy9vYmp0b29sL2ZpeGRlcCBdOyB0aGVu CiAgICAgICBjcCAtYSB0b29scy9vYmp0b29sL2ZpeGRlcCAkUlBNX0JVSUxEX1JPT1QvbGliL21v ZHVsZXMvJEtlcm5lbFZlci9idWlsZC90b29scy9vYmp0b29sLyB8fCA6CiAgICAgZmkKKyAgICBp ZiBscyBydXN0Lyoucm1ldGEgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICBta2RpciAtcCAk UlBNX0JVSUxEX1JPT1QvbGliL21vZHVsZXMvJEtlcm5lbFZlci9idWlsZC9ydXN0CisgICAgICBj cCAtYSBydXN0Lyoucm1ldGEgJFJQTV9CVUlMRF9ST09UL2xpYi9tb2R1bGVzLyRLZXJuZWxWZXIv YnVpbGQvcnVzdC8gfHwgOgorICAgIGZpCisgICAgaWYgbHMgcnVzdC8qLnNvID4vZGV2L251bGwg Mj4mMTsgdGhlbgorICAgICAgbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UL2xpYi9tb2R1bGVzLyRL ZXJuZWxWZXIvYnVpbGQvcnVzdAorICAgICAgY3AgLWEgcnVzdC8qLnNvICRSUE1fQlVJTERfUk9P VC9saWIvbW9kdWxlcy8kS2VybmVsVmVyL2J1aWxkL3J1c3QvIHx8IDoKKyAgICBmaQogICAgIGlm IFsgLWQgYXJjaC8kQXJjaC9zY3JpcHRzIF07IHRoZW4KICAgICAgIGNwIC1hIGFyY2gvJEFyY2gv c2NyaXB0cyAkUlBNX0JVSUxEX1JPT1QvbGliL21vZHVsZXMvJEtlcm5lbFZlci9idWlsZC9hcmNo LyV7X2FyY2h9IHx8IDoKICAgICBmaQpAQCAtNDg1Nyw2ICs0ODY1LDIxIEBAIGZpXAogIwogIwog JWNoYW5nZWxvZworKiBNb24gQXVnIDAzIDIwMjYgQXVndXN0byBDYXJpbmdpIDxhY2FyaW5naUBy ZWRoYXQuY29tPiBbNy4xLjYtMF0KKy0gTmV3IGNvbmZpZyBmb3Igc3RhYmxlIChKdXN0aW4gTS4g Rm9yYmVzKQorLSBhY3BpOiBiYXR0ZXJ5OiBTYW5pdGlzZSBtb2RlbF9udW1iZXIgYnkgZHJvcHBp bmcgdW5wcmludGFibGUgY2hhcmFjdGVycyAoS2F0ZSBIc3VhbikKKy0gcmVkaGF0OiBjb25maWdz OiBFbmFibGUgQU1EIElTUDQgTUlQSSBjYW1lcmEgc29sdXRpb24gKEthdGUgSHN1YW4pCistIG1l ZGlhOiBwbGF0Zm9ybTogYW1kOiBhZGQgRFJNX0FNREdQVSBkZXBlbmRlbmN5IChBcm5kIEJlcmdt YW5uKQorLSBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNwNDogZHJvcCBzdGFsZSBsaXN0IHJlaW5p dCBiZWZvcmUgZnJlZSAoQmluIER1KQorLSBtZWRpYTogcGxhdGZvcm06IGFtZDogaXNwNCBkZWJ1 ZyBmcyBsb2dnaW5nIGFuZCBtb3JlIGRlc2NyaXB0aXZlIGVycm9ycyAoQmluIER1KQorLSBtZWRp YTogcGxhdGZvcm06IGFtZDogaXNwNCB2aWRlbyBub2RlIGFuZCBidWZmZXJzIGhhbmRsaW5nIGFk ZGVkIChCaW4gRHUpCistIG1lZGlhOiBwbGF0Zm9ybTogYW1kOiBpc3A0IHN1YmRldiBhbmQgZmly bXdhcmUgbG9hZGluZyBoYW5kbGluZyBhZGRlZCAoQmluIER1KQorLSBtZWRpYTogcGxhdGZvcm06 IGFtZDogQWRkIGlzcDQgZncgYW5kIGh3IGludGVyZmFjZSAoQmluIER1KQorLSBtZWRpYTogcGxh dGZvcm06IGFtZDogbG93IGxldmVsIHN1cHBvcnQgZm9yIGlzcDQgZmlybXdhcmUgKEJpbiBEdSkK Ky0gbWVkaWE6IHBsYXRmb3JtOiBhbWQ6IEludHJvZHVjZSBhbWQgaXNwNCBjYXB0dXJlIGRyaXZl ciAoQmluIER1KQorLSBzZXJpYWw6IDgyNTBfbWlkOiBGaXggTlVMTCBmdW5jdGlvbiBwb2ludGVy IGRlcmVmZXJlbmNlIG9uIEROVi9JQ1gtRC9TTlIgcGxhdGZvcm1zIChKaWFuZ3NoYW4gWWkpCist IExpbnV4IHY3LjEuNgorCiAqIFR1ZSBKdWwgMjggMjAyNiBKdXN0aW4gTS4gRm9yYmVzIDxqZm9y YmVzQGZlZG9yYXByb2plY3Qub3JnPiBbNy4xLjUtMV0KIC0gQVNvQzogY3M0Mmw0MzogQ29ycmVj dCByZXBvcnQgZm9yIGZvcmNlZCBtaWNyb3Bob25lIGphY2sgKENoYXJsZXMgS2VlcGF4KQogLSBw bGF0Zm9ybS94ODYvaW50ZWwtdW5jb3JlLWZyZXE6IEZpeCBjdXJyZW50X2ZyZXFfa2h6IGFmdGVy IENQVSBob3RwbHVnIChHdWl4aW9uZyBXZWkpCgpkaWZmIC0tZ2l0IGEvcGF0Y2gtNy4xLXJlZGhh dC5wYXRjaCBiL3BhdGNoLTcuMS1yZWRoYXQucGF0Y2gKaW5kZXggZjJhYmMzYS4uMWFiY2Y2ZCAx MDA2NDQKLS0tIGEvcGF0Y2gtNy4xLXJlZGhhdC5wYXRjaAorKysgYi9wYXRjaC03LjEtcmVkaGF0 LnBhdGNoCkBAIC0xLDc0ICsxLDExMiBAQAotIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKLSBNYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArCi0gYXJjaC9hcm0vS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KLSBhcmNoL2FybTY0L0tjb25m aWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQotIGFyY2gvYXJtNjQv a2VybmVsL3NldHVwLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsKLSBhcmNoL3Mz OTAvaW5jbHVkZS9hc20vaXBsLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gYXJj aC9zMzkwL2tlcm5lbC9pcGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKwot IGFyY2gvczM5MC9rZXJuZWwvc2V0dXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICsKLSBhcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyMiArLQotIGFyY2gveDg2L2t2bS9sYXBpYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCi0gYXJjaC94ODYva3ZtL21tdS9tbXUuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTIgKy0KLSBhcmNoL3g4Ni9rdm0vbW11L3BhZ2luZ190bXBsLmggICAgICAg ICAgICAgICAgICAgICB8ICAxMCArLQotIGFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDExICstCi0gY3J5cHRvL2FrY2lwaGVyLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KLSBjcnlwdG8vZGguYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArCi0gY3J5cHRvL3NlcWl2LmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKy0KLSBjcnlwdG8vc2lnLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQotIGNyeXB0by90 ZXN0bWdyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCi0gZHJp dmVycy9hY3BpL2FwZWkvaGVzdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKwot IGRyaXZlcnMvYWNwaS9pcnEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3 ICstCi0gZHJpdmVycy9hY3BpL3NjYW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDkgKwotIGRyaXZlcnMvYXRhL2xpYmFoY2kuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDE4ICsKLSBkcml2ZXJzL2NoYXIvaXBtaS9pcG1pX2RtaS5jICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNSArCi0gZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9tc2doYW5kbGVyLmMgICAg ICAgICAgICAgICAgfCAgMTYgKy0KLSBkcml2ZXJzL2NoYXIvcmFuZG9tLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDEyNiArKy0KLSBkcml2ZXJzL2Zpcm13YXJlL2VmaS9NYWtlZmls ZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gZHJpdmVycy9maXJtd2FyZS9lZmkvZWZp LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjQgKystCi0gZHJpdmVycy9maXJtd2FyZS9l ZmkvbGlic3R1Yi9mZHQuYyAgICAgICAgICAgICAgICAgfCAgIDUgKwotIGRyaXZlcnMvZmlybXdh cmUvZWZpL2xpYnN0dWIvc2VjdXJlYm9vdC5jICAgICAgICAgIHwgIDE0ICstCi0gZHJpdmVycy9m aXJtd2FyZS9lZmkvc2VjdXJlYm9vdC5jICAgICAgICAgICAgICAgICAgfCAgMzggKwotIGRyaXZl cnMvZ3B1L2RybS9hbWQvcG0vc3dzbXUvYW1kZ3B1X3NtdS5jICAgICAgICAgIHwgIDEyICsKLSBk cml2ZXJzL2dwdS9kcm0vYW1kL3BtL3N3c211L2luYy9hbWRncHVfc211LmggICAgICB8ICAxMSAr Ci0gLi4uL2dwdS9kcm0vYW1kL3BtL3N3c211L3NtdTE0L3NtdV92MTRfMF8wX3BwdC5jICAgfCAg NDUgKwotIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICAgICAg IHwgIDExICstCi0gZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC1ldG00eC1j b3JlLmMgfCAgMTkgKwotIGRyaXZlcnMvaW9tbXUvaW9tbXUuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIyICsKLSBkcml2ZXJzL21lZGlhL2kyYy9LY29uZmlnICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAxMCArCi0gZHJpdmVycy9tZWRpYS9pMmMvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIGRyaXZlcnMvbWVkaWEvaTJjL2lteDQ3MS5jICAg ICAgICAgICAgICAgICAgICAgICAgIHwgOTU3ICsrKysrKysrKysrKysrKysrKysrKwotIGRyaXZl cnMvbWVkaWEvcGNpL2ludGVsL2lwdS1icmlkZ2UuYyAgICAgICAgICAgICAgIHwgIDQxICsKLSBk cml2ZXJzL3BjaS9xdWlya3MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNCAr Ci0gZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaW50MzQ3Mi9kaXNjcmV0ZS5jICAgICAgfCAg MTggKwotIC4uLi91bmNvcmUtZnJlcXVlbmN5L3VuY29yZS1mcmVxdWVuY3ktY29tbW9uLmMgICAg IHwgICA3ICstCi0gZHJpdmVycy91c2IvY29yZS9odWIuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDcgKwotIGZzL3hmcy9saWJ4ZnMveGZzX2V4Y2htYXBzLmMgICAgICAgICAgICAg ICAgICAgICAgIHwgIDEwICsKLSBpbmNsdWRlL2xpbnV4L2NyeXB0by5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArCi0gaW5jbHVkZS9saW51eC9lZmkuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMjIgKy0KLSBpbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMu aCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gaW5jbHVkZS9saW51eC9yYW5kb20uaCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKwotIGluY2x1ZGUvbGludXgvc2VjdXJp dHkuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKLSBrZXJuZWwvbW9kdWxlL3Np Z25pbmcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQotIGtlcm5lbC9zY2hl ZC9leHQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDc1ICstCi0gbmV0L3Bh Y2tldC9hZl9wYWNrZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KLSBz Y3JpcHRzL01ha2VmaWxlLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyAr Ci0gc2NyaXB0cy90YWdzLnNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKwotIHNlY3VyaXR5L2ludGVncml0eS9wbGF0Zm9ybV9jZXJ0cy9sb2FkX3VlZmkuYyAgICAg IHwgICA2ICstCi0gc2VjdXJpdHkvbG9ja2Rvd24vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTMgKwotIHNlY3VyaXR5L2xvY2tkb3duL2xvY2tkb3duLmMgICAgICAgICAgICAg ICAgICAgICAgIHwgIDExICsKLSBzb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jICAgICAg ICAgICAgICAgICAgICB8ICAgMyArLQotIHNvdW5kL3NvYy9jb2RlY3MvcnQ3MjItc2RjYS5jICAg ICAgICAgICAgICAgICAgICAgIHwgIDc3ICstCi0gc291bmQvc29jL2NvZGVjcy9ydDcyMi1zZGNh LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwotIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L2JwZi9ERU5ZTElTVC5yaGVsICAgICAgICAgIHwgIDc2ICsrCi0gdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvYnBmL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDIgKy0KLSB0b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rc3ltc19idGYuYyB8ICAzMSAtCi0gNjQgZmlsZXMg Y2hhbmdlZCwgMTk4NCBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCisgTUFJTlRBSU5F UlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICsKKyBNYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKwor IGFyY2gvYXJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg NCArLQorIGFyY2gvYXJtNjQvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMiArLQorIGFyY2gvYXJtNjQva2VybmVsL3NldHVwLmMgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyNyArCisgYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lwbC5oICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAxICsKKyBhcmNoL3MzOTAva2VybmVsL2lwbC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDUgKworIGFyY2gvczM5MC9rZXJuZWwvc2V0dXAuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCisgYXJjaC94ODYva2VybmVsL3NldHVwLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICstCisgYXJjaC94ODYva3ZtL21tdS9t bXUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBjcnlwdG8vYWtjaXBo ZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KKyBjcnlwdG8v ZGguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjUgKworIGNy eXB0by9zZXFpdi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSAr LQorIGNyeXB0by9zaWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMyArLQorIGNyeXB0by90ZXN0bWdyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNiArLQorIGRyaXZlcnMvYWNwaS9hcGVpL2hlc3QuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgOCArCisgZHJpdmVycy9hY3BpL2JhdHRlcnkuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDE0ICsKKyBkcml2ZXJzL2FjcGkvaXJxLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKy0KKyBkcml2ZXJzL2FjcGkvc2Nhbi5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKworIGRyaXZlcnMvYXRhL2xpYmFoY2ku YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArCisgZHJpdmVycy9jaGFyL2lw bWkvaXBtaV9kbWkuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsKKyBkcml2ZXJzL2No YXIvaXBtaS9pcG1pX21zZ2hhbmRsZXIuYyAgICAgICAgICAgICAgICB8ICAgMTYgKy0KKyBkcml2 ZXJzL2NoYXIvcmFuZG9tLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjYgKyst CisgZHJpdmVycy9maXJtd2FyZS9lZmkvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAg ICAxICsKKyBkcml2ZXJzL2Zpcm13YXJlL2VmaS9lZmkuYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMjQgKystCisgZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9mZHQuYyAgICAgICAg ICAgICAgICAgfCAgICA1ICsKKyBkcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL3NlY3VyZWJv b3QuYyAgICAgICAgICB8ICAgMTQgKy0KKyBkcml2ZXJzL2Zpcm13YXJlL2VmaS9zZWN1cmVib290 LmMgICAgICAgICAgICAgICAgICB8ICAgMzggKworIGRyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdo dC9jb3Jlc2lnaHQtZXRtNHgtY29yZS5jIHwgICAxOSArCisgZHJpdmVycy9pb21tdS9pb21tdS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICsKKyBkcml2ZXJzL21lZGlhL2ky Yy9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKworIGRyaXZlcnMvbWVk aWEvaTJjL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCisgZHJpdmVy cy9tZWRpYS9pMmMvaW14NDcxLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTU3ICsrKysr KysrKysrKysrKysrKworIGRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lwdS1icmlkZ2UuYyAgICAg ICAgICAgICAgIHwgICA0MSArCisgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnICAgICAg ICAgICAgICAgICAgICAgfCAgICAxICsKKyBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKworIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1k L0tjb25maWcgICAgICAgICAgICAgICAgIHwgICAgMyArCisgZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9hbWQvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgICAzICsKKyBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL2FtZC9pc3A0L0tjb25maWcgICAgICAgICAgICB8ICAgMTcgKworIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1kL2lzcDQvTWFrZWZpbGUgICAgICAgICAgIHwgICAxMCArCisgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0LmMgICAgICAgICAgICAgfCAgMjQwICsrKysr CisgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0LmggICAgICAgICAgICAgfCAg IDIwICsKKyBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfZGVidWcuYyAgICAg ICB8ICAyNzEgKysrKysKKyBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfZGVi dWcuaCAgICAgICB8ICAgNDEgKworIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNw NF9md19jbWRfcmVzcC5oIHwgIDMxOCArKysrKysKKyBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2Ft ZC9pc3A0L2lzcDRfaHdfcmVnLmggICAgICB8ICAxMjQgKysrCisgZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbWQvaXNwNC9pc3A0X2ludGVyZmFjZS5jICAgfCAgODMyICsrKysrKysrKysrKysrKysK KyBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfaW50ZXJmYWNlLmggICB8ICAx NDQgKysrCisgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X3N1YmRldi5jICAg ICAgfCAxMDQ3ICsrKysrKysrKysrKysrKysrKysrCisgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9h bWQvaXNwNC9pc3A0X3N1YmRldi5oICAgICAgfCAgMTI3ICsrKworIGRyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1kL2lzcDQvaXNwNF92aWRlby5jICAgICAgIHwgIDc5NyArKysrKysrKysrKysrKysK KyBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfdmlkZW8uaCAgICAgICB8ICAg NTcgKysKKyBkcml2ZXJzL3BjaS9xdWlya3MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMjQgKworIGRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2ludDM0NzIvZGlzY3JldGUu YyAgICAgIHwgICAxOCArCisgZHJpdmVycy91c2IvY29yZS9odWIuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICA3ICsKKyBmcy94ZnMvbGlieGZzL3hmc19leGNobWFwcy5jICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMTAgKworIGluY2x1ZGUvbGludXgvY3J5cHRvLmggICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCisgaW5jbHVkZS9saW51eC9lZmkuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICstCisgaW5jbHVkZS9saW51eC9sc21f aG9va19kZWZzLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBpbmNsdWRlL2xpbnV4 L3JhbmRvbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKworIGluY2x1ZGUv bGludXgvc2VjdXJpdHkuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArCisga2Vy bmVsL21vZHVsZS9zaWduaW5nLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICst Cisgc2NyaXB0cy9NYWtlZmlsZS5saWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAzICsKKyBzY3JpcHRzL3RhZ3Muc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKworIHNlY3VyaXR5L2ludGVncml0eS9wbGF0Zm9ybV9jZXJ0cy9sb2FkX3VlZmku YyAgICAgIHwgICAgNiArLQorIHNlY3VyaXR5L2xvY2tkb3duL0tjb25maWcgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxMyArCisgc2VjdXJpdHkvbG9ja2Rvd24vbG9ja2Rvd24uYyAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDExICsKKyBzb3VuZC9zb2MvY29kZWNzL3J0NzIyLXNkY2Eu YyAgICAgICAgICAgICAgICAgICAgICB8ICAgNzcgKy0KKyBzb3VuZC9zb2MvY29kZWNzL3J0NzIy LXNkY2EuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKworIHRvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL2JwZi9ERU5ZTElTVC5yaGVsICAgICAgICAgIHwgICA3NiArKworIHRvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAgMiArLQorIHRvb2xz L3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tzeW1zX2J0Zi5jIHwgICAzMSAtCisg NzIgZmlsZXMgY2hhbmdlZCwgNTkwMiBpbnNlcnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCiAK IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCi1pbmRleCBmNzRkYTY0MjI5 MGEuLjA2YzhiYjIwNzVlNiAxMDA2NDQKK2luZGV4IGY3NGRhNjQyMjkwYS4uM2EwZTk3N2ZjOWNm IDEwMDY0NAogLS0tIGEvTUFJTlRBSU5FUlMKICsrKyBiL01BSU5UQUlORVJTCi1AQCAtMjQ5NjQs NiArMjQ5NjQsMTIgQEAgVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorQEAgLTEx NTksNiArMTE1OSwyOSBAQCBUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51 eC9rZXJuZWwvZ2l0L2lvbW11L2xpbnV4LmdpdAorIEY6CWRyaXZlcnMvaW9tbXUvYW1kLworIEY6 CWluY2x1ZGUvbGludXgvYW1kLWlvbW11LmgKKyAKKytBTUQgSVNQNCBEUklWRVIKKytNOglCaW4g RHUgPGJpbi5kdUBhbWQuY29tPgorK006CU5pcnVqb2dpIFByYXRhcCA8cHJhdGFwLm5pcnVqb2dp QGFtZC5jb20+CisrTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCisrUzoJTWFpbnRhaW5l ZAorK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKKytGOglkcml2ZXJzL21lZGlh L3BsYXRmb3JtL2FtZC9LY29uZmlnCisrRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWQvTWFr ZWZpbGUKKytGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L0tjb25maWcKKytGOglk cml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L01ha2VmaWxlCisrRjoJZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0LmMKKytGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2Ft ZC9pc3A0L2lzcDQuaAorK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9k ZWJ1Zy5jCisrRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X2RlYnVnLmgK KytGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfZndfY21kX3Jlc3AuaAor K0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9od19yZWcuaAorK0Y6CWRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9pbnRlcmZhY2UuYworK0Y6CWRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9pbnRlcmZhY2UuaAorK0Y6CWRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9zdWJkZXYuYworK0Y6CWRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9zdWJkZXYuaAorK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vYW1kL2lzcDQvaXNwNF92aWRlby5jCisrRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWQv aXNwNC9pc3A0X3ZpZGVvLmgKKysKKyBBTUQgS0ZECisgTToJRmVsaXggS3VlaGxpbmcgPEZlbGl4 Lkt1ZWhsaW5nQGFtZC5jb20+CisgTDoJYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0BA IC0yNDk2NCw2ICsyNDk4NywxMiBAQCBUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0 CiAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9zb255LGlt eDQxNS55YW1sCiAgRjoJZHJpdmVycy9tZWRpYS9pMmMvaW14NDE1LmMKICAKQEAgLTgyLDcgKzEy MCw3IEBAIGluZGV4IGY3NGRhNjQyMjkwYS4uMDZjOGJiMjA3NWU2IDEwMDY0NAogIE06CU1heGlt IExldml0c2t5IDxtYXhpbWxldml0c2t5QGdtYWlsLmNvbT4KICBNOglBbGV4IER1Ym92IDxvYWth ZEB5YWhvby5jb20+CiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNThm M2IzZTJkYzFjLi5jNTdlZTFjZWQzMDggMTAwNjQ0CitpbmRleCA3NWU1Yzk1NzM4NjMuLjczNGQ0 ZTJkYTk2OSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTM1Niw2 ICszNTYsMTcgQEAgaWZuZXEgKCQoZmlsdGVyIGluc3RhbGwsJChNQUtFQ01ER09BTFMpKSwpCkBA IC0xMDMsNyArMTQxLDcgQEAgaW5kZXggNThmM2IzZTJkYzFjLi5jNTdlZTFjZWQzMDggMTAwNjQ0 CiAgaWZkZWYgbWl4ZWQtYnVpbGQKICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICMgV2UncmUgY2Fs bGVkIHdpdGggbWl4ZWQgdGFyZ2V0cyAoKmNvbmZpZyBhbmQgYnVpbGQgdGFyZ2V0cykuCi1AQCAt MTQxOCw2ICsxNDI5LDggQEAgdWFwaS1hc20tZ2VuZXJpYzoKK0BAIC0xNDIzLDYgKzE0MzQsOCBA QCB1YXBpLWFzbS1nZW5lcmljOgogICMgR2VuZXJhdGUgc29tZSBmaWxlcwogICMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgCkBAIC0xMTIsNyArMTUwLDcgQEAgaW5kZXggNThmM2IzZTJkYzFjLi5jNTdl ZTFjZWQzMDggMTAwNjQ0CiAgIyBLRVJORUxSRUxFQVNFIGNhbiBjaGFuZ2UgZnJvbSBhIGZldyBk aWZmZXJlbnQgcGxhY2VzLCBtZWFuaW5nIHZlcnNpb24uaAogICMgbmVlZHMgdG8gYmUgdXBkYXRl ZCwgc28gdGhpcyBjaGVjayBpcyBmb3JjZWQgb24gYWxsIGJ1aWxkcwogIAotQEAgLTIwODMsNiAr MjA5NiwyMyBAQCBlbmRpZgorQEAgLTIwODgsNiArMjEwMSwyMyBAQCBlbmRpZgogIAogIGlmZGVm IENPTkZJR19NT0RVTEVTCiAgCkBAIC0zMTEsMjEgKzM0OSw4IEBAIGluZGV4IDQ2ODgyY2U3OWMz YS4uOWM3MzgxNGMzMWUwIDEwMDY0NAogIAogIAlyZXNlcnZlX2luaXRyZCgpOwogIAotZGlmZiAt LWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmMKLWluZGV4 IGQ4MDZhYmFlZGEzZC4uM2EwZWVmOTVlOTA1IDEwMDY0NAotLS0tIGEvYXJjaC94ODYva3ZtL2xh cGljLmMKLSsrKyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jCi1AQCAtMjA1Miw3ICsyMDUyLDcgQEAg c3RhdGljIHZvaWQgYXBpY190aW1lcl9leHBpcmVkKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGJv b2wgZnJvbV90aW1lcl9mbikKLSAJaWYgKGFwaWNfbHZ0dF90c2NkZWFkbGluZShhcGljKSB8fCBr dGltZXItPmh2X3RpbWVyX2luX3VzZSkKLSAJCWt0aW1lci0+ZXhwaXJlZF90c2NkZWFkbGluZSA9 IGt0aW1lci0+dHNjZGVhZGxpbmU7Ci0gCi0tCWlmICghZnJvbV90aW1lcl9mbiAmJiBhcGljLT5h cGljdl9hY3RpdmUpIHsKLSsJaWYgKCFmcm9tX3RpbWVyX2ZuICYmIGFwaWMtPmFwaWN2X2FjdGl2 ZSAmJiB2Y3B1LT53YW50c190b19ydW4pIHsKLSAJCVdBUk5fT04oa3ZtX2dldF9ydW5uaW5nX3Zj cHUoKSAhPSB2Y3B1KTsKLSAJCWt2bV9hcGljX2luamVjdF9wZW5kaW5nX3RpbWVyX2lycXMoYXBp Yyk7Ci0gCQlyZXR1cm47CiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYyBiL2Fy Y2gveDg2L2t2bS9tbXUvbW11LmMKLWluZGV4IDBjMmUzNWUzZmZiZC4uZGM0ZmRhM2I5NzY5IDEw MDY0NAoraW5kZXggMzRhMzEyNzA1MjUzLi5kYzRmZGEzYjk3NjkgMTAwNjQ0CiAtLS0gYS9hcmNo L3g4Ni9rdm0vbW11L21tdS5jCiArKysgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCiBAQCAtMjYz NSw2ICsyNjM1LDcgQEAgc3RhdGljIGludCBtbXVfcGFnZV96YXBfcHRlKHN0cnVjdCBrdm0gKmt2 bSwgc3RydWN0IGt2bV9tbXVfcGFnZSAqc3AsCkBAIC0zMzYsOTQgKzM2MSw2IEBAIGluZGV4IDBj MmUzNWUzZmZiZC4uZGM0ZmRhM2I5NzY5IDEwMDY0NAogIAkJCSAgICAhYXRvbWljX2xvbmdfcmVh ZCgmY2hpbGQtPnBhcmVudF9wdGVzLnZhbCkpCiAgCQkJCXJldHVybiBrdm1fbW11X3ByZXBhcmVf emFwX3BhZ2Uoa3ZtLCBjaGlsZCwKICAJCQkJCQkJCWludmFsaWRfbGlzdCk7Ci1AQCAtNDgzNywx NiArNDgzOCwxNyBAQCBzdGF0aWMgaW50IGRpcmVjdF9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgc3RydWN0IGt2bV9wYWdlX2ZhdWx0ICpmYXVsdAotIAlpZiAociAhPSBSRVRfUEZf Q09OVElOVUUpCi0gCQlyZXR1cm4gcjsKLSAKLS0JciA9IFJFVF9QRl9SRVRSWTsKLSAJd3JpdGVf bG9jaygmdmNwdS0+a3ZtLT5tbXVfbG9jayk7Ci0gCi0tCWlmIChpc19wYWdlX2ZhdWx0X3N0YWxl KHZjcHUsIGZhdWx0KSkKLS0JCWdvdG8gb3V0X3VubG9jazsKLS0KLSAJciA9IG1ha2VfbW11X3Bh Z2VzX2F2YWlsYWJsZSh2Y3B1KTsKLSAJaWYgKHIpCi0gCQlnb3RvIG91dF91bmxvY2s7Ci0gCi0r CWlmIChpc19wYWdlX2ZhdWx0X3N0YWxlKHZjcHUsIGZhdWx0KSkgewotKwkJciA9IFJFVF9QRl9S RVRSWTsKLSsJCWdvdG8gb3V0X3VubG9jazsKLSsJfQotKwotIAlyID0gZGlyZWN0X21hcCh2Y3B1 LCBmYXVsdCk7Ci0gCi0gb3V0X3VubG9jazoKLUBAIC03NTAxLDcgKzc1MDMsOSBAQCB2b2lkIGt2 bV9tbXVfaW52YWxpZGF0ZV9tbWlvX3NwdGVzKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdlbikKLSBz dGF0aWMgdm9pZCBtbXVfZGVzdHJveV9jYWNoZXModm9pZCkKLSB7Ci0gCWttZW1fY2FjaGVfZGVz dHJveShwdGVfbGlzdF9kZXNjX2NhY2hlKTsKLSsJcHRlX2xpc3RfZGVzY19jYWNoZSA9IE5VTEw7 Ci0gCWttZW1fY2FjaGVfZGVzdHJveShtbXVfcGFnZV9oZWFkZXJfY2FjaGUpOwotKwltbXVfcGFn ZV9oZWFkZXJfY2FjaGUgPSBOVUxMOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBrdm1fd2FrZV9ueF9y ZWNvdmVyeV90aHJlYWQoc3RydWN0IGt2bSAqa3ZtKQotZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2 bS9tbXUvcGFnaW5nX3RtcGwuaCBiL2FyY2gveDg2L2t2bS9tbXUvcGFnaW5nX3RtcGwuaAotaW5k ZXggOTAxY2QyYmQ0MGI4Li42NDY1ZGU4MjBlNzAgMTAwNjQ0Ci0tLS0gYS9hcmNoL3g4Ni9rdm0v bW11L3BhZ2luZ190bXBsLmgKLSsrKyBiL2FyY2gveDg2L2t2bS9tbXUvcGFnaW5nX3RtcGwuaAot QEAgLTgyNywxNSArODI3LDE3IEBAIHN0YXRpYyBpbnQgRk5BTUUocGFnZV9mYXVsdCkoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3BhZ2VfZmF1bHQgKmZhdWx0Ci0gCX0KLSAjZW5k aWYKLSAKLS0JciA9IFJFVF9QRl9SRVRSWTsKLSAJd3JpdGVfbG9jaygmdmNwdS0+a3ZtLT5tbXVf bG9jayk7Ci0gCi0tCWlmIChpc19wYWdlX2ZhdWx0X3N0YWxlKHZjcHUsIGZhdWx0KSkKLS0JCWdv dG8gb3V0X3VubG9jazsKLS0KLSAJciA9IG1ha2VfbW11X3BhZ2VzX2F2YWlsYWJsZSh2Y3B1KTsK LSAJaWYgKHIpCi0gCQlnb3RvIG91dF91bmxvY2s7Ci0rCi0rCWlmIChpc19wYWdlX2ZhdWx0X3N0 YWxlKHZjcHUsIGZhdWx0KSkgewotKwkJciA9IFJFVF9QRl9SRVRSWTsKLSsJCWdvdG8gb3V0X3Vu bG9jazsKLSsJfQotKwotIAlyID0gRk5BTUUoZmV0Y2gpKHZjcHUsIGZhdWx0LCAmd2Fsa2VyKTsK LSAKLSBvdXRfdW5sb2NrOgotZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMg Yi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jCi1pbmRleCA1MmFiNTJiMGUxY2MuLjE3MGIwYzRk ODY1ZiAxMDA2NDQKLS0tLSBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMKLSsrKyBiL2FyY2gv eDg2L2t2bS92bXgvbmVzdGVkLmMKLUBAIC0zMzYsNiArMzM2LDcgQEAgc3RhdGljIHZvaWQgbmVz dGVkX3B1dF92bWNzMTJfcGFnZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQotIHN0YXRpYyB2b2lk IGZyZWVfbmVzdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKLSB7Ci0gCXN0cnVjdCB2Y3B1X3Zt eCAqdm14ID0gdG9fdm14KHZjcHUpOwotKwlzdHJ1Y3Qgdm1jcyAqc2hhZG93X3ZtY3M7Ci0gCi0g CWlmIChXQVJOX09OX09OQ0Uodm14LT5sb2FkZWRfdm1jcyAhPSAmdm14LT52bWNzMDEpKQotIAkJ dm14X3N3aXRjaF92bWNzKHZjcHUsICZ2bXgtPnZtY3MwMSk7Ci1AQCAtMzUzLDkgKzM1NCwxNSBA QCBzdGF0aWMgdm9pZCBmcmVlX25lc3RlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCi0gCXZteC0+ bmVzdGVkLmN1cnJlbnRfdm1wdHIgPSBJTlZBTElEX0dQQTsKLSAJaWYgKGVuYWJsZV9zaGFkb3df dm1jcykgewotIAkJdm14X2Rpc2FibGVfc2hhZG93X3ZtY3Modm14KTsKLS0JCXZtY3NfY2xlYXIo dm14LT52bWNzMDEuc2hhZG93X3ZtY3MpOwotLQkJZnJlZV92bWNzKHZteC0+dm1jczAxLnNoYWRv d192bWNzKTsKLSsKLSsJCS8qCi0rCQkgKiBLZWVwIHRoZSBwb2ludGVyIHZpc2libGUgdW50aWwg YWZ0ZXIgVk1DTEVBUiwgc28gbWlncmF0aW9uCi0rCQkgKiBjYW4gY2xlYXIgYW4gYWN0aXZlIHNo YWRvdyBWTUNTIG9uIHRoZSBvbGQgQ1BVLgotKwkJICovCi0rCQlzaGFkb3dfdm1jcyA9IHZteC0+ dm1jczAxLnNoYWRvd192bWNzOwotKwkJdm1jc19jbGVhcihzaGFkb3dfdm1jcyk7Ci0gCQl2bXgt PnZtY3MwMS5zaGFkb3dfdm1jcyA9IE5VTEw7Ci0rCQlmcmVlX3ZtY3Moc2hhZG93X3ZtY3MpOwot IAl9Ci0gCWtmcmVlKHZteC0+bmVzdGVkLmNhY2hlZF92bWNzMTIpOwotIAl2bXgtPm5lc3RlZC5j YWNoZWRfdm1jczEyID0gTlVMTDsKIGRpZmYgLS1naXQgYS9jcnlwdG8vYWtjaXBoZXIuYyBiL2Ny eXB0by9ha2NpcGhlci5jCiBpbmRleCBkZmU4N2IzY2UxODMuLmNkMTMwMmNhM2IzNiAxMDA2NDQK IC0tLSBhL2NyeXB0by9ha2NpcGhlci5jCkBAIC01ODEsNiArNTE4LDQ1IEBAIGluZGV4IDIwZDc1 NzY4N2UzZC4uOTBhMTNmMjBmMDUyIDEwMDY0NAogIAloZXN0X2hkciA9IChzdHJ1Y3QgYWNwaV9o ZXN0X2hlYWRlciAqKShoZXN0X3RhYiArIDEpOwogIAlmb3IgKGkgPSAwOyBpIDwgaGVzdF90YWIt PmVycm9yX3NvdXJjZV9jb3VudDsgaSsrKSB7CiAgCQlsZW4gPSBoZXN0X2VzcmNfbGVuKGhlc3Rf aGRyKTsKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYmF0dGVyeS5jIGIvZHJpdmVycy9hY3Bp L2JhdHRlcnkuYworaW5kZXggYjgyZGQ2N2Q5OGM5Li44NWFjMzAxZTE4MzQgMTAwNjQ0CistLS0g YS9kcml2ZXJzL2FjcGkvYmF0dGVyeS5jCisrKysgYi9kcml2ZXJzL2FjcGkvYmF0dGVyeS5jCitA QCAtMTAsNiArMTAsNyBAQAorIAorICNkZWZpbmUgcHJfZm10KGZtdCkgIkFDUEk6IGJhdHRlcnk6 ICIgZm10CisgCisrI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CisgI2luY2x1ZGUgPGxpbnV4L2Rl bGF5Lmg+CisgI2luY2x1ZGUgPGxpbnV4L2RtaS5oPgorICNpbmNsdWRlIDxsaW51eC9qaWZmaWVz Lmg+CitAQCAtNDgzLDYgKzQ4NCwxNSBAQCBzdGF0aWMgaW50IGFjcGlfYmF0dGVyeV9nZXRfc3Rh dHVzKHN0cnVjdCBhY3BpX2JhdHRlcnkgKmJhdHRlcnkpCisgCXJldHVybiAwOworIH0KKyAKKytz dGF0aWMgdm9pZCBhY3BpX2JhdHRlcnlfY2xlYW5fdW5wcmludGFibGVfY2hhcnMoY2hhciAqc3Ry LCBzaXplX3QgbGVuZ3RoKQorK3sKKysJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5n dGg7IGkrKykgeworKwkJaWYgKCFpc2FzY2lpKHN0cltpXSkgfHwgIWlzcHJpbnQoc3RyW2ldKSkg eworKwkJCXN0cltpXSA9ICdcMCc7CisrCQkJYnJlYWs7CisrCQl9CisrCX0KKyt9CisgCisgc3Rh dGljIGludCBleHRyYWN0X2JhdHRlcnlfaW5mbyhjb25zdCBpbnQgdXNlX2JpeCwKKyAJCQkgc3Ry dWN0IGFjcGlfYmF0dGVyeSAqYmF0dGVyeSwKK0BAIC01MjQsNiArNTM0LDEwIEBAIHN0YXRpYyBp bnQgZXh0cmFjdF9iYXR0ZXJ5X2luZm8oY29uc3QgaW50IHVzZV9iaXgsCisgCSAgICBiYXR0ZXJ5 LT5jYXBhY2l0eV9ub3cgPiBiYXR0ZXJ5LT5mdWxsX2NoYXJnZV9jYXBhY2l0eSkKKyAJCWJhdHRl cnktPmNhcGFjaXR5X25vdyA9IGJhdHRlcnktPmZ1bGxfY2hhcmdlX2NhcGFjaXR5OworIAorKwlp ZiAoIXJlc3VsdCkKKysJCWFjcGlfYmF0dGVyeV9jbGVhbl91bnByaW50YWJsZV9jaGFycyhiYXR0 ZXJ5LT5tb2RlbF9udW1iZXIsCisrCQkJCQlBUlJBWV9TSVpFKGJhdHRlcnktPm1vZGVsX251bWJl cikpOworKworIAlyZXR1cm4gcmVzdWx0OworIH0KKyAKIGRpZmYgLS1naXQgYS9kcml2ZXJzL2Fj cGkvaXJxLmMgYi9kcml2ZXJzL2FjcGkvaXJxLmMKIGluZGV4IGQxNTk1MTU2Yzg2YS4uOTQ4NTIx MmYxYTZkIDEwMDY0NAogLS0tIGEvZHJpdmVycy9hY3BpL2lycS5jCkBAIC0xMTk4LDE2NCArMTE3 NCw2IEBAIGluZGV4IDAwMDAwMDAwMDAwMC4uZGUwYTM3MTRhNWQ0CiArCQl9CiArCX0KICt9Ci1k aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9zd3NtdS9hbWRncHVfc211LmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3BtL3N3c211L2FtZGdwdV9zbXUuYwotaW5kZXggOGZhZjdkZTdh YWE5Li5mNjViYjFkYzQ0YWMgMTAwNjQ0Ci0tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL3N3 c211L2FtZGdwdV9zbXUuYwotKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9zd3NtdS9hbWRn cHVfc211LmMKLUBAIC0xMzY1LDYgKzEzNjUsMTQgQEAgc3RhdGljIHZvaWQgc211X2ZlYXR1cmVf Y2FwX2luaXQoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpCi0gCWJpdG1hcF96ZXJvKGZlYV9jYXAt PmNhcF9tYXAsIFNNVV9GRUFUVVJFX0NBUF9JRF9fQ09VTlQpOwotIH0KLSAKLStzdGF0aWMgaW50 IHNtdV9zZXRfcG93ZXJfZGVwKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBib29sIGVuYWJsZSkK LSt7Ci0rCWlmICghc211LT5wcHRfZnVuY3MtPnNldF9wb3dlcl9kZXApCi0rCQlyZXR1cm4gMDsK LSsKLSsJcmV0dXJuIHNtdS0+cHB0X2Z1bmNzLT5zZXRfcG93ZXJfZGVwKHNtdSwgZW5hYmxlKTsK LSt9Ci0rCi0gc3RhdGljIGludCBzbXVfc3dfaW5pdChzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICpp cF9ibG9jaykKLSB7Ci0gCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaXBfYmxvY2stPmFk ZXY7Ci1AQCAtMTQyNiw2ICsxNDM0LDggQEAgc3RhdGljIGludCBzbXVfc3dfaW5pdChzdHJ1Y3Qg YW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jaykKLSAJaWYgKCFzbXUtPnBwdF9mdW5jcy0+Z2V0X2Zh bl9jb250cm9sX21vZGUpCi0gCQlzbXUtPmFkZXYtPnBtLm5vX2ZhbiA9IHRydWU7Ci0gCi0rCXNt dV9zZXRfcG93ZXJfZGVwKHNtdSwgdHJ1ZSk7Ci0rCi0gCXJldHVybiAwOwotIH0KLSAKLUBAIC0x NDQ4LDYgKzE0NTgsOCBAQCBzdGF0aWMgaW50IHNtdV9zd19maW5pKHN0cnVjdCBhbWRncHVfaXBf YmxvY2sgKmlwX2Jsb2NrKQotIAotIAlzbXVfZmluaV9taWNyb2NvZGUoc211KTsKLSAKLSsJc211 X3NldF9wb3dlcl9kZXAoc211LCBmYWxzZSk7Ci0rCi0gCXJldHVybiAwOwotIH0KLSAKLWRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL3N3c211L2luYy9hbWRncHVfc211LmggYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3BtL3N3c211L2luYy9hbWRncHVfc211LmgKLWluZGV4IGQ3NmUw YjAwNTMwOC4uZTE0YmNjM2Y5MzdjIDEwMDY0NAotLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9w bS9zd3NtdS9pbmMvYW1kZ3B1X3NtdS5oCi0rKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL3N3 c211L2luYy9hbWRncHVfc211LmgKLUBAIC03NDksNiArNzQ5LDkgQEAgc3RydWN0IHNtdV9jb250 ZXh0IHsKLSAJYm9vbCBwbV9lbmFibGVkOwotIAlib29sIGlzX2FwdTsKLSAKLSsJLyogUG93ZXIg ZGVwZW5kZW5jeSBsaW5rIGZyb20gYW4gaW50ZWdyYXRlZCB4SENJIGNvbnRyb2xsZXIgdG8gdGhl IEdQVSAqLwotKwlzdHJ1Y3QgZGV2aWNlX2xpbmsJCSp1c2JfcG93ZXJfbGluazsKLSsKLSAJdWlu dDMyX3Qgc21jX2RyaXZlcl9pZl92ZXJzaW9uOwotIAl1aW50MzJfdCBzbWNfZndfaWZfdmVyc2lv bjsKLSAJdWludDMyX3Qgc21jX2Z3X3ZlcnNpb247Ci1AQCAtMTY1NCw2ICsxNjU3LDE0IEBAIHN0 cnVjdCBwcHRhYmxlX2Z1bmNzIHsKLSAJICogUmV0dXJuOiByYXNfc211X2RydiAqCi0gCSAqLwot IAlpbnQgKCpnZXRfcmFzX3NtdV9kcnYpKHN0cnVjdCBzbXVfY29udGV4dCAqc211LCBjb25zdCBz dHJ1Y3QgcmFzX3NtdV9kcnYgKipyYXNfc211X2Rydik7Ci0rCi0rCS8qKgotKwkgKiBAc2V0X3Bv d2VyX2RlcDogQ3JlYXRlIG9yIGRlc3Ryb3kgYSBwb3dlciBkZXBlbmRlbmN5IGxpbmsKLSsJICog ZnJvbSBhbiBpbnRlZ3JhdGVkIHhIQ0kgY29udHJvbGxlciB0byB0aGUgR1BVIHNvIHRoYXQgdGhl IEdQVSBpcwotKwkgKiByZXN1bWVkIGJlZm9yZSB0aGUgVVNCIGNvbnRyb2xsZXIgZHVyaW5nIFBN IHJlc3VtZS4gQGVuYWJsZSBpcyB0cnVlCi0rCSAqIHRvIGNyZWF0ZSB0aGUgbGluayBhbmQgZmFs c2UgdG8gdGVhciBpdCBkb3duLgotKwkgKi8KLSsJaW50ICgqc2V0X3Bvd2VyX2RlcCkoc3RydWN0 IHNtdV9jb250ZXh0ICpzbXUsIGJvb2wgZW5hYmxlKTsKLSB9OwotIAotIHR5cGVkZWYgZW51bSB7 Ci1kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9zd3NtdS9zbXUxNC9zbXVfdjE0 XzBfMF9wcHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG0vc3dzbXUvc211MTQvc211X3YxNF8w XzBfcHB0LmMKLWluZGV4IDc1NzE5YzQ3YTQxZS4uM2Q3M2YyMDUwYmJlIDEwMDY0NAotLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9zd3NtdS9zbXUxNC9zbXVfdjE0XzBfMF9wcHQuYwotKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9zd3NtdS9zbXUxNC9zbXVfdjE0XzBfMF9wcHQuYwot QEAgLTE3MDEsNiArMTcwMSw1MCBAQCBzdGF0aWMgaW50IHNtdV92MTRfMF8wX3Jlc3RvcmVfdXNl cl9vZF9zZXR0aW5ncyhzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSkKLSAJcmV0dXJuIDA7Ci0gfQot IAotKy8qCi0rICogTGluayBhbnkgeEhDSSBjb250cm9sbGVyIHNoYXJpbmcgdGhlIEdQVSdzIFBD SWUgcm9vdCBwb3J0IGFzIGEgY29uc3VtZXIKLSsgKiBvZiB0aGUgR1BVIHNvIHRoZSBHUFUgcmVz dW1lcyBmaXJzdCwgYXZvaWRpbmcgYW4geEhDSSByZXN1bWUgcmFjZS4KLSsgKi8KLStzdGF0aWMg aW50IHNtdV92MTRfMF8wX3NldF9wb3dlcl9kZXAoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsIGJv b2wgZW5hYmxlKQotK3sKLSsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBzbXUtPmFkZXY7 Ci0rCXN0cnVjdCBwY2lfZGV2ICpncHVfcGRldiA9IGFkZXYtPnBkZXY7Ci0rCXN0cnVjdCBwY2lf ZGV2ICpyb290X3BvcnQsICp1c2JfcGRldiA9IE5VTEw7Ci0rCXN0cnVjdCBkZXZpY2VfbGluayAq bGluazsKLSsKLSsJaWYgKCFlbmFibGUpIHsKLSsJCWlmIChzbXUtPnVzYl9wb3dlcl9saW5rKSB7 Ci0rCQkJZGV2aWNlX2xpbmtfZGVsKHNtdS0+dXNiX3Bvd2VyX2xpbmspOwotKwkJCXNtdS0+dXNi X3Bvd2VyX2xpbmsgPSBOVUxMOwotKwkJfQotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSsJcm9vdF9w b3J0ID0gcGNpZV9maW5kX3Jvb3RfcG9ydChncHVfcGRldik7Ci0rCXdoaWxlICgodXNiX3BkZXYg PSBwY2lfZ2V0X2NsYXNzKFBDSV9DTEFTU19TRVJJQUxfVVNCX1hIQ0ksIHVzYl9wZGV2KSkpIHsK LSsJCXN0cnVjdCBwY2lfZGV2ICp1c2Jfcm9vdDsKLSsKLSsJCXVzYl9yb290ID0gcGNpZV9maW5k X3Jvb3RfcG9ydCh1c2JfcGRldik7Ci0rCQlpZiAodXNiX3Jvb3QgIT0gcm9vdF9wb3J0KQotKwkJ CWNvbnRpbnVlOwotKwotKwkJLyogQ3JlYXRlIGRldmljZSBsaW5rOiBVU0IgKGNvbnN1bWVyKSBk ZXBlbmRzIG9uIEdQVSAoc3VwcGxpZXIpICovCi0rCQlsaW5rID0gZGV2aWNlX2xpbmtfYWRkKCZ1 c2JfcGRldi0+ZGV2LCAmZ3B1X3BkZXYtPmRldiwKLSsJCQkJICAgICAgIERMX0ZMQUdfU1RBVEVM RVNTIHwgRExfRkxBR19QTV9SVU5USU1FKTsKLSsJCWlmIChsaW5rKSB7Ci0rCQkJc211LT51c2Jf cG93ZXJfbGluayA9IGxpbms7Ci0rCQkJZHJtX2luZm8oYWRldl90b19kcm0oYWRldiksICJVU0Ig Y29udHJvbGxlciAlcyBEMCBwb3dlciBzdGF0ZSBkZXBlbmRzIG9uICVzXG4iLAotKwkJCQkgcGNp X25hbWUodXNiX3BkZXYpLCBwY2lfbmFtZShncHVfcGRldikpOwotKwkJCS8qIE9ubHkgY3JlYXRl IG9uZSBsaW5rIGZvciB0aGUgZmlyc3QgVVNCIGNvbnRyb2xsZXIgZm91bmQgKi8KLSsJCQlicmVh azsKLSsJCX0KLSsJfQotKwotKwlwY2lfZGV2X3B1dCh1c2JfcGRldik7Ci0rCi0rCXJldHVybiAw OwotK30KLSsKLSBzdGF0aWMgY29uc3Qgc3RydWN0IHBwdGFibGVfZnVuY3Mgc211X3YxNF8wXzBf cHB0X2Z1bmNzID0gewotIAkuY2hlY2tfZndfc3RhdHVzID0gc211X3YxNF8wX2NoZWNrX2Z3X3N0 YXR1cywKLSAJLmNoZWNrX2Z3X3ZlcnNpb24gPSBzbXVfY21uX2NoZWNrX2Z3X3ZlcnNpb24sCi1A QCAtMTczNCw2ICsxNzc4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwcHRhYmxlX2Z1bmNzIHNt dV92MTRfMF8wX3BwdF9mdW5jcyA9IHsKLSAJLmRwbV9zZXRfdW1zY2hfbW1fZW5hYmxlID0gc211 X3YxNF8wXzBfc2V0X3Vtc2NoX21tX2VuYWJsZSwKLSAJLmdldF9kcG1fY2xvY2tfdGFibGUgPSBz bXVfdjE0XzBfY29tbW9uX2dldF9kcG1fdGFibGUsCi0gCS5zZXRfbWFsbF9lbmFibGUgPSBzbXVf djE0XzBfY29tbW9uX3NldF9tYWxsX2VuYWJsZSwKLSsJLnNldF9wb3dlcl9kZXAgPSBzbXVfdjE0 XzBfMF9zZXRfcG93ZXJfZGVwLAotIH07Ci0gCi0gc3RhdGljIHZvaWQgc211X3YxNF8wXzBfaW5p dF9tc2dfY3RsKHN0cnVjdCBzbXVfY29udGV4dCAqc211KQotZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RkaS5jCi1pbmRleCBlYmVmYTg4OWJjOGMuLjA5ODdlZWUzOGJkMSAxMDA2 NDQKLS0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKLSsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKLUBAIC0yNjUyLDkgKzI2 NTIsNiBAQCBzdGF0aWMgdm9pZCBtdGxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUsCi0gCS8qIDMuIFNlbGVjdCBUaHVuZGVyYm9sdCAqLwotIAltdGxf cG9ydF9idWZfY3RsX2lvX3NlbGVjdGlvbihlbmNvZGVyKTsKLSAKLS0JLyogNC4gRW5hYmxlIFBh bmVsIFBvd2VyIGlmIFBQUyBpcyByZXF1aXJlZCAqLwotLQlpbnRlbF9wcHNfb24oaW50ZWxfZHAp OwotLQotIAkvKiA1LiBFbmFibGUgdGhlIHBvcnQgUExMICovCi0gCWludGVsX2RkaV9lbmFibGVf Y2xvY2soZW5jb2RlciwgY3J0Y19zdGF0ZSk7Ci0gCi1AQCAtMzcxMCw2ICszNzA3LDE0IEBAIGlu dGVsX2RkaV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwK LSAJZWxzZSBpZiAoZGlzcGxheS0+cGxhdGZvcm0uZ2VtaW5pbGFrZSB8fCBkaXNwbGF5LT5wbGF0 Zm9ybS5icm94dG9uKQotIAkJYnh0X2RwaW9fcGh5X3NldF9sYW5lX29wdGltX21hc2soZW5jb2Rl ciwKLSAJCQkJCQkgY3J0Y19zdGF0ZS0+bGFuZV9sYXRfb3B0aW1fbWFzayk7Ci0rCi0rCS8qCi0r CSAqIFRoZXJlIGlzIG5vIGRpcmVjdCBjb25uZWN0aW9uIGJldHdlZW4gdGhlIFBMTCBhbmQgUFBT LCBob3dldmVyCi0rCSAqIGVuYWJsaW5nIFBQUyBiZWZvcmUgUExMIGlzIHJlcXVpcmVkIHRvIGF2 b2lkIFBMTC9EREkgQlVGIHRpbWVvdXRzCi0rCSAqIGR1cmluZyBzeXN0ZW0gcmVzdW1lLiBEbyB0 aGF0IG1hdGNoaW5nIHRoZSBCc3BlYyBvcmRlciBhcyB3ZWxsLgotKwkgKi8KLSsJaWYgKERJU1BM QVlfVkVSKGRpc3BsYXkpID49IDE0KQotKwkJaW50ZWxfcHBzX29uKCZkaWdfcG9ydC0+ZHApOwot IH0KLSAKLSBzdGF0aWMgdm9pZCBhZGxwX3RidF90b19kcF9hbHRfc3dpdGNoX3dhKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQogZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL2Nv cmVzaWdodC9jb3Jlc2lnaHQtZXRtNHgtY29yZS5jIGIvZHJpdmVycy9od3RyYWNpbmcvY29yZXNp Z2h0L2NvcmVzaWdodC1ldG00eC1jb3JlLmMKIGluZGV4IGEyNTEzNzVkYjI0Yi4uMmI1MzM3ZWFl YjZkIDEwMDY0NAogLS0tIGEvZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC1l dG00eC1jb3JlLmMKQEAgLTI1MDIsMTcxICsyMzIwLDQzMTYgQEAgaW5kZXggZmM2NjA4ZTMzZGU0 Li44Y2ZhMzI4MmJmMDggMTAwNjQ0CiAgCXt9IC8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCiAgfTsK ICAKLWRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9xdWlya3MuYyBiL2RyaXZlcnMvcGNpL3F1aXJr cy5jCi1pbmRleCBkZDAwMjVkMzkxNGUuLmU1N2QxMGRjODQzYyAxMDA2NDQKLS0tLSBhL2RyaXZl cnMvcGNpL3F1aXJrcy5jCi0rKysgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwotQEAgLTQ0OTEsNiAr NDQ5MSwzMCBAQCBzdGF0aWMgdm9pZCBxdWlya19hc3BlZWRfcGNpX2JyaWRnZV9ub19hbGlhcyhz dHJ1Y3QgcGNpX2RldiAqcGRldikKLSB9Ci0gREVDTEFSRV9QQ0lfRklYVVBfSEVBREVSKFBDSV9W RU5ET1JfSURfQVNQRUVELCAweDExNTAsIHF1aXJrX2FzcGVlZF9wY2lfYnJpZGdlX25vX2FsaWFz KTsKLSAKK2RpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcKK2luZGV4IDNmMGI3YmI2OGNjOS4uMGIzM2U5Mjdi ZDU5IDEwMDY0NAorLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnCisrKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcKK0BAIC02Myw2ICs2Myw3IEBAIGNvbmZpZyBW SURFT19NVVgKKyAKKyAjIFBsYXRmb3JtIGRyaXZlcnMgLSBQbGVhc2Uga2VlcCBpdCBhbHBoYWJl dGljYWxseSBzb3J0ZWQKKyBzb3VyY2UgImRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYWxsZWdyby1k dnQvS2NvbmZpZyIKKytzb3VyY2UgImRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL0tjb25maWci Cisgc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvS2NvbmZpZyIKKyBzb3Vy Y2UgImRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1waGlvbi9LY29uZmlnIgorIHNvdXJjZSAiZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9hcm0vS2NvbmZpZyIKK2RpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZQor aW5kZXggNmQ1Zjc5ZGRmY2MzLi4xNmMxODU3NTI0NzQgMTAwNjQ0CistLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL01ha2VmaWxlCisrKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2Vm aWxlCitAQCAtNiw2ICs2LDcgQEAKKyAjIFBsYWNlIGhlcmUsIGFscGhhYmV0aWNhbGx5IHNvcnRl ZCBieSBkaXJlY3RvcnkKKyAjIChlLiBnLiBMQ19BTEw9QyBzb3J0IE1ha2VmaWxlKQorIG9iai15 ICs9IGFsbGVncm8tZHZ0LworK29iai15ICs9IGFtZC8KKyBvYmoteSArPSBhbWxvZ2ljLworIG9i ai15ICs9IGFtcGhpb24vCisgb2JqLXkgKz0gYXJtLworZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1kL0tjb25maWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9LY29u ZmlnCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAwLi4yNWFmNDlmMjQ2 YjIKKy0tLSAvZGV2L251bGwKKysrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL0tjb25m aWcKK0BAIC0wLDAgKzEsMyBAQAorKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAr CisrCisrc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L0tjb25maWciCitk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWQvTWFrZWZpbGUgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL2FtZC9NYWtlZmlsZQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwMDAwMC4uOGJmYzE5NTVmMjJlCistLS0gL2Rldi9udWxsCisrKysgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL2FtZC9NYWtlZmlsZQorQEAgLTAsMCArMSwzIEBACisrIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKysKKytvYmoteSArPSBpc3A0LworZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvS2NvbmZpZyBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1kL2lzcDQvS2NvbmZpZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwMDAwMC4uOWQxOTI3YWYxY2I4CistLS0gL2Rldi9udWxsCisrKysgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L0tjb25maWcKK0BAIC0wLDAgKzEsMTcgQEAKKysjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKworKworK2NvbmZpZyBWSURFT19BTURfSVNQ NF9DQVBUVVJFCisrCXRyaXN0YXRlICJBTUQgSVNQNCBhbmQgY2FtZXJhIGRyaXZlciIKKysJZGVw ZW5kcyBvbiBEUk1fQU1ER1BVICYmIERSTV9BTURfSVNQCisrCWRlcGVuZHMgb24gSEFTX0RNQQor KwlkZXBlbmRzIG9uIFZJREVPX0RFVgorKwlzZWxlY3QgVklERU9CVUYyX0NPUkUKKysJc2VsZWN0 IFZJREVPQlVGMl9NRU1PUFMKKysJc2VsZWN0IFZJREVPQlVGMl9WNEwyCisrCXNlbGVjdCBWSURF T0JVRjJfVk1BTExPQworKwlzZWxlY3QgVklERU9fVjRMMl9TVUJERVZfQVBJCisrCWhlbHAKKysJ ICBUaGlzIGlzIHN1cHBvcnQgZm9yIEFNRCBJU1A0IGFuZCBjYW1lcmEgc3Vic3lzdGVtIGRyaXZl ci4KKysJICBTYXkgWSBoZXJlIHRvIGVuYWJsZSB0aGUgSVNQNCBhbmQgY2FtZXJhIGRldmljZSBm b3IgdmlkZW8gY2FwdHVyZS4KKysJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxl LCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwKKysJICBiZSBjYWxsZWQgYW1kX2lzcDRf Y2FwdHVyZS4KK2RpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L01h a2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9NYWtlZmlsZQorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMC4uMzg0OTA2MmUxN2YzCistLS0gL2Rl di9udWxsCisrKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L01ha2VmaWxlCitA QCAtMCwwICsxLDEwIEBACisrIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKysj CisrIyBDb3B5cmlnaHQgKEMpIDIwMjUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorKwor K29iai0kKENPTkZJR19WSURFT19BTURfSVNQNF9DQVBUVVJFKSArPSBhbWRfaXNwNF9jYXB0dXJl Lm8KKythbWRfaXNwNF9jYXB0dXJlLW9ianMgOj0gaXNwNC5vIFwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgaXNwNF9kZWJ1Zy5vIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgaXNwNF9p bnRlcmZhY2UubyBcCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzcDRfc3ViZGV2Lm8gXAor KyAgICAgICAgICAgICAgICAgICAgICAgICBpc3A0X3ZpZGVvLm8KK2RpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDQuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vYW1kL2lzcDQvaXNwNC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAw MDAwLi5iZjZiOGUyNmMyYzAKKy0tLSAvZGV2L251bGwKKysrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1kL2lzcDQvaXNwNC5jCitAQCAtMCwwICsxLDI0MCBAQAorKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wKwogKy8qCi0rICogUENJIEJBUiA1IGlzIG5vdCBzZXR1cCBj b3JyZWN0bHkgZm9yIHRoZSBvbi1ib2FyZCBBSENJIGNvbnRyb2xsZXIKLSsgKiBvbiBCcm9hZGNv bSdzIFZ1bGNhbiBwcm9jZXNzb3IuIEFkZGVkIGEgcXVpcmsgdG8gZml4IEJBUiA1IGJ5Ci0rICog dXNpbmcgQkFSIDQncyByZXNvdXJjZXMgd2hpY2ggYXJlIHBvcHVsYXRlZCBjb3JyZWN0bHkgYW5k IE5PVAotKyAqIGFjdHVhbGx5IHVzZWQgYnkgdGhlIEFIQ0kgY29udHJvbGxlci4KKysgKiBDb3B5 cmlnaHQgKEMpIDIwMjUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgogKyAqLwotK3N0YXRp YyB2b2lkIHF1aXJrX2ZpeF92dWxjYW5fYWhjaV9iYXJzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCi0r ewotKwlzdHJ1Y3QgcmVzb3VyY2UgKnIgPSAgJmRldi0+cmVzb3VyY2VbNF07CiArCi0rCWlmICgh KHItPmZsYWdzICYgSU9SRVNPVVJDRV9NRU0pIHx8IChyLT5zdGFydCA9PSAwKSkKLSsJCXJldHVy bjsKKysjaW5jbHVkZSA8bGludXgvaXJxLmg+CisrI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUu aD4KKysjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgorKyNpbmNsdWRlIDxtZWRpYS92NGwyLWlv Y3RsLmg+CisrCisrI2luY2x1ZGUgImlzcDQuaCIKKysjaW5jbHVkZSAiaXNwNF9kZWJ1Zy5oIgor KyNpbmNsdWRlICJpc3A0X2h3X3JlZy5oIgorKworKyNkZWZpbmUgSVNQNF9EUlZfTkFNRSAiYW1k X2lzcF9jYXB0dXJlIgorKyNkZWZpbmUgSVNQNF9GV19SRVNQX1JCX0lSUV9TVEFUVVNfTUFTSyBc CisrCShJU1BfU1lTX0lOVDBfU1RBVFVTX19TWVNfSU5UX1JJTkdCVUZGRVJfV1BUOV9JTlRfTUFT SyAgfCBcCisrCSBJU1BfU1lTX0lOVDBfU1RBVFVTX19TWVNfSU5UX1JJTkdCVUZGRVJfV1BUMTJf SU5UX01BU0spCisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCB7CisrCWNvbnN0IGNoYXIgKm5hbWU7 CisrCXUzMiBzdGF0dXNfbWFzazsKKysJdTMyIGVuX21hc2s7CisrCXUzMiBhY2tfbWFzazsKKysJ dTMyIHJiX2ludF9udW07CisrfSBpc3A0X2lycVtJU1A0U0RfTUFYX0ZXX1JFU1BfU1RSRUFNX05V TV0gPSB7CisrCS8qIFRoZSBJUlEgb3JkZXIgaXMgYWxpZ25lZCB3aXRoIHRoZSBpc3A0X3N1YmRl di5md19yZXNwX3RocmVhZCBvcmRlciAqLworKwl7CisrCQkubmFtZSA9ICJpc3BfaXJxX2dsb2Jh bCIsCisrCQkuc3RhdHVzX21hc2sgPQorKwkJSVNQX1NZU19JTlQwX1NUQVRVU19fU1lTX0lOVF9S SU5HQlVGRkVSX1dQVDEyX0lOVF9NQVNLLAorKwkJLmVuX21hc2sgPSBJU1BfU1lTX0lOVDBfRU5f X1NZU19JTlRfUklOR0JVRkZFUl9XUFQxMl9FTl9NQVNLLAorKwkJLmFja19tYXNrID0gSVNQX1NZ U19JTlQwX0FDS19fU1lTX0lOVF9SSU5HQlVGRkVSX1dQVDEyX0FDS19NQVNLLAorKwkJLnJiX2lu dF9udW0gPSA0LCAvKiBJU1BfNF8xX19TUkNJRF9fSVNQX1JJTkdCVUZGRVJfV1BUMTIgKi8KKysJ fSwKKysJeworKwkJLm5hbWUgPSAiaXNwX2lycV9zdHJlYW0xIiwKKysJCS5zdGF0dXNfbWFzayA9 CisrCQlJU1BfU1lTX0lOVDBfU1RBVFVTX19TWVNfSU5UX1JJTkdCVUZGRVJfV1BUOV9JTlRfTUFT SywKKysJCS5lbl9tYXNrID0gSVNQX1NZU19JTlQwX0VOX19TWVNfSU5UX1JJTkdCVUZGRVJfV1BU OV9FTl9NQVNLLAorKwkJLmFja19tYXNrID0gSVNQX1NZU19JTlQwX0FDS19fU1lTX0lOVF9SSU5H QlVGRkVSX1dQVDlfQUNLX01BU0ssCisrCQkucmJfaW50X251bSA9IDAsIC8qIElTUF80XzFfX1NS Q0lEX19JU1BfUklOR0JVRkZFUl9XUFQ5ICovCisrCX0sCisrfTsKICsKLSsJLyogU2V0IEJBUjUg cmVzb3VyY2UgdG8gQkFSNCAqLwotKwlkZXYtPnJlc291cmNlWzVdID0gKnI7Cisrdm9pZCBpc3A0 X2ludHJfZW5hYmxlKHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwgdTMyIGluZGV4LCBi b29sIGVuYWJsZSkKKyt7CisrCXUzMiBpbnRyX2VuOworKworKwkvKiBTeW5jaHJvbml6ZSBJU1Bf U1lTX0lOVDBfRU4gd3JpdGVzIHdpdGggdGhlIElSUSBoYW5kbGVyJ3Mgd3JpdGVzICovCisrCXNw aW5fbG9ja19pcnEoJmlzcF9zdWJkZXYtPmlycV9sb2NrKTsKKysJaW50cl9lbiA9IGlzcDRod19y cmVnKGlzcF9zdWJkZXYtPm1taW8sIElTUF9TWVNfSU5UMF9FTik7CisrCWlmIChlbmFibGUpCisr CQlpbnRyX2VuIHw9IGlzcDRfaXJxW2luZGV4XS5lbl9tYXNrOworKwllbHNlCisrCQlpbnRyX2Vu ICY9IH5pc3A0X2lycVtpbmRleF0uZW5fbWFzazsKKysKKysJaXNwNGh3X3dyZWcoaXNwX3N1YmRl di0+bW1pbywgSVNQX1NZU19JTlQwX0VOLCBpbnRyX2VuKTsKKysJc3Bpbl91bmxvY2tfaXJxKCZp c3Bfc3ViZGV2LT5pcnFfbG9jayk7CisrfQogKwotKwkvKiBVcGRhdGUgQkFSNSBpbiBwY2kgY29u ZmlnIHNwYWNlICovCi0rCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBQQ0lfQkFTRV9BRERS RVNTXzUsIHItPnN0YXJ0KTsKKytzdGF0aWMgdm9pZCBpc3A0X3dha2VfdXBfcmVzcF90aHJlYWQo c3RydWN0IGlzcDRfc3ViZGV2ICppc3Bfc3ViZGV2LCB1MzIgaW5kZXgpCisreworKwlzdHJ1Y3Qg aXNwNHNkX3RocmVhZF9oYW5kbGVyICp0aHJlYWRfY3R4ID0KKysJCQkmaXNwX3N1YmRldi0+Zndf cmVzcF90aHJlYWRbaW5kZXhdOwogKwotKwkvKiBDbGVhciBCQVI0J3MgcmVzb3VyY2UgKi8KLSsJ bWVtc2V0KHIsIDAsIHNpemVvZigqcikpOworKwl0aHJlYWRfY3R4LT5yZXNwX3JlYWR5ID0gdHJ1 ZTsKKysJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZ0aHJlYWRfY3R4LT53YWl0cSk7CiArfQotK0RF Q0xBUkVfUENJX0ZJWFVQX0hFQURFUihQQ0lfVkVORE9SX0lEX0JST0FEQ09NLCAweDkwMjcsIHF1 aXJrX2ZpeF92dWxjYW5fYWhjaV9iYXJzKTsKICsKLSAvKgotICAqIEludGVyc2lsL1RlY2h3ZWxs IFRXNjg2WzQ1ODldLWJhc2VkIHZpZGVvIGNhcHR1cmUgY2FyZHMgaGF2ZSBhbiBlbXB0eSAoemVy bykKLSAgKiBjbGFzcyBjb2RlLiAgRml4IGl0LgotZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZv cm0veDg2L2ludGVsL2ludDM0NzIvZGlzY3JldGUuYyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L2lu dGVsL2ludDM0NzIvZGlzY3JldGUuYwotaW5kZXggMTE1YmIzNzU3N2ExLi5hZGZmNTY0YmYzZmQg MTAwNjQ0Ci0tLS0gYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9pbnQzNDcyL2Rpc2NyZXRl LmMKLSsrKyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2ludDM0NzIvZGlzY3JldGUuYwot QEAgLTE2NCw2ICsxNjQsMjQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnQzNDcyX2dwaW9fbWFw IGludDM0NzJfZ3Bpb19tYXBbXSA9IHsKLSAJCS5jb25faWQgPSAiZHZkZCIsCi0gCQkuZW5hYmxl X3RpbWVfdXMgPSA0NSAqIFVTRUNfUEVSX01TRUMsCi0gCX0sCi0rCXsJLyogaW14NDcxIGV4cGVj dHMgInZhbmEiIGFzIGNvbl9pZCBmb3IgcG93ZXIgZW5hYmxlICovCi0rCQkuaGlkID0gIlNPTlk0 NzFBIiwKLSsJCS50eXBlX2Zyb20gPSBJTlQzNDcyX0dQSU9fVFlQRV9QT1dFUl9FTkFCTEUsCi0r CQkudHlwZV90byA9IElOVDM0NzJfR1BJT19UWVBFX1BPV0VSX0VOQUJMRSwKLSsJCS5jb25faWQg PSAidmFuYSIsCi0rCQkuZW5hYmxlX3RpbWVfdXMgPSBHUElPX1JFR1VMQVRPUl9FTkFCTEVfVElN RSwKLSsJfSwKLSsJewotKwkJLyoKLSsJCSAqIGlteDQ3MSAob24gTGVub3ZvIFRoaW5rUGFkcyBY MSBHMTQpIGV4cGVjdHMgInZhbmEiIGFzIGNvbl9pZAotKwkJICogZm9yIHBvd2VyIGVuYWJsZQot KwkJICovCi0rCQkuaGlkID0gIlRCRTIwQTAiLAotKwkJLnR5cGVfZnJvbSA9IElOVDM0NzJfR1BJ T19UWVBFX1BPV0VSX0VOQUJMRSwKLSsJCS50eXBlX3RvID0gSU5UMzQ3Ml9HUElPX1RZUEVfUE9X RVJfRU5BQkxFLAotKwkJLmNvbl9pZCA9ICJ2YW5hIiwKLSsJCS5lbmFibGVfdGltZV91cyA9IEdQ SU9fUkVHVUxBVE9SX0VOQUJMRV9USU1FLAotKwl9LAotIH07Ci0gCi0gc3RhdGljIHZvaWQgaW50 MzQ3Ml9nZXRfY29uX2lkX2FuZF9wb2xhcml0eShzdHJ1Y3QgaW50MzQ3Ml9kaXNjcmV0ZV9kZXZp Y2UgKmludDM0NzIsIHU4ICp0eXBlLAotZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0veDg2 L2ludGVsL3VuY29yZS1mcmVxdWVuY3kvdW5jb3JlLWZyZXF1ZW5jeS1jb21tb24uYyBiL2RyaXZl cnMvcGxhdGZvcm0veDg2L2ludGVsL3VuY29yZS1mcmVxdWVuY3kvdW5jb3JlLWZyZXF1ZW5jeS1j b21tb24uYwotaW5kZXggNzA3MGM5NDMyNGUwLi5mODEzN2VlOTJlNDcgMTAwNjQ0Ci0tLS0gYS9k cml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC91bmNvcmUtZnJlcXVlbmN5L3VuY29yZS1mcmVxdWVu Y3ktY29tbW9uLmMKLSsrKyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3VuY29yZS1mcmVx dWVuY3kvdW5jb3JlLWZyZXF1ZW5jeS1jb21tb24uYwotQEAgLTI3NSwxNSArMjc1LDIwIEBAIGlu dCB1bmNvcmVfZnJlcV9hZGRfZW50cnkoc3RydWN0IHVuY29yZV9kYXRhICpkYXRhLCBpbnQgY3B1 KQotIAkJCSAgZGF0YS0+cGFja2FnZV9pZCwgZGF0YS0+ZGllX2lkKTsKLSAJfQotIAorK3N0YXRp YyBpcnFyZXR1cm5fdCBpc3A0X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKKyt7Cisr CXN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiA9IGFyZzsKKysJdTMyIGludHJfYWNrID0g MCwgaW50cl9lbiA9IDAsIGludHJfc3RhdHVzOworKwlpbnQgc2VlbiA9IDA7CisrCisrCS8qIEdl dCB0aGUgSVNQX1NZUyBpbnRlcnJ1cHQgc3RhdHVzICovCisrCWludHJfc3RhdHVzID0gaXNwNGh3 X3JyZWcoaXNwX3N1YmRldi0+bW1pbywgSVNQX1NZU19JTlQwX1NUQVRVUyk7CisrCWludHJfc3Rh dHVzICY9IElTUDRfRldfUkVTUF9SQl9JUlFfU1RBVFVTX01BU0s7CisrCisrCS8qIEZpbmQgd2hp Y2ggSVNQX1NZUyBpbnRlcnJ1cHRzIGZpcmVkICovCisrCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwg QVJSQVlfU0laRShpc3A0X2lycSk7IGkrKykgeworKwkJaWYgKGludHJfc3RhdHVzICYgaXNwNF9p cnFbaV0uc3RhdHVzX21hc2spIHsKKysJCQlpbnRyX2FjayB8PSBpc3A0X2lycVtpXS5hY2tfbWFz azsKKysJCQlpbnRyX2VuIHw9IGlzcDRfaXJxW2ldLmVuX21hc2s7CisrCQkJc2VlbiB8PSBCSVQo aSk7CisrCQl9CisrCX0KKysKICsJLyoKLSsJICogU2V0IHRoZSBjb250cm9sIENQVSBiZWZvcmUg YW55IHJlYWQgcGF0aCBzbyBlbnRyeSByZWNyZWF0aW9uIGFmdGVyIENQVQotKwkgKiBob3RwbHVn IGNhbiBwb3B1bGF0ZSByZWFkLW9ubHkgYXR0cmlidXRlcyBmcm9tIHRoZSBuZXcgb25saW5lIENQ VS4KKysJICogRGlzYWJsZSB0aGUgSVNQX1NZUyBpbnRlcnJ1cHRzIHRoYXQgZmlyZWQuIE11c3Qg YmUgZG9uZSBiZWZvcmUgd2FraW5nCisrCSAqIHRoZSByZXNwb25zZSB0aHJlYWRzLCBzaW5jZSB0 aGV5IHJlLWVuYWJsZSBpbnRlcnJ1cHRzIHdoZW4gZmluaXNoZWQuCisrCSAqIFRoZSBsb2NrIHN5 bmNocm9uaXplcyBSTVcgb2YgSU5UMF9FTiB3aXRoIGlzcDRfZW5hYmxlX2ludGVycnVwdCgpLgog KwkgKi8KLSsJZGF0YS0+Y29udHJvbF9jcHUgPSBjcHU7Ci0gCXVuY29yZV9yZWFkKGRhdGEsICZk YXRhLT5pbml0aWFsX21pbl9mcmVxX2toeiwgVU5DT1JFX0lOREVYX01JTl9GUkVRKTsKLSAJdW5j b3JlX3JlYWQoZGF0YSwgJmRhdGEtPmluaXRpYWxfbWF4X2ZyZXFfa2h6LCBVTkNPUkVfSU5ERVhf TUFYX0ZSRVEpOwotIAotIAlyZXQgPSBjcmVhdGVfYXR0cl9ncm91cChkYXRhLCBkYXRhLT5uYW1l KTsKLSAJaWYgKHJldCkgewotKwkJZGF0YS0+Y29udHJvbF9jcHUgPSAtMTsKLSAJCWlmIChkYXRh LT5kb21haW5faWQgIT0gVU5DT1JFX0RPTUFJTl9JRF9JTlZBTElEKQotIAkJCWlkYV9mcmVlKCZp bnRlbF91bmNvcmVfaWRhLCBkYXRhLT5pbnN0YW5jZV9pZCk7Ci0gCX0gZWxzZSB7Ci0tCQlkYXRh LT5jb250cm9sX2NwdSA9IGNwdTsKLSAJCWRhdGEtPnZhbGlkID0gdHJ1ZTsKLSAJfQotIAotZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5j Ci1pbmRleCAyNDk2MGJhOWNhYTkuLjMyNTk3Y2RiNzJlZiAxMDA2NDQKLS0tLSBhL2RyaXZlcnMv dXNiL2NvcmUvaHViLmMKLSsrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKLUBAIC01ODk0LDYg KzU4OTQsMTMgQEAgc3RhdGljIHZvaWQgaHViX2V2ZW50KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKLSAJCQkodTE2KSBodWItPmNoYW5nZV9iaXRzWzBdLAotIAkJCSh1MTYpIGh1Yi0+ZXZlbnRf Yml0c1swXSk7Ci0gCi0rCS8qIERvbid0IGRpc2Nvbm5lY3QgVVNCLVNBVEEgb24gVHJpbVNsaWNl ICovCi0rCWlmIChzdHJjbXAoZGV2X25hbWUoaGRldi0+YnVzLT5jb250cm9sbGVyKSwgInRlZ3Jh LWVoY2kuMCIpID09IDApIHsKLSsJCWlmICgoaGRldi0+c3RhdGUgPT0gNykgJiYgKGh1Yi0+Y2hh bmdlX2JpdHNbMF0gPT0gMCkgJiYKLSsJCQkJKGh1Yi0+ZXZlbnRfYml0c1swXSA9PSAweDIpKQot KwkJCWh1Yi0+ZXZlbnRfYml0c1swXSA9IDA7Ci0rCX0KKysJc3Bpbl9sb2NrKCZpc3Bfc3ViZGV2 LT5pcnFfbG9jayk7CisrCWludHJfZW4gPSBpc3A0aHdfcnJlZyhpc3Bfc3ViZGV2LT5tbWlvLCBJ U1BfU1lTX0lOVDBfRU4pICYgfmludHJfZW47CisrCWlzcDRod193cmVnKGlzcF9zdWJkZXYtPm1t aW8sIElTUF9TWVNfSU5UMF9FTiwgaW50cl9lbik7CisrCXNwaW5fdW5sb2NrKCZpc3Bfc3ViZGV2 LT5pcnFfbG9jayk7CiArCi0gCS8qIExvY2sgdGhlIGRldmljZSwgdGhlbiBjaGVjayB0byBzZWUg aWYgd2Ugd2VyZQotIAkgKiBkaXNjb25uZWN0ZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIGxvY2sg dG8gc3VjY2VlZC4gKi8KLSAJdXNiX2xvY2tfZGV2aWNlKGhkZXYpOwotZGlmZiAtLWdpdCBhL2Zz L3hmcy9saWJ4ZnMveGZzX2V4Y2htYXBzLmMgYi9mcy94ZnMvbGlieGZzL3hmc19leGNobWFwcy5j Ci1pbmRleCA1NDFlMzNmMzMxNjcuLjdmYjI4YzhhZmVmOCAxMDA2NDQKLS0tLSBhL2ZzL3hmcy9s aWJ4ZnMveGZzX2V4Y2htYXBzLmMKLSsrKyBiL2ZzL3hmcy9saWJ4ZnMveGZzX2V4Y2htYXBzLmMK LUBAIC05NTksNiArOTU5LDE2IEBAIHhtaV9jYW5fZXhjaGFuZ2VfcmVmbGlua19mbGFncygKLSB7 Ci0gCXN0cnVjdCB4ZnNfbW91bnQJCSptcCA9IHJlcS0+aXAxLT5pX21vdW50OwotIAogKwkvKgot KwkgKiBUaGUgSU5PMV9XUklUVEVOIG9wdGltaXphdGlvbiBjYW4gc2tpcCBleGNoYW5naW5nIGhv bGUgYW5kCi0rCSAqIHVud3JpdHRlbiBtYXBwaW5ncywgd2hpY2ggbWVhbnMgd2UgY2Fubm90IGd1 YXJhbnRlZSB0aGF0IGFsbAotKwkgKiBzaGFyZWQgZXh0ZW50cyBhY3R1YWxseSBtb3ZlZCB0byB0 aGUgb3RoZXIgZmlsZS4gIENsZWFyaW5nIHRoZQotKwkgKiByZWZsaW5rIGZsYWcgb2YgYW4gaW5v ZGUgdGhhdCBzdGlsbCBob2xkcyBzaGFyZWQgZXh0ZW50cyBicmVha3MKLSsJICogdGhlIENvVyB3 cml0ZSBwYXRoLCBzbyByZWZ1c2UgdG8gZXhjaGFuZ2UgdGhlIGZsYWdzIGluIHRoYXQgY2FzZS4K KysJICogQ2xlYXIgdGhlIElTUF9TWVMgaW50ZXJydXB0cy4gVGhpcyBtdXN0IGJlIGRvbmUgYWZ0 ZXIgdGhlIGludGVycnVwdHMKKysJICogYXJlIGRpc2FibGVkLCBzbyB0aGF0IElTUCBGVyB3b24n dCBmbGFnIGFueSBuZXcgaW50ZXJydXB0cyBvbiB0aGVzZQorKwkgKiBzdHJlYW1zLCBhbmQgdGh1 cyB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGludGVycnVwdHMgYWdhaW4gYmVmb3JlCisrCSAqIHJl LWVuYWJsaW5nIHRoZW0gaW4gdGhlIHJlc3BvbnNlIHRocmVhZC4KICsJICovCi0rCWlmIChyZXEt PmZsYWdzICYgWEZTX0VYQ0hNQVBTX0lOTzFfV1JJVFRFTikKLSsJCXJldHVybiBmYWxzZTsKKysJ aXNwNGh3X3dyZWcoaXNwX3N1YmRldi0+bW1pbywgSVNQX1NZU19JTlQwX0FDSywgaW50cl9hY2sp OwogKwotIAlpZiAoaHdlaWdodDMyKHJlZmxpbmtfc3RhdGUpICE9IDEpCi0gCQlyZXR1cm4gZmFs c2U7Ci0gCWlmIChyZXEtPnN0YXJ0b2ZmMSAhPSAwIHx8IHJlcS0+c3RhcnRvZmYyICE9IDApCi1k aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcnlwdG8uaCBiL2luY2x1ZGUvbGludXgvY3J5cHRv LmgKLWluZGV4IGEyMTM3ZTE5YmU3ZC4uNzljY2I2ZmFiYzEwIDEwMDY0NAotLS0tIGEvaW5jbHVk ZS9saW51eC9jcnlwdG8uaAotKysrIGIvaW5jbHVkZS9saW51eC9jcnlwdG8uaAotQEAgLTE1Miw2 ICsxNTIsOCBAQAotICNkZWZpbmUgQ1JZUFRPX1RGTV9SRVFfTUFZX0JBQ0tMT0cJMHgwMDAwMDQw MAotICNkZWZpbmUgQ1JZUFRPX1RGTV9SRVFfT05fU1RBQ0sJCTB4MDAwMDA4MDAKLSAKLSsjZGVm aW5lIENSWVBUT19URk1fRklQU19DT01QTElBTkNFCTB4ODAwMDAwMDAKKysJLyoKKysJICogVGhl IG9wZXJhdGlvbiBgKHNlZW4gPj4gaSkgPDwgaWAgaXMgbG9naWNhbGx5IGVxdWl2YWxlbnQgdG8K KysJICogYHNlZW4gJj0gfkJJVChpKWAsIHdpdGggZmV3ZXIgaW5zdHJ1Y3Rpb25zIGFmdGVyIGNv bXBpbGF0aW9uLgorKwkgKi8KKysJZm9yIChpbnQgaTsgKGkgPSBmZnMoc2VlbikpOyBzZWVuID0g KHNlZW4gPj4gaSkgPDwgaSkKKysJCWlzcDRfd2FrZV91cF9yZXNwX3RocmVhZChpc3Bfc3ViZGV2 LCBpIC0gMSk7CiArCi0gLyoKLSAgKiBNaXNjZWxsYW5lb3VzIHN0dWZmLgotICAqLwotZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvZWZpLmggYi9pbmNsdWRlL2xpbnV4L2VmaS5oCi1pbmRleCBj Y2JjMzU0Nzk2ODQuLjhlYjlhMTI3NmJhNyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGludXgvZWZp LmgKLSsrKyBiL2luY2x1ZGUvbGludXgvZWZpLmgKLUBAIC00NSw2ICs0NSw4IEBAIHN0cnVjdCBz Y3JlZW5faW5mbzsKLSAjZGVmaW5lIEVGSV9BQk9SVEVECQkoMjEgfCAoMVVMIDw8IChCSVRTX1BF Ul9MT05HLTEpKSkKLSAjZGVmaW5lIEVGSV9TRUNVUklUWV9WSU9MQVRJT04JKDI2IHwgKDFVTCA8 PCAoQklUU19QRVJfTE9ORy0xKSkpCi0gCi0rI2RlZmluZSBFRklfSVNfRVJST1IoeCkJCSgoeCkg JiAoMVVMIDw8IChCSVRTX1BFUl9MT05HLTEpKSkKKysJcmV0dXJuIElSUV9IQU5ETEVEOworK30K ICsKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWZpX3N0YXR1c190OwotIHR5cGVkZWYgdTggZWZp X2Jvb2xfdDsKLSB0eXBlZGVmIHUxNiBlZmlfY2hhcjE2X3Q7CQkvKiBVTklDT0RFIGNoYXJhY3Rl ciAqLwotQEAgLTg0Nyw2ICs4NDksMTQgQEAgZXh0ZXJuIGludCBfX2luaXQgcGFyc2VfZWZpX3Np Z25hdHVyZV9saXN0KAotICNkZWZpbmUgRUZJX01FTV9BVFRSCQk5CS8qIERpZCBmaXJtd2FyZSBw dWJsaXNoIGFuIEVGSV9NRU1PUllfQVRUUklCVVRFUyB0YWJsZT8gKi8KLSAjZGVmaW5lIEVGSV9N RU1fTk9fU09GVF9SRVNFUlZFCTEwCS8qIElzIHRoZSBrZXJuZWwgY29uZmlndXJlZCB0byBpZ25v cmUgc29mdCByZXNlcnZhdGlvbnM/ICovCi0gI2RlZmluZSBFRklfUFJFU0VSVkVfQlNfUkVHSU9O UwkxMQkvKiBBcmUgRUZJIGJvb3Qtc2VydmljZXMgbWVtb3J5IHNlZ21lbnRzIGF2YWlsYWJsZT8g Ki8KLSsjZGVmaW5lIEVGSV9TRUNVUkVfQk9PVAkJMTIJLyogQXJlIHdlIGluIFNlY3VyZSBCb290 IG1vZGU/ICovCisrc3RhdGljIGludCBpc3A0X2NhcHR1cmVfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKKyt7CisrCWludCBpcnFbSVNQNFNEX01BWF9GV19SRVNQX1NUUkVBTV9O VU1dOworKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworKwlzdHJ1Y3QgaXNwNF9z dWJkZXYgKmlzcF9zdWJkZXY7CisrCXN0cnVjdCBpc3A0X2RldmljZSAqaXNwX2RldjsKKysJaW50 IHJldDsKICsKLStlbnVtIGVmaV9zZWN1cmVib290X21vZGUgewotKwllZmlfc2VjdXJlYm9vdF9t b2RlX3Vuc2V0LAotKwllZmlfc2VjdXJlYm9vdF9tb2RlX3Vua25vd24sCi0rCWVmaV9zZWN1cmVi b290X21vZGVfZGlzYWJsZWQsCisrCWlzcF9kZXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yo KmlzcF9kZXYpLCBHRlBfS0VSTkVMKTsKKysJaWYgKCFpc3BfZGV2KQorKwkJcmV0dXJuIC1FTk9N RU07CisrCisrCWRldi0+aW5pdF9uYW1lID0gSVNQNF9EUlZfTkFNRTsKKysKKysJaXNwX3N1YmRl diA9ICZpc3BfZGV2LT5pc3Bfc3ViZGV2OworKwlpc3Bfc3ViZGV2LT5tbWlvID0gZGV2bV9wbGF0 Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOworKwlpZiAoSVNfRVJSKGlzcF9zdWJkZXYt Pm1taW8pKQorKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGlzcF9zdWJkZXYt Pm1taW8pLAorKwkJCQkgICAgICJpc3AgaW9yZW1hcCBmYWlsXG4iKTsKKysKKysJZm9yIChzaXpl X3QgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGlzcDRfaXJxKTsgaSsrKSB7CisrCQlpcnFbaV0gPSBw bGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGlzcDRfaXJxW2ldLnJiX2ludF9udW0pOworKwkJaWYgKGly cVtpXSA8IDApCisrCQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBpcnFbaV0sCisrCQkJCQkg ICAgICJmYWlsIHRvIGdldCBpcnEgJWRcbiIsCisrCQkJCQkgICAgIGlzcDRfaXJxW2ldLnJiX2lu dF9udW0pOworKworKwkJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIGlycVtpXSwgaXNwNF9p cnFfaGFuZGxlciwKKysJCQkJICAgICAgIElSUUZfTk9fQVVUT0VOLCBpc3A0X2lycVtpXS5uYW1l LAorKwkJCQkgICAgICAgaXNwX3N1YmRldik7CisrCQlpZiAocmV0KQorKwkJCXJldHVybiBkZXZf ZXJyX3Byb2JlKGRldiwgcmV0LCAiZmFpbCB0byByZXEgaXJxICVkXG4iLAorKwkJCQkJICAgICBp cnFbaV0pOworKwl9CisrCisrCWlzcF9kZXYtPnY0bDJfZGV2Lm1kZXYgPSAmaXNwX2Rldi0+bWRl djsKKysKKysJc3Ryc2NweShpc3BfZGV2LT5tZGV2Lm1vZGVsLCAiYW1kX2lzcDQxX21kZXYiLAor KwkJc2l6ZW9mKGlzcF9kZXYtPm1kZXYubW9kZWwpKTsKKysJaXNwX2Rldi0+bWRldi5kZXYgPSBk ZXY7CisrCW1lZGlhX2RldmljZV9pbml0KCZpc3BfZGV2LT5tZGV2KTsKKysKKysJc25wcmludGYo aXNwX2Rldi0+djRsMl9kZXYubmFtZSwgc2l6ZW9mKGlzcF9kZXYtPnY0bDJfZGV2Lm5hbWUpLAor KwkJICJBTUQtVjRMMi1ST09UIik7CisrCXJldCA9IHY0bDJfZGV2aWNlX3JlZ2lzdGVyKGRldiwg JmlzcF9kZXYtPnY0bDJfZGV2KTsKKysJaWYgKHJldCkgeworKwkJZGV2X2Vycl9wcm9iZShkZXYs IHJldCwgImZhaWwgcmVnaXN0ZXIgdjRsMiBkZXZpY2VcbiIpOworKwkJZ290byBlcnJfY2xlYW5f bWVkaWE7CisrCX0KKysKKysJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7CisrCXBtX3J1 bnRpbWVfZW5hYmxlKGRldik7CisrCXNwaW5fbG9ja19pbml0KCZpc3Bfc3ViZGV2LT5pcnFfbG9j ayk7CisrCXJldCA9IGlzcDRzZF9pbml0KCZpc3BfZGV2LT5pc3Bfc3ViZGV2LCAmaXNwX2Rldi0+ djRsMl9kZXYsIGlycSk7CisrCWlmIChyZXQpIHsKKysJCWRldl9lcnJfcHJvYmUoZGV2LCByZXQs ICJmYWlsIGluaXQgaXNwNCBzdWIgZGV2XG4iKTsKKysJCWdvdG8gZXJyX3BtX2Rpc2FibGU7Cisr CX0KKysKKysJcmV0ID0gbWVkaWFfY3JlYXRlX3BhZF9saW5rKCZpc3BfZGV2LT5pc3Bfc3ViZGV2 LnNkZXYuZW50aXR5LAorKwkJCQkgICAgMCwKKysJCQkJICAgICZpc3BfZGV2LT5pc3Bfc3ViZGV2 LmlzcF92ZGV2LnZkZXYuZW50aXR5LAorKwkJCQkgICAgMCwKKysJCQkJICAgIE1FRElBX0xOS19G TF9FTkFCTEVEIHwKKysJCQkJICAgIE1FRElBX0xOS19GTF9JTU1VVEFCTEUpOworKwlpZiAocmV0 KSB7CisrCQlkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiZmFpbCB0byBjcmVhdGUgcGFkIGxpbmtc biIpOworKwkJZ290byBlcnJfaXNwNF9kZWluaXQ7CisrCX0KKysKKysJcmV0ID0gbWVkaWFfZGV2 aWNlX3JlZ2lzdGVyKCZpc3BfZGV2LT5tZGV2KTsKKysJaWYgKHJldCkgeworKwkJZGV2X2Vycl9w cm9iZShkZXYsIHJldCwgImZhaWwgdG8gcmVnaXN0ZXIgbWVkaWEgZGV2aWNlXG4iKTsKKysJCWdv dG8gZXJyX2lzcDRfZGVpbml0OworKwl9CisrCisrCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IGlzcF9kZXYpOworKwlpc3BfZGVidWdmc19jcmVhdGUoaXNwX2Rldik7CisrCisrCXJldHVybiAw OworKworK2Vycl9pc3A0X2RlaW5pdDoKKysJaXNwNHNkX2RlaW5pdCgmaXNwX2Rldi0+aXNwX3N1 YmRldik7CisrZXJyX3BtX2Rpc2FibGU6CisrCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOworKwl2 NGwyX2RldmljZV91bnJlZ2lzdGVyKCZpc3BfZGV2LT52NGwyX2Rldik7CisrZXJyX2NsZWFuX21l ZGlhOgorKwltZWRpYV9kZXZpY2VfY2xlYW51cCgmaXNwX2Rldi0+bWRldik7CisrCisrCXJldHVy biByZXQ7CisrfQorKworK3N0YXRpYyB2b2lkIGlzcDRfY2FwdHVyZV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKKyt7CisrCXN0cnVjdCBpc3A0X2RldmljZSAqaXNwX2RldiA9 IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRl di0+ZGV2OworKworKwlpc3BfZGVidWdmc19yZW1vdmUoaXNwX2Rldik7CisrCisrCW1lZGlhX2Rl dmljZV91bnJlZ2lzdGVyKCZpc3BfZGV2LT5tZGV2KTsKKysJaXNwNHNkX2RlaW5pdCgmaXNwX2Rl di0+aXNwX3N1YmRldik7CisrCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOworKwl2NGwyX2Rldmlj ZV91bnJlZ2lzdGVyKCZpc3BfZGV2LT52NGwyX2Rldik7CisrCW1lZGlhX2RldmljZV9jbGVhbnVw KCZpc3BfZGV2LT5tZGV2KTsKKyt9CisrCisrc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg aXNwNF9jYXB0dXJlX2RydiA9IHsKKysJLnByb2JlID0gaXNwNF9jYXB0dXJlX3Byb2JlLAorKwku cmVtb3ZlID0gaXNwNF9jYXB0dXJlX3JlbW92ZSwKKysJLmRyaXZlciA9IHsKKysJCS5uYW1lID0g SVNQNF9EUlZfTkFNRSwKKysJfQorK307CisrCisrbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpc3A0 X2NhcHR1cmVfZHJ2KTsKKysKKytNT0RVTEVfQUxJQVMoInBsYXRmb3JtOiIgSVNQNF9EUlZfTkFN RSk7CisrTU9EVUxFX0lNUE9SVF9OUygiRE1BX0JVRiIpOworKworK01PRFVMRV9ERVNDUklQVElP TigiQU1EIElTUDQgRHJpdmVyIik7CisrTU9EVUxFX0FVVEhPUigiQmluIER1IDxiaW4uZHVAYW1k LmNvbT4iKTsKKytNT0RVTEVfQVVUSE9SKCJQcmF0YXAgTmlydWpvZ2kgPHByYXRhcC5uaXJ1am9n aUBhbWQuY29tPiIpOworK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK2RpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDQuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vYW1kL2lzcDQvaXNwNC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAw MDAwLi4yZGI2NjgzZDZkOGIKKy0tLSAvZGV2L251bGwKKysrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1kL2lzcDQvaXNwNC5oCitAQCAtMCwwICsxLDIwIEBACisrLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjArICovCisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjUgQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorKyAqLworKworKyNpZm5kZWYgX0lTUDRfSF8KKysj ZGVmaW5lIF9JU1A0X0hfCisrCisrI2luY2x1ZGUgPGRybS9hbWQvaXNwLmg+CisrI2luY2x1ZGUg ImlzcDRfc3ViZGV2LmgiCisrCisrc3RydWN0IGlzcDRfZGV2aWNlIHsKKysJc3RydWN0IHY0bDJf ZGV2aWNlIHY0bDJfZGV2OworKwlzdHJ1Y3QgaXNwNF9zdWJkZXYgaXNwX3N1YmRldjsKKysJc3Ry dWN0IG1lZGlhX2RldmljZSBtZGV2OworK307CisrCisrdm9pZCBpc3A0X2ludHJfZW5hYmxlKHN0 cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwgdTMyIGluZGV4LCBib29sIGVuYWJsZSk7Cisr CisrI2VuZGlmIC8qIF9JU1A0X0hfICovCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbWQvaXNwNC9pc3A0X2RlYnVnLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9p c3A0L2lzcDRfZGVidWcuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAw MC4uMmZjMDBmYzlhMTk0CistLS0gL2Rldi9udWxsCisrKysgYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL2FtZC9pc3A0L2lzcDRfZGVidWcuYworQEAgLTAsMCArMSwyNzEgQEAKKysvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAyNSBB ZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisrICovCisrCisrI2luY2x1ZGUgImlzcDQuaCIK KysjaW5jbHVkZSAiaXNwNF9kZWJ1Zy5oIgorKyNpbmNsdWRlICJpc3A0X2h3X3JlZy5oIgorKyNp bmNsdWRlICJpc3A0X2ludGVyZmFjZS5oIgorKworKyNkZWZpbmUgSVNQNERCR19GV19MT0dfUklO R0JVRl9TSVpFICgyICogMTAyNCAqIDEwMjQpCisrI2RlZmluZSBJU1A0REJHX01BQ1JPXzJfU1RS KFgpICNYCisrI2RlZmluZSBJU1A0REJHX09ORV9USU1FX0xPR19MRU4gNTEwCisrCisrI2lmZGVm IENPTkZJR19ERUJVR19GUworKworK3ZvaWQgaXNwX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBpc3A0 X2RldmljZSAqaXNwX2RldikKKyt7CisrCWlzcF9kZXYtPmlzcF9zdWJkZXYuZGVidWdmc19kaXIg PSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoImFtZF9pc3A0IiwgTlVMTCk7CisrCWRlYnVnZnNfY3JlYXRl X2Jvb2woImZ3X2xvZ19lbmFibGUiLCAwNjQ0LAorKwkJCSAgICBpc3BfZGV2LT5pc3Bfc3ViZGV2 LmRlYnVnZnNfZGlyLAorKwkJCSAgICAmaXNwX2Rldi0+aXNwX3N1YmRldi5lbmFibGVfZndfbG9n KTsKKysJaXNwX2Rldi0+aXNwX3N1YmRldi5md19sb2dfb3V0cHV0ID0KKysJCWRldm1fa3phbGxv Yyhpc3BfZGV2LT5pc3Bfc3ViZGV2LmRldiwKKysJCQkgICAgIElTUDREQkdfRldfTE9HX1JJTkdC VUZfU0laRSArIDMyLAorKwkJCSAgICAgR0ZQX0tFUk5FTCk7CisrfQorKworK3ZvaWQgaXNwX2Rl YnVnZnNfcmVtb3ZlKHN0cnVjdCBpc3A0X2RldmljZSAqaXNwX2RldikKKyt7CisrCWRlYnVnZnNf cmVtb3ZlX3JlY3Vyc2l2ZShpc3BfZGV2LT5pc3Bfc3ViZGV2LmRlYnVnZnNfZGlyKTsKKysJaXNw X2Rldi0+aXNwX3N1YmRldi5kZWJ1Z2ZzX2RpciA9IE5VTEw7CisrfQorKworK3N0YXRpYyB1MzIg aXNwX2Z3X2ZpbGxfcmJfbG9nKHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwLCB2b2lkICpzeXMsIHUz MiByYl9zaXplKQorK3sKKysJc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiA9ICZpc3AtPmlz cGlmOworKwljaGFyICpidWYgPSBpc3AtPmZ3X2xvZ19vdXRwdXQ7CisrCXN0cnVjdCBkZXZpY2Ug KmRldiA9IGlzcC0+ZGV2OworKwl1MzIgcmRfcHRyLCB3cl9wdHI7CisrCXUzMiB0b3RhbF9jbnQg PSAwOworKwl1MzIgb2Zmc2V0ID0gMDsKKysJdTMyIGNudDsKKysKKysJaWYgKCFzeXMgfHwgIXJi X3NpemUpCisrCQlyZXR1cm4gMDsKKysKKysJZ3VhcmQobXV0ZXgpKCZpc3BpZi0+aXNwNGlmX211 dGV4KTsKKysKKysJcmRfcHRyID0gaXNwNGh3X3JyZWcoaXNwLT5tbWlvLCBJU1BfTE9HX1JCX1JQ VFIwKTsKKysJd3JfcHRyID0gaXNwNGh3X3JyZWcoaXNwLT5tbWlvLCBJU1BfTE9HX1JCX1dQVFIw KTsKKysKKysJZG8geworKwkJaWYgKHdyX3B0ciA+IHJkX3B0cikKKysJCQljbnQgPSB3cl9wdHIg LSByZF9wdHI7CisrCQllbHNlIGlmICh3cl9wdHIgPCByZF9wdHIpCisrCQkJY250ID0gcmJfc2l6 ZSAtIHJkX3B0cjsKKysJCWVsc2UKKysJCQlnb3RvIHF1aXQ7CisrCisrCQlpZiAoY250ID4gcmJf c2l6ZSkgeworKwkJCWRldl9lcnIoZGV2LCAiZmFpbCBiYWQgZncgbG9nIHNpemUgJXVcbiIsIGNu dCk7CisrCQkJZ290byBxdWl0OworKwkJfQorKworKwkJbWVtY3B5KGJ1ZiArIG9mZnNldCwgc3lz ICsgcmRfcHRyLCBjbnQpOworKworKwkJb2Zmc2V0ICs9IGNudDsKKysJCXRvdGFsX2NudCArPSBj bnQ7CisrCQlyZF9wdHIgPSAocmRfcHRyICsgY250KSAlIHJiX3NpemU7CisrCX0gd2hpbGUgKHJk X3B0ciA8IHdyX3B0cik7CisrCisrCWlzcDRod193cmVnKGlzcC0+bW1pbywgSVNQX0xPR19SQl9S UFRSMCwgcmRfcHRyKTsKKysKKytxdWl0OgorKwlyZXR1cm4gdG90YWxfY250OworK30KKysKKyt2 b2lkIGlzcF9md19sb2dfcHJpbnQoc3RydWN0IGlzcDRfc3ViZGV2ICppc3ApCisreworKwlzdHJ1 Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmID0gJmlzcC0+aXNwaWY7CisrCWNoYXIgKmZ3X2xvZ19i dWYgPSBpc3AtPmZ3X2xvZ19vdXRwdXQ7CisrCXUzMiBjbnQ7CisrCisrCWlmICghaXNwLT5lbmFi bGVfZndfbG9nIHx8ICFmd19sb2dfYnVmKQorKwkJcmV0dXJuOworKworKwljbnQgPSBpc3BfZndf ZmlsbF9yYl9sb2coaXNwLCBpc3BpZi0+ZndfbG9nX2J1Zi0+c3lzX2FkZHIsCisrCQkJCSBpc3Bp Zi0+ZndfbG9nX2J1Zi0+bWVtX3NpemUpOworKworKwlpZiAoY250KSB7CisrCQljaGFyIHRlbXBf Y2g7CisrCQljaGFyICpzdHI7CisrCQljaGFyICplbmQ7CisrCQkvKiBsaW5lIGVuZCAqLworKwkJ Y2hhciAqbGU7CisrCisrCQlzdHIgPSAoY2hhciAqKWZ3X2xvZ19idWY7CisrCQllbmQgPSAoKGNo YXIgKilmd19sb2dfYnVmICsgY250KTsKKysJCWZ3X2xvZ19idWZbY250XSA9IDA7CisrCisrCQl3 aGlsZSAoc3RyIDwgZW5kKSB7CisrCQkJbGUgPSBzdHJjaHIoc3RyLCAweDBBKTsKKysJCQlpZiAo KGxlICYmIHN0ciArIElTUDREQkdfT05FX1RJTUVfTE9HX0xFTiA+PSBsZSkgfHwKKysJCQkgICAg KCFsZSAmJiBzdHIgKyBJU1A0REJHX09ORV9USU1FX0xPR19MRU4gPj0gZW5kKSkgeworKwkJCQlp ZiAobGUpCisrCQkJCQkqbGUgPSAwOworKworKwkJCQlpZiAoKnN0ciAhPSAnXDAnKQorKwkJCQkJ ZGV2X2RiZyhpc3AtPmRldiwgIiVzIiwgc3RyKTsKKysKKysJCQkJaWYgKGxlKSB7CisrCQkJCQkq bGUgPSAweDBBOworKwkJCQkJc3RyID0gbGUgKyAxOworKwkJCQl9IGVsc2UgeworKwkJCQkJYnJl YWs7CisrCQkJCX0KKysJCQl9IGVsc2UgeworKwkJCQl1MzIgdG1wX2xlbiA9IElTUDREQkdfT05F X1RJTUVfTE9HX0xFTjsKKysKKysJCQkJdGVtcF9jaCA9IHN0clt0bXBfbGVuXTsKKysJCQkJc3Ry W3RtcF9sZW5dID0gMDsKKysJCQkJZGV2X2RiZyhpc3AtPmRldiwgIiVzIiwgc3RyKTsKKysJCQkJ c3RyW3RtcF9sZW5dID0gdGVtcF9jaDsKKysJCQkJc3RyID0gJnN0clt0bXBfbGVuXTsKKysJCQl9 CisrCQl9CisrCX0KKyt9CisrI2VuZGlmCisrCisrY2hhciAqaXNwNGRiZ19nZXRfYnVmX3NyY19z dHIodTMyIHNyYykKKyt7CisrCXN3aXRjaCAoc3JjKSB7CisrCWNhc2UgSVNQNEZXX0JVRkZFUl9T T1VSQ0VfU1RSRUFNOgorKwkJcmV0dXJuIElTUDREQkdfTUFDUk9fMl9TVFIoSVNQNEZXX0JVRkZF Ul9TT1VSQ0VfU1RSRUFNKTsKKysJZGVmYXVsdDoKKysJCXJldHVybiAiVW5rbm93biBidWYgc291 cmNlIjsKKysJfQorK30KKysKKytjaGFyICppc3A0ZGJnX2dldF9idWZfZG9uZV9zdHIodTMyIHN0 YXR1cykKKyt7CisrCXN3aXRjaCAoc3RhdHVzKSB7CisrCWNhc2UgSVNQNEZXX0JVRkZFUl9TVEFU VVNfSU5WQUxJRDoKKysJCXJldHVybiBJU1A0REJHX01BQ1JPXzJfU1RSKElTUDRGV19CVUZGRVJf U1RBVFVTX0lOVkFMSUQpOworKwljYXNlIElTUDRGV19CVUZGRVJfU1RBVFVTX1NLSVBQRUQ6Cisr CQlyZXR1cm4gSVNQNERCR19NQUNST18yX1NUUihJU1A0RldfQlVGRkVSX1NUQVRVU19TS0lQUEVE KTsKKysJY2FzZSBJU1A0RldfQlVGRkVSX1NUQVRVU19FWElTVDoKKysJCXJldHVybiBJU1A0REJH X01BQ1JPXzJfU1RSKElTUDRGV19CVUZGRVJfU1RBVFVTX0VYSVNUKTsKKysJY2FzZSBJU1A0Rldf QlVGRkVSX1NUQVRVU19ET05FOgorKwkJcmV0dXJuIElTUDREQkdfTUFDUk9fMl9TVFIoSVNQNEZX X0JVRkZFUl9TVEFUVVNfRE9ORSk7CisrCWNhc2UgSVNQNEZXX0JVRkZFUl9TVEFUVVNfTEFDSzoK KysJCXJldHVybiBJU1A0REJHX01BQ1JPXzJfU1RSKElTUDRGV19CVUZGRVJfU1RBVFVTX0xBQ0sp OworKwljYXNlIElTUDRGV19CVUZGRVJfU1RBVFVTX0RJUlRZOgorKwkJcmV0dXJuIElTUDREQkdf TUFDUk9fMl9TVFIoSVNQNEZXX0JVRkZFUl9TVEFUVVNfRElSVFkpOworKwljYXNlIElTUDRGV19C VUZGRVJfU1RBVFVTX01BWDoKKysJCXJldHVybiBJU1A0REJHX01BQ1JPXzJfU1RSKElTUDRGV19C VUZGRVJfU1RBVFVTX01BWCk7CisrCWRlZmF1bHQ6CisrCQlyZXR1cm4gIlVua25vd24gQnVmIERv bmUgU3RhdHVzIjsKKysJfQorK30KKysKKytjaGFyICppc3A0ZGJnX2dldF9pbWdfZm10X3N0cihp bnQgZm10IC8qIGVudW0gaXNwNGZ3X2ltYWdlX2Zvcm1hdCAqICovKQorK3sKKysJc3dpdGNoIChm bXQpIHsKKysJY2FzZSBJU1A0RldfSU1BR0VfRk9STUFUX05WMTI6CisrCQlyZXR1cm4gIk5WMTIi OworKwljYXNlIElTUDRGV19JTUFHRV9GT1JNQVRfWVVWNDIySU5URVJMRUFWRUQ6CisrCQlyZXR1 cm4gIllVVjQyMklOVEVSTEVBVkVEIjsKKysJZGVmYXVsdDoKKysJCXJldHVybiAidW5rbm93biBm bXQiOworKwl9CisrfQorKworK3ZvaWQgaXNwNGRiZ19zaG93X2J1Zm1ldGFfaW5mbyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGNoYXIgKnByZSwKKysJCQkgICAgICAgdm9pZCAqaW4sIHZvaWQgKm9yaWdf YnVmKQorK3sKKysJc3RydWN0IGlzcDRmd19idWZmZXJfbWV0YV9pbmZvICpwOworKwlzdHJ1Y3Qg aXNwNGlmX2ltZ19idWZfaW5mbyAqb3JpZzsKKysKKysJaWYgKCFpbikKKysJCXJldHVybjsKKysK KysJaWYgKCFwcmUpCisrCQlwcmUgPSAiIjsKKysKKysJcCA9IGluOworKwlvcmlnID0gb3JpZ19i dWY7CisrCisrCWRldl9kYmcoZGV2LCAiJXMoJXMpIGVuOiVkLHN0YXQ6JXMoJXUpLHNyYzolc1xu IiwgcHJlLAorKwkJaXNwNGRiZ19nZXRfaW1nX2ZtdF9zdHIocC0+aW1hZ2VfcHJvcC5pbWFnZV9m b3JtYXQpLAorKwkJcC0+ZW5hYmxlZCwgaXNwNGRiZ19nZXRfYnVmX2RvbmVfc3RyKHAtPnN0YXR1 cyksIHAtPnN0YXR1cywKKysJCWlzcDRkYmdfZ2V0X2J1Zl9zcmNfc3RyKHAtPnNvdXJjZSkpOwor KworKwlkZXZfZGJnKGRldiwgIiVwLDB4JWxseCgldSkgJXAsMHglbGx4KCV1KSAlcCwweCVsbHgo JXUpXG4iLAorKwkJb3JpZy0+cGxhbmVzWzBdLnN5c19hZGRyLCBvcmlnLT5wbGFuZXNbMF0ubWNf YWRkciwKKysJCW9yaWctPnBsYW5lc1swXS5sZW4sIG9yaWctPnBsYW5lc1sxXS5zeXNfYWRkciwK KysJCW9yaWctPnBsYW5lc1sxXS5tY19hZGRyLCBvcmlnLT5wbGFuZXNbMV0ubGVuLAorKwkJb3Jp Zy0+cGxhbmVzWzJdLnN5c19hZGRyLCBvcmlnLT5wbGFuZXNbMl0ubWNfYWRkciwKKysJCW9yaWct PnBsYW5lc1syXS5sZW4pOworK30KKysKKytjaGFyICppc3A0ZGJnX2dldF9idWZfdHlwZSh1MzIg dHlwZSkKKyt7CisrCS8qIGVudW0gaXNwNGZ3X2J1ZmZlcl90eXBlICovCisrCXN3aXRjaCAodHlw ZSkgeworKwljYXNlIElTUDRGV19CVUZGRVJfVFlQRV9QUkVWSUVXOgorKwkJcmV0dXJuIElTUDRE QkdfTUFDUk9fMl9TVFIoSVNQNEZXX0JVRkZFUl9UWVBFX1BSRVZJRVcpOworKwljYXNlIElTUDRG V19CVUZGRVJfVFlQRV9NRVRBX0lORk86CisrCQlyZXR1cm4gSVNQNERCR19NQUNST18yX1NUUihJ U1A0RldfQlVGRkVSX1RZUEVfTUVUQV9JTkZPKTsKKysJY2FzZSBJU1A0RldfQlVGRkVSX1RZUEVf TUVNX1BPT0w6CisrCQlyZXR1cm4gSVNQNERCR19NQUNST18yX1NUUihJU1A0RldfQlVGRkVSX1RZ UEVfTUVNX1BPT0wpOworKwlkZWZhdWx0OgorKwkJcmV0dXJuICJ1bmtub3duIHR5cGUiOworKwl9 CisrfQorKworK2NoYXIgKmlzcDRkYmdfZ2V0X2NtZF9zdHIodTMyIGNtZCkKKyt7CisrCXN3aXRj aCAoY21kKSB7CisrCWNhc2UgSVNQNEZXX0NNRF9JRF9TVEFSVF9TVFJFQU06CisrCQlyZXR1cm4g SVNQNERCR19NQUNST18yX1NUUihJU1A0RldfQ01EX0lEX1NUQVJUX1NUUkVBTSk7CisrCWNhc2Ug SVNQNEZXX0NNRF9JRF9TVE9QX1NUUkVBTToKKysJCXJldHVybiBJU1A0REJHX01BQ1JPXzJfU1RS KElTUDRGV19DTURfSURfU1RPUF9TVFJFQU0pOworKwljYXNlIElTUDRGV19DTURfSURfU0VORF9C VUZGRVI6CisrCQlyZXR1cm4gSVNQNERCR19NQUNST18yX1NUUihJU1A0RldfQ01EX0lEX1NFTkRf QlVGRkVSKTsKKysJY2FzZSBJU1A0RldfQ01EX0lEX1NFVF9TVFJFQU1fQ09ORklHOgorKwkJcmV0 dXJuIElTUDREQkdfTUFDUk9fMl9TVFIoSVNQNEZXX0NNRF9JRF9TRVRfU1RSRUFNX0NPTkZJRyk7 CisrCWNhc2UgSVNQNEZXX0NNRF9JRF9TRVRfT1VUX0NIQU5fUFJPUDoKKysJCXJldHVybiBJU1A0 REJHX01BQ1JPXzJfU1RSKElTUDRGV19DTURfSURfU0VUX09VVF9DSEFOX1BST1ApOworKwljYXNl IElTUDRGV19DTURfSURfRU5BQkxFX09VVF9DSEFOOgorKwkJcmV0dXJuIElTUDREQkdfTUFDUk9f Ml9TVFIoSVNQNEZXX0NNRF9JRF9FTkFCTEVfT1VUX0NIQU4pOworKwlkZWZhdWx0OgorKwkJcmV0 dXJuICJ1bmtub3duIGNtZCI7CisrCX0KKyt9CisrCisrY2hhciAqaXNwNGRiZ19nZXRfcmVzcF9z dHIodTMyIGNtZCkKKyt7CisrCXN3aXRjaCAoY21kKSB7CisrCWNhc2UgSVNQNEZXX1JFU1BfSURf Q01EX0RPTkU6CisrCQlyZXR1cm4gSVNQNERCR19NQUNST18yX1NUUihJU1A0RldfUkVTUF9JRF9D TURfRE9ORSk7CisrCWNhc2UgSVNQNEZXX1JFU1BfSURfTk9USV9GUkFNRV9ET05FOgorKwkJcmV0 dXJuIElTUDREQkdfTUFDUk9fMl9TVFIoSVNQNEZXX1JFU1BfSURfTk9USV9GUkFNRV9ET05FKTsK KysJZGVmYXVsdDoKKysJCXJldHVybiAidW5rbm93biByZXNwaWQiOworKwl9CisrfQorKworK2No YXIgKmlzcDRkYmdfZ2V0X2lmX3N0cmVhbV9zdHIodTMyIHN0cmVhbSAvKiBlbnVtIGZ3X2NtZF9y ZXNwX3N0cmVhbV9pZCAqLykKKyt7CisrCXN3aXRjaCAoc3RyZWFtKSB7CisrCWNhc2UgSVNQNElG X1NUUkVBTV9JRF9HTE9CQUw6CisrCQlyZXR1cm4gIlNUUkVBTV9HTE9CQUwiOworKwljYXNlIElT UDRJRl9TVFJFQU1fSURfMToKKysJCXJldHVybiAiU1RSRUFNMSI7CisrCWRlZmF1bHQ6CisrCQly ZXR1cm4gInVua25vd24gc3RyZWFtSUQiOworKwl9CisrfQorKworK2NoYXIgKmlzcDRkYmdfZ2V0 X291dF9jaF9zdHIoaW50IGNoIC8qIGVudW0gaXNwNGZ3X3BpcGVfb3V0X2NoICovKQorK3sKKysJ c3dpdGNoICgoZW51bSBpc3A0ZndfcGlwZV9vdXRfY2gpY2gpIHsKKysJY2FzZSBJU1A0RldfSVNQ X1BJUEVfT1VUX0NIX1BSRVZJRVc6CisrCQlyZXR1cm4gInByZXYiOworKwlkZWZhdWx0OgorKwkJ cmV0dXJuICJ1bmtub3duIGNoYW5uZWwiOworKwl9CisrfQorZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9kZWJ1Zy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbWQvaXNwNC9pc3A0X2RlYnVnLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwMDAuLmQxMjYyZTAzYWU2NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X2RlYnVnLmgKK0BAIC0wLDAgKzEsNDEgQEAKKysv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KKysvKgorKyAqIENvcHlyaWdo dCAoQykgMjAyNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisrICovCisrCisrI2lmbmRl ZiBfSVNQNF9ERUJVR19IXworKyNkZWZpbmUgX0lTUDRfREVCVUdfSF8KKysKKysjaW5jbHVkZSA8 bGludXgvZGV2X3ByaW50ay5oPgorKyNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KKysKKysjaW5j bHVkZSAiaXNwNF9zdWJkZXYuaCIKKysKKysjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCisrc3RydWN0 IGlzcDRfZGV2aWNlOworKworK3ZvaWQgaXNwX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBpc3A0X2Rl dmljZSAqaXNwX2Rldik7Cisrdm9pZCBpc3BfZGVidWdmc19yZW1vdmUoc3RydWN0IGlzcDRfZGV2 aWNlICppc3BfZGV2KTsKKyt2b2lkIGlzcF9md19sb2dfcHJpbnQoc3RydWN0IGlzcDRfc3ViZGV2 ICppc3ApOworKworKyNlbHNlCisrCisrLyogdG8gYXZvaWQgY2hlY2twYXRjaCB3YXJuaW5nICov CisrI2RlZmluZSBpc3BfZGVidWdmc19jcmVhdGUoY2FtKSAoKHZvaWQpKGNhbSkpCisrI2RlZmlu ZSBpc3BfZGVidWdmc19yZW1vdmUoY2FtKSAoKHZvaWQpKGNhbSkpCisrI2RlZmluZSBpc3BfZndf bG9nX3ByaW50KGlzcCkgKCh2b2lkKShpc3ApKQorKworKyNlbmRpZiAvKiBDT05GSUdfREVCVUdf RlMgKi8KKysKKyt2b2lkIGlzcDRkYmdfc2hvd19idWZtZXRhX2luZm8oc3RydWN0IGRldmljZSAq ZGV2LCBjaGFyICpwcmUsIHZvaWQgKnAsCisrCQkJICAgICAgIHZvaWQgKm9yaWdfYnVmIC8qIHN0 cnVjdCBzeXNfaW1nX2J1Zl9oYW5kbGUgKi8pOworK2NoYXIgKmlzcDRkYmdfZ2V0X2ltZ19mbXRf c3RyKGludCBmbXQgLyogZW51bSBfaW1hZ2VfZm9ybWF0X3QgKi8pOworK2NoYXIgKmlzcDRkYmdf Z2V0X291dF9jaF9zdHIoaW50IGNoIC8qIGVudW0gX2lzcF9waXBlX291dF9jaF90ICovKTsKKytj aGFyICppc3A0ZGJnX2dldF9jbWRfc3RyKHUzMiBjbWQpOworK2NoYXIgKmlzcDRkYmdfZ2V0X2J1 Zl90eXBlKHUzMiB0eXBlKTsvKiBlbnVtIF9idWZmZXJfdHlwZV90ICovCisrY2hhciAqaXNwNGRi Z19nZXRfcmVzcF9zdHIodTMyIHJlc3ApOworK2NoYXIgKmlzcDRkYmdfZ2V0X2J1Zl9zcmNfc3Ry KHUzMiBzcmMpOworK2NoYXIgKmlzcDRkYmdfZ2V0X2J1Zl9kb25lX3N0cih1MzIgc3RhdHVzKTsK KytjaGFyICppc3A0ZGJnX2dldF9pZl9zdHJlYW1fc3RyKHUzMiBzdHJlYW0pOworKworKyNlbmRp ZiAvKiBfSVNQNF9ERUJVR19IXyAqLworZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vYW1kL2lzcDQvaXNwNF9md19jbWRfcmVzcC5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9h bWQvaXNwNC9pc3A0X2Z3X2NtZF9yZXNwLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwMDAuLjg4YmFjYjAwMzU1YworLS0tIC9kZXYvbnVsbAorKysrIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X2Z3X2NtZF9yZXNwLmgKK0BAIC0wLDAgKzEsMzE4 IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArICovCisrLyoKKysgKiBD b3B5cmlnaHQgKEMpIDIwMjUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorKyAqLworKwor KyNpZm5kZWYgX0lTUDRfRldfQ01EX1JFU1BfSF8KKysjZGVmaW5lIF9JU1A0X0ZXX0NNRF9SRVNQ X0hfCisrCisrLyoKKysgKiAgICAgICAgVHdvIHR5cGVzIG9mIGNvbW1hbmQvcmVzcG9uc2UgY2hh bm5lbC4KKysgKiAgICAgICAgICBUeXBlIEdsb2JhbCBDb21tYW5kIGhhcyBvbmUgY29tbWFuZC9y ZXNwb25zZSBjaGFubmVsLgorKyAqICAgICAgICAgIFR5cGUgU3RyZWFtIENvbW1hbmQgaGFzIG9u ZSBjb21tYW5kL3Jlc3BvbnNlIGNoYW5uZWwuCisrICotLS0tLS0tLS0tLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0KKysgKnwgICAgICAgICB8ICAg ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgIHwgICAgICAgICAgfAorKyAqfCAg ICAgICAgIHwgIC0tLS0+fCAgR2xvYmFsIENvbW1hbmQgICAgICAgICB8LS0tLT4gfCAgICAgICAg ICB8CisrICp8ICAgICAgICAgfCAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAg ICB8ICAgICAgICAgIHwKKysgKnwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgfAorKyAqfCAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrICp8ICAgICAgICAgfCAgICAg ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICB8ICAgICAgICAgIHwKKysgKnwgICAg ICAgICB8ICAtLS0tPnwgICBTdHJlYW0gQ29tbWFuZCAgICAgICAgfC0tLS0+IHwgICAgICAgICAg fAorKyAqfCAgICAgICAgIHwgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAg fCAgICAgICAgICB8CisrICp8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgIHwKKysgKnwgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKyAqfCAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrICp8ICBIT1NU ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpcm13YXJlIHwK KysgKnwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgfAorKyAqfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICB8CisrICp8ICAgICAgICAgfCAgICAgICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAgICAgICB8ICAgICAgICAgIHwKKysgKnwgICAgICAgICB8ICA8LS0tLXwg IEdsb2JhbCBSZXNwb25zZSAgICAgICB8PC0tLS0gIHwgICAgICAgICAgfAorKyAqfCAgICAgICAg IHwgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgfCAgICAgICAgICB8Cisr ICp8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgIHwKKysgKnwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgfAorKyAqfCAgICAgICAgIHwgICAgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gICAgICAgfCAgICAgICAgICB8CisrICp8ICAgICAgICAgfCAgPC0tLS18ICBT dHJlYW0gUmVzcG9uc2UgICAgICAgfDwtLS0tICB8ICAgICAgICAgIHwKKysgKnwgICAgICAgICB8 ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgIHwgICAgICAgICAgfAorKyAq fCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICB8CisrICp8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgIHwKKysgKi0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLQorKyAqLworKworKy8qCisrICogICAgICAgIGNt ZF9pZCBpcyBpbiB0aGUgZm9ybWF0IG9mIGZvbGxvd2luZyB0eXBlOgorKyAqICAgICAgICB0eXBl OiBpbmRpY2F0ZSBjb21tYW5kIHR5cGUsIGdsb2JhbC9zdHJlYW0gY29tbWFuZHMuCisrICogICAg ICAgIGdyb3VwOiBpbmRpY2F0ZSB0aGUgY29tbWFuZCBncm91cC4KKysgKiAgICAgICAgaWQ6IEEg dW5pcXVlIGNvbW1hbmQgaWRlbnRpZmljYXRpb24gaW4gb25lIHR5cGUgYW5kIGdyb3VwLgorKyAq ICAgICAgICB8PC1CaXQzMSB+IEJpdDI0LT58PC1CaXQyMyB+IEJpdDE2LT58PC1CaXQxNSB+IEJp dDAtPnwKKysgKiAgICAgICAgfCAgICAgIHR5cGUgICAgICAgfCAgICAgIGdyb3VwICAgICAgfCAg ICAgICBpZCAgICAgICB8CisrICovCisrCisrI2RlZmluZSBJU1A0RldfQ01EX1RZUEVfU0hJRlQg ICAgICAgICAgICAyNAorKyNkZWZpbmUgSVNQNEZXX0NNRF9HUk9VUF9TSElGVCAgICAgICAgICAg MTYKKysjZGVmaW5lIElTUDRGV19DTURfVFlQRV9TVFJFQU1fQ1RSTCAgICAgICgweDJVIDw8IElT UDRGV19DTURfVFlQRV9TSElGVCkKKysKKysjZGVmaW5lIElTUDRGV19DTURfR1JPVVBfU1RSRUFN X0NUUkwgICAgICgweDFVIDw8IElTUDRGV19DTURfR1JPVVBfU0hJRlQpCisrI2RlZmluZSBJU1A0 RldfQ01EX0dST1VQX1NUUkVBTV9CVUZGRVIgICAoMHg0VSA8PCBJU1A0RldfQ01EX0dST1VQX1NI SUZUKQorKworKy8qIFN0cmVhbSAgQ29tbWFuZCAqLworKyNkZWZpbmUgSVNQNEZXX0NNRF9JRF9T RVRfU1RSRUFNX0NPTkZJRyAgKElTUDRGV19DTURfVFlQRV9TVFJFQU1fQ1RSTFwKKysJCQkJCSB8 IElTUDRGV19DTURfR1JPVVBfU1RSRUFNX0NUUkwgfCAweDEpCisrI2RlZmluZSBJU1A0RldfQ01E X0lEX1NFVF9PVVRfQ0hBTl9QUk9QICAoSVNQNEZXX0NNRF9UWVBFX1NUUkVBTV9DVFJMXAorKwkJ CQkJIHwgSVNQNEZXX0NNRF9HUk9VUF9TVFJFQU1fQ1RSTCB8IDB4MykKKysjZGVmaW5lIElTUDRG V19DTURfSURfRU5BQkxFX09VVF9DSEFOICAgIChJU1A0RldfQ01EX1RZUEVfU1RSRUFNX0NUUkxc CisrCQkJCQkgfCBJU1A0RldfQ01EX0dST1VQX1NUUkVBTV9DVFJMIHwgMHg1KQorKyNkZWZpbmUg SVNQNEZXX0NNRF9JRF9TVEFSVF9TVFJFQU0gICAgICAgKElTUDRGV19DTURfVFlQRV9TVFJFQU1f Q1RSTFwKKysJCQkJCSB8IElTUDRGV19DTURfR1JPVVBfU1RSRUFNX0NUUkwgfCAweDcpCisrI2Rl ZmluZSBJU1A0RldfQ01EX0lEX1NUT1BfU1RSRUFNICAgICAgICAoSVNQNEZXX0NNRF9UWVBFX1NU UkVBTV9DVFJMXAorKwkJCQkJIHwgSVNQNEZXX0NNRF9HUk9VUF9TVFJFQU1fQ1RSTCB8IDB4OCkK KysKKysvKiBTdHJlYW0gQnVmZmVyIENvbW1hbmQgKi8KKysjZGVmaW5lIElTUDRGV19DTURfSURf U0VORF9CVUZGRVIgICAgICAgIChJU1A0RldfQ01EX1RZUEVfU1RSRUFNX0NUUkxcCisrCQkJCQkg fCBJU1A0RldfQ01EX0dST1VQX1NUUkVBTV9CVUZGRVIgfCAweDEpCisrCisrLyoKKysgKiAgICAg ICAgcmVzcF9pZCBpcyBpbiB0aGUgZm9ybWF0IG9mIGZvbGxvd2luZyB0eXBlOgorKyAqICAgICAg ICB0eXBlOiBpbmRpY2F0ZSBjb21tYW5kIHR5cGUsIGdsb2JhbC9zdHJlYW0gY29tbWFuZHMuCisr ICogICAgICAgIGdyb3VwOiBpbmRpY2F0ZSB0aGUgY29tbWFuZCBncm91cC4KKysgKiAgICAgICAg aWQ6IEEgdW5pcXVlIGNvbW1hbmQgaWRlbnRpZmljYXRpb24gaW4gb25lIHR5cGUgYW5kIGdyb3Vw LgorKyAqICAgICAgICB8PC1CaXQzMSB+IEJpdDI0LT58PC1CaXQyMyB+IEJpdDE2LT58PC1CaXQx NSB+IEJpdDAtPnwKKysgKiAgICAgICAgfCAgICAgIHR5cGUgICAgICAgfCAgICAgIGdyb3VwICAg ICAgfCAgICAgICBpZCAgICAgICB8CisrICovCisrCisrI2RlZmluZSBJU1A0RldfUkVTUF9HUk9V UF9TSElGVCAgICAgICAgICAxNgorKworKyNkZWZpbmUgSVNQNEZXX1JFU1BfR1JPVVBfR0VORVJB TCAgICAgICAgKDB4MSA8PCBJU1A0RldfUkVTUF9HUk9VUF9TSElGVCkKKysjZGVmaW5lIElTUDRG V19SRVNQX0dST1VQX05PVElGSUNBVElPTiAgICgweDMgPDwgSVNQNEZXX1JFU1BfR1JPVVBfU0hJ RlQpCisrCisrLyogR2VuZXJhbCBSZXNwb25zZSAqLworKyNkZWZpbmUgSVNQNEZXX1JFU1BfSURf Q01EX0RPTkUgICAgICAgICAgKElTUDRGV19SRVNQX0dST1VQX0dFTkVSQUwgfCAweDEpCisrCisr LyogTm90aWZpY2F0aW9uICovCisrI2RlZmluZSBJU1A0RldfUkVTUF9JRF9OT1RJX0ZSQU1FX0RP TkUgICAoSVNQNEZXX1JFU1BfR1JPVVBfTk9USUZJQ0FUSU9OIHwgMHgxKQorKworKyNkZWZpbmUg SVNQNEZXX0NNRF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgMAorKyNkZWZpbmUgSVNQNEZXX0NNRF9T VEFUVVNfRkFJTCAgICAgICAgICAgMQorKyNkZWZpbmUgSVNQNEZXX0NNRF9TVEFUVVNfU0tJUFBF RCAgICAgICAgMgorKworKyNkZWZpbmUgSVNQNEZXX0FERFJfU1BBQ0VfVFlQRV9HUFVfVkEgICAg NAorKworKyNkZWZpbmUgSVNQNEZXX01FTU9SWV9QT09MX1NJWkUgICAgICAgICAgKDEwMCAqIDEw MjQgKiAxMDI0KQorKworKy8qCisrICogc3RhbmRhcmQgSVNQIHBpcGVsaW5lOiBtaXBpY3NpPT5p c3AKKysgKi8KKysjZGVmaW5lIElTUDRGV19NSVBJMF9JU1BfUElQRUxJTkVfSUQgICAgIDB4NWY5 MQorKworK2VudW0gaXNwNGZ3X3NlbnNvcl9pZCB7CisrCS8qIFNlbnNvciBpZCBmb3IgSVNQIGlu cHV0IGZyb20gTUlQSSBwb3J0IDAgKi8KKysJSVNQNEZXX1NFTlNPUl9JRF9PTl9NSVBJMCAgPSAw LAorK307CisrCisrZW51bSBpc3A0Zndfc3RyZWFtX2lkIHsKKysJSVNQNEZXX1NUUkVBTV9JRF9J TlZBTElEID0gLTEsCisrCUlTUDRGV19TVFJFQU1fSURfMSA9IDAsCisrCUlTUDRGV19TVFJFQU1f SURfMiA9IDEsCisrCUlTUDRGV19TVFJFQU1fSURfMyA9IDIsCisrCUlTUDRGV19TVFJFQU1fSURf TUFYSU1VTQorK307CisrCisrZW51bSBpc3A0ZndfaW1hZ2VfZm9ybWF0IHsKKysJLyogNDoyOjAs c2VtaS1wbGFuYXIsIDgtYml0ICovCisrCUlTUDRGV19JTUFHRV9GT1JNQVRfTlYxMiA9IDEsCisr CS8qIGludGVybGVhdmUsIDQ6MjoyLCA4LWJpdCAqLworKwlJU1A0RldfSU1BR0VfRk9STUFUX1lV VjQyMklOVEVSTEVBVkVEID0gNywKKyt9OworKworK2VudW0gaXNwNGZ3X3BpcGVfb3V0X2NoIHsK KysJSVNQNEZXX0lTUF9QSVBFX09VVF9DSF9QUkVWSUVXID0gMCwKKyt9OworKworK2VudW0gaXNw NGZ3X3l1dl9yYW5nZSB7CisrCUlTUDRGV19JU1BfWVVWX1JBTkdFX0ZVTEwgPSAwLCAgICAgLyog WVVWIHZhbHVlIHJhbmdlIGluIDB+MjU1ICovCisrCUlTUDRGV19JU1BfWVVWX1JBTkdFX05BUlJP VyA9IDEsICAgLyogWVVWIHZhbHVlIHJhbmdlIGluIDE2fjIzNSAqLworKwlJU1A0RldfSVNQX1lV Vl9SQU5HRV9NQVgKKyt9OworKworK2VudW0gaXNwNGZ3X2J1ZmZlcl90eXBlIHsKKysJSVNQNEZX X0JVRkZFUl9UWVBFX1BSRVZJRVcgPSA4LAorKwlJU1A0RldfQlVGRkVSX1RZUEVfTUVUQV9JTkZP ID0gMTAsCisrCUlTUDRGV19CVUZGRVJfVFlQRV9NRU1fUE9PTCA9IDE1LAorK307CisrCisrZW51 bSBpc3A0ZndfYnVmZmVyX3N0YXR1cyB7CisrCS8qIFRoZSBidWZmZXIgaXMgSU5WQUxJRCAqLwor KwlJU1A0RldfQlVGRkVSX1NUQVRVU19JTlZBTElELAorKwkvKiBUaGUgYnVmZmVyIGlzIG5vdCBm aWxsZWQgd2l0aCBpbWFnZSBkYXRhICovCisrCUlTUDRGV19CVUZGRVJfU1RBVFVTX1NLSVBQRUQs CisrCS8qIFRoZSBidWZmZXIgaXMgYXZhaWxhYmxlIGFuZCBhd2FpdGluZyB0byBiZSBmaWxsZWQg Ki8KKysJSVNQNEZXX0JVRkZFUl9TVEFUVVNfRVhJU1QsCisrCS8qIFRoZSBidWZmZXIgaXMgZmls bGVkIHdpdGggaW1hZ2UgZGF0YSAqLworKwlJU1A0RldfQlVGRkVSX1NUQVRVU19ET05FLAorKwkv KiBUaGUgYnVmZmVyIGlzIHVuYXZhaWxhYmxlICovCisrCUlTUDRGV19CVUZGRVJfU1RBVFVTX0xB Q0ssCisrCS8qIFRoZSBidWZmZXIgaXMgZGlydHksIHByb2JhYmx5IGNhdXNlZCBieSBMTUkgbGVh a2FnZSAqLworKwlJU1A0RldfQlVGRkVSX1NUQVRVU19ESVJUWSwKKysJSVNQNEZXX0JVRkZFUl9T VEFUVVNfTUFYCisrfTsKKysKKytlbnVtIGlzcDRmd19idWZmZXJfc291cmNlIHsKKysJLyogVGhl IGJ1ZmZlciBpcyBmcm9tIHRoZSBzdHJlYW0gYnVmZmVyIHF1ZXVlICovCisrCUlTUDRGV19CVUZG RVJfU09VUkNFX1NUUkVBTSwKKyt9OworKworK3N0cnVjdCBpc3A0ZndfZXJyb3JfY29kZSB7Cisr CXUzMiBjb2RlMTsKKysJdTMyIGNvZGUyOworKwl1MzIgY29kZTM7CisrCXUzMiBjb2RlNDsKKysJ dTMyIGNvZGU1OworK307CisrCisrLyogQ29tbWFuZCBTdHJ1Y3R1cmUgZm9yIEZXICovCisrCisr c3RydWN0IGlzcDRmd19jbWQgeworKwl1MzIgY21kX3NlcV9udW07CisrCXUzMiBjbWRfaWQ7Cisr CXUzMiBjbWRfcGFyYW1bMTJdOworKwl1MTYgY21kX3N0cmVhbV9pZDsKKysJdTggY21kX3NpbGVu dF9yZXNwOworKwl1OCByZXNlcnZlZDsKKysJdTMyIGNtZF9jaGVja19zdW07CisrfTsKKysKKytz dHJ1Y3QgaXNwNGZ3X3Jlc3BfY21kX2RvbmUgeworKwkvKgorKwkgKiBUaGUgaG9zdDJmdyBjb21t YW5kIHNlcU51bS4KKysJICogVG8gaW5kaWNhdGUgd2hpY2ggY29tbWFuZCB0aGlzIHJlc3BvbnNl IHJlZmVycyB0by4KKysJICovCisrCXUzMiBjbWRfc2VxX251bTsKKysJLyogVGhlIGhvc3QyZncg Y29tbWFuZCBpZCBmb3IgaG9zdCBkb3VibGUgY2hlY2suICovCisrCXUzMiBjbWRfaWQ7CisrCS8q CisrCSAqIEluZGljYXRlIHRoZSBjb21tYW5kIHByb2Nlc3Mgc3RhdHVzLgorKwkgKiAwIG1lYW5z IHN1Y2Nlc3MuIDEgbWVhbnMgZmFpbC4gMiBtZWFucyBza2lwcGVkCisrCSAqLworKwl1MTYgY21k X3N0YXR1czsKKysJLyoKKysJICogSWYgY21kX3N0YXR1cyBpcyAxLCB0aGUgY29tbWFuZCBmYWls ZWQuIFRoZSBob3N0IGNhbiBjaGVjaworKwkgKiBpc3A0ZndfZXJyb3JfY29kZSBmb3IgZGV0YWls cy4KKysJICovCisrCXUxNiBpc3A0ZndfZXJyb3JfY29kZTsKKysJLyogVGhlIHJlc3BvbnNlIHBh eWxvYWQgdHlwZSB2YXJpZXMgYnkgY21kLiAqLworKwl1OCBwYXlsb2FkWzM2XTsKKyt9OworKwor K3N0cnVjdCBpc3A0ZndfcmVzcF9wYXJhbV9wYWNrYWdlIHsKKysJdTMyIHBhY2thZ2VfYWRkcl9s bzsJLyogVGhlIGxvdyAzMiBiaXQgb2YgdGhlIHBrZyBhZGRyZXNzLiAqLworKwl1MzIgcGFja2Fn ZV9hZGRyX2hpOwkvKiBUaGUgaGlnaCAzMiBiaXQgb2YgdGhlIHBrZyBhZGRyZXNzLiAqLworKwl1 MzIgcGFja2FnZV9zaXplOwkvKiBUaGUgdG90YWwgcGtnIHNpemUgaW4gYnl0ZXMuICovCisrCXUz MiBwYWNrYWdlX2NoZWNrX3N1bTsJLyogVGhlIGJ5dGUgc3VtIG9mIHRoZSBwa2cuICovCisrfTsK KysKKytzdHJ1Y3QgaXNwNGZ3X3Jlc3AgeworKwl1MzIgcmVzcF9zZXFfbnVtOworKwl1MzIgcmVz cF9pZDsKKysJdW5pb24geworKwkJc3RydWN0IGlzcDRmd19yZXNwX2NtZF9kb25lIGNtZF9kb25l OworKwkJc3RydWN0IGlzcDRmd19yZXNwX3BhcmFtX3BhY2thZ2UgZnJhbWVfZG9uZTsKKysJCXUz MiByZXNwX3BhcmFtWzEyXTsKKysJfSBwYXJhbTsKKysJdTggIHJlc2VydmVkWzRdOworKwl1MzIg cmVzcF9jaGVja19zdW07CisrfTsKKysKKytzdHJ1Y3QgaXNwNGZ3X21pcGlfcGlwZV9wYXRoX2Nm ZyB7CisrCXUzMiBiX2VuYWJsZTsKKysJZW51bSBpc3A0Zndfc2Vuc29yX2lkIGlzcDRmd19zZW5z b3JfaWQ7CisrfTsKKysKKytzdHJ1Y3QgaXNwNGZ3X2lzcF9waXBlX3BhdGhfY2ZnIHsKKysJdTMy ICBpc3BfcGlwZV9pZDsJLyogcGlwZSBpZHMgZm9yIHBpcGVsaW5lIGNvbnN0cnVjdGlvbiAqLwor K307CisrCisrc3RydWN0IGlzcDRmd19pc3Bfc3RyZWFtX2NmZyB7CisrCS8qIElzcCBtaXBpIHBh dGggKi8KKysJc3RydWN0IGlzcDRmd19taXBpX3BpcGVfcGF0aF9jZmcgbWlwaV9waXBlX3BhdGhf Y2ZnOworKwkvKiBJc3AgcGlwZSBwYXRoICovCisrCXN0cnVjdCBpc3A0ZndfaXNwX3BpcGVfcGF0 aF9jZmcgIGlzcF9waXBlX3BhdGhfY2ZnOworKwkvKiBlbmFibGUgVE5SICovCisrCXUzMiBiX2Vu YWJsZV90bnI7CisrCS8qCisrCSAqIE51bWJlciBvZiBmcmFtZXMgZm9yIFJUQSBwcm9jZXNzaW5n LgorKwkgKiBTZXQgdG8gMCB0byB1c2UgdGhlIGZpcm13YXJlJ3MgZGVmYXVsdCB2YWx1ZS4KKysJ ICovCisrCXUzMiBydGFfZnJhbWVzX3Blcl9wcm9jOworK307CisrCisrc3RydWN0IGlzcDRmd19p bWFnZV9wcm9wIHsKKysJZW51bSBpc3A0ZndfaW1hZ2VfZm9ybWF0IGltYWdlX2Zvcm1hdDsKKysJ dTMyIHdpZHRoOworKwl1MzIgaGVpZ2h0OworKwl1MzIgbHVtYV9waXRjaDsKKysJdTMyIGNocm9t YV9waXRjaDsKKysJZW51bSBpc3A0ZndfeXV2X3JhbmdlIHl1dl9yYW5nZTsKKyt9OworKworK3N0 cnVjdCBpc3A0ZndfYnVmZmVyIHsKKysJLyoKKysJICogQSBjaGVjayBudW0gZm9yIGRlYnVnIHVz YWdlLCBob3N0IGNhbiBzZXQgdGhlIGJ1Zl90YWdzCisrCSAqIHRvIGRpZmZlcmVudCBudW1iZXJz CisrCSAqLworKwl1MzIgYnVmX3RhZ3M7CisrCXVuaW9uIHsKKysJCXUzMiB2YWx1ZTsKKysJCXN0 cnVjdCB7CisrCQkJdTMyIHNwYWNlIDogMTY7CisrCQkJdTMyIHZtaWQgIDogMTY7CisrCQl9IGJp dDsKKysJfSB2bWlkX3NwYWNlOworKwl1MzIgYnVmX2Jhc2VfYV9sbzsJCS8qIExvdyBhZGRyZXNz IG9mIGJ1ZmZlciBBICovCisrCXUzMiBidWZfYmFzZV9hX2hpOwkJLyogSGlnaCBhZGRyZXNzIG9m IGJ1ZmZlciBBICovCisrCXUzMiBidWZfc2l6ZV9hOwkJCS8qIEJ1ZmZlciBzaXplIG9mIGJ1ZmZl ciBBICovCisrCisrCXUzMiBidWZfYmFzZV9iX2xvOwkJLyogTG93IGFkZHJlc3Mgb2YgYnVmZmVy IEIgKi8KKysJdTMyIGJ1Zl9iYXNlX2JfaGk7CQkvKiBIaWdoIGFkZHJlc3Mgb2YgYnVmZmVyIEIg Ki8KKysJdTMyIGJ1Zl9zaXplX2I7CQkJLyogQnVmZmVyIHNpemUgb2YgYnVmZmVyIEIgKi8KKysK KysJdTMyIGJ1Zl9iYXNlX2NfbG87CQkvKiBMb3cgYWRkcmVzcyBvZiBidWZmZXIgQyAqLworKwl1 MzIgYnVmX2Jhc2VfY19oaTsJCS8qIEhpZ2ggYWRkcmVzcyBvZiBidWZmZXIgQyAqLworKwl1MzIg YnVmX3NpemVfYzsJCQkvKiBCdWZmZXIgc2l6ZSBvZiBidWZmZXIgQyAqLworK307CisrCisrc3Ry dWN0IGlzcDRmd19idWZmZXJfbWV0YV9pbmZvIHsKKysJdTMyIGVuYWJsZWQ7CQkJCQkvKiBlbmFi bGVkIGZsYWcgKi8KKysJZW51bSBpc3A0ZndfYnVmZmVyX3N0YXR1cyBzdGF0dXM7CQkvKiBCdWZm ZXJTdGF0dXMgKi8KKysJc3RydWN0IGlzcDRmd19lcnJvcl9jb2RlIGVycjsJCQkvKiBlcnIgY29k ZSAqLworKwllbnVtIGlzcDRmd19idWZmZXJfc291cmNlIHNvdXJjZTsJCS8qIEJ1ZmZlclNvdXJj ZSAqLworKwlzdHJ1Y3QgaXNwNGZ3X2ltYWdlX3Byb3AgaW1hZ2VfcHJvcDsJCS8qIGltYWdlX3By b3AgKi8KKysJc3RydWN0IGlzcDRmd19idWZmZXIgYnVmZmVyOwkJCS8qIGJ1ZmZlciBpbmZvICov CisrfTsKKysKKytzdHJ1Y3QgaXNwNGZ3X21ldGFfaW5mbyB7CisrCXUzMiBwb2M7CQkJCS8qIGZy YW1lIGlkICovCisrCXUzMiBmY19pZDsJCQkJLyogZnJhbWUgY3RsIGlkICovCisrCXUzMiB0aW1l X3N0YW1wX2xvOwkJCS8qIHRpbWVzdGFtcCBsb3cgMzIgYml0cyAqLworKwl1MzIgdGltZV9zdGFt cF9oaTsJCQkvKiB0aW1lc3RhbXBfaGlnaCAzMiBiaXRzICovCisrCXN0cnVjdCBpc3A0ZndfYnVm ZmVyX21ldGFfaW5mbyBwcmV2aWV3OwkvKiBwcmV2aWV3IEJ1ZmZlck1ldGFJbmZvICovCisrfTsK KysKKytzdHJ1Y3QgaXNwNGZ3X2NtZF9zZW5kX2J1ZmZlciB7CisrCWVudW0gaXNwNGZ3X2J1ZmZl cl90eXBlIGJ1ZmZlcl90eXBlOworKwlzdHJ1Y3QgaXNwNGZ3X2J1ZmZlciBidWZmZXI7CQkvKiBi dWZmZXIgaW5mbyAqLworK307CisrCisrc3RydWN0IGlzcDRmd19jbWRfc2V0X291dF9jaF9wcm9w IHsKKysJZW51bSBpc3A0ZndfcGlwZV9vdXRfY2ggY2g7CS8qIElTUCBvdXRwdXQgY2hhbm5lbCAq LworKwlzdHJ1Y3QgaXNwNGZ3X2ltYWdlX3Byb3AgaW1hZ2VfcHJvcDsJLyogaW1hZ2UgcHJvcGVy dHkgKi8KKyt9OworKworK3N0cnVjdCBpc3A0ZndfY21kX2VuYWJsZV9vdXRfY2ggeworKwllbnVt IGlzcDRmd19waXBlX291dF9jaCBjaDsJLyogSVNQIG91dHB1dCBjaGFubmVsICovCisrCXUzMiBp c19lbmFibGU7CQkJLyogSWYgY2hhbm5lbCBpcyBlbmFibGVkIG9yIG5vdCAqLworK307CisrCisr c3RydWN0IGlzcDRmd19jbWRfc2V0X3N0cmVhbV9jZmcgeworKwlzdHJ1Y3QgaXNwNGZ3X2lzcF9z dHJlYW1fY2ZnIHN0cmVhbV9jZmc7IC8qIHN0cmVhbSBwYXRoIGNvbmZpZyAqLworK307CisrCisr I2VuZGlmIC8qIF9JU1A0X0ZXX0NNRF9SRVNQX0hfICovCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X2h3X3JlZy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbWQvaXNwNC9pc3A0X2h3X3JlZy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwMDAwLi4wOWM3NmY3NWM1ZWUKKy0tLSAvZGV2L251bGwKKysrKyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9od19yZWcuaAorQEAgLTAsMCArMSwxMjQgQEAK KysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KKysvKgorKyAqIENvcHly aWdodCAoQykgMjAyNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisrICovCisrCisrI2lm bmRlZiBfSVNQNF9IV19SRUdfSF8KKysjZGVmaW5lIF9JU1A0X0hXX1JFR19IXworKworKyNpbmNs dWRlIDxsaW51eC9pby5oPgorKworKyNkZWZpbmUgSVNQX1NPRlRfUkVTRVQJCQkweDYyMDAwCisr I2RlZmluZSBJU1BfU1lTX0lOVDBfRU4JCQkweDYyMDEwCisrI2RlZmluZSBJU1BfU1lTX0lOVDBf U1RBVFVTCQkweDYyMDE0CisrI2RlZmluZSBJU1BfU1lTX0lOVDBfQUNLCQkweDYyMDE4CisrI2Rl ZmluZSBJU1BfQ0NQVV9DTlRMCQkJMHg2MjA1NAorKyNkZWZpbmUgSVNQX1NUQVRVUwkJCTB4NjIw NTgKKysjZGVmaW5lIElTUF9MT0dfUkJfQkFTRV9MTzAJCTB4NjIxNDgKKysjZGVmaW5lIElTUF9M T0dfUkJfQkFTRV9ISTAJCTB4NjIxNGMKKysjZGVmaW5lIElTUF9MT0dfUkJfU0laRTAJCTB4NjIx NTAKKysjZGVmaW5lIElTUF9MT0dfUkJfUlBUUjAJCTB4NjIxNTQKKysjZGVmaW5lIElTUF9MT0df UkJfV1BUUjAJCTB4NjIxNTgKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPMQkJCTB4NjIxNzAKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJMQkJCTB4NjIxNzQKKysjZGVmaW5lIElTUF9SQl9TSVpFMQkJ CTB4NjIxNzgKKysjZGVmaW5lIElTUF9SQl9SUFRSMQkJCTB4NjIxN2MKKysjZGVmaW5lIElTUF9S Ql9XUFRSMQkJCTB4NjIxODAKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPMgkJCTB4NjIxODQKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJMgkJCTB4NjIxODgKKysjZGVmaW5lIElTUF9SQl9TSVpFMgkJ CTB4NjIxOGMKKysjZGVmaW5lIElTUF9SQl9SUFRSMgkJCTB4NjIxOTAKKysjZGVmaW5lIElTUF9S Ql9XUFRSMgkJCTB4NjIxOTQKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPMwkJCTB4NjIxOTgKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJMwkJCTB4NjIxOWMKKysjZGVmaW5lIElTUF9SQl9TSVpFMwkJ CTB4NjIxYTAKKysjZGVmaW5lIElTUF9SQl9SUFRSMwkJCTB4NjIxYTQKKysjZGVmaW5lIElTUF9S Ql9XUFRSMwkJCTB4NjIxYTgKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPNAkJCTB4NjIxYWMKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJNAkJCTB4NjIxYjAKKysjZGVmaW5lIElTUF9SQl9TSVpFNAkJ CTB4NjIxYjQKKysjZGVmaW5lIElTUF9SQl9SUFRSNAkJCTB4NjIxYjgKKysjZGVmaW5lIElTUF9S Ql9XUFRSNAkJCTB4NjIxYmMKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPNQkJCTB4NjIxYzAKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJNQkJCTB4NjIxYzQKKysjZGVmaW5lIElTUF9SQl9TSVpFNQkJ CTB4NjIxYzgKKysjZGVmaW5lIElTUF9SQl9SUFRSNQkJCTB4NjIxY2MKKysjZGVmaW5lIElTUF9S Ql9XUFRSNQkJCTB4NjIxZDAKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPNgkJCTB4NjIxZDQKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJNgkJCTB4NjIxZDgKKysjZGVmaW5lIElTUF9SQl9TSVpFNgkJ CTB4NjIxZGMKKysjZGVmaW5lIElTUF9SQl9SUFRSNgkJCTB4NjIxZTAKKysjZGVmaW5lIElTUF9S Ql9XUFRSNgkJCTB4NjIxZTQKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPNwkJCTB4NjIxZTgKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJNwkJCTB4NjIxZWMKKysjZGVmaW5lIElTUF9SQl9TSVpFNwkJ CTB4NjIxZjAKKysjZGVmaW5lIElTUF9SQl9SUFRSNwkJCTB4NjIxZjQKKysjZGVmaW5lIElTUF9S Ql9XUFRSNwkJCTB4NjIxZjgKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPOAkJCTB4NjIxZmMKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJOAkJCTB4NjIyMDAKKysjZGVmaW5lIElTUF9SQl9TSVpFOAkJ CTB4NjIyMDQKKysjZGVmaW5lIElTUF9SQl9SUFRSOAkJCTB4NjIyMDgKKysjZGVmaW5lIElTUF9S Ql9XUFRSOAkJCTB4NjIyMGMKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPOQkJCTB4NjIyMTAKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJOQkJCTB4NjIyMTQKKysjZGVmaW5lIElTUF9SQl9TSVpFOQkJ CTB4NjIyMTgKKysjZGVmaW5lIElTUF9SQl9SUFRSOQkJCTB4NjIyMWMKKysjZGVmaW5lIElTUF9S Ql9XUFRSOQkJCTB4NjIyMjAKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPMTAJCTB4NjIyMjQKKysj ZGVmaW5lIElTUF9SQl9CQVNFX0hJMTAJCTB4NjIyMjgKKysjZGVmaW5lIElTUF9SQl9TSVpFMTAJ CQkweDYyMjJjCisrI2RlZmluZSBJU1BfUkJfUlBUUjEwCQkJMHg2MjIzMAorKyNkZWZpbmUgSVNQ X1JCX1dQVFIxMAkJCTB4NjIyMzQKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPMTEJCTB4NjIyMzgK KysjZGVmaW5lIElTUF9SQl9CQVNFX0hJMTEJCTB4NjIyM2MKKysjZGVmaW5lIElTUF9SQl9TSVpF MTEJCQkweDYyMjQwCisrI2RlZmluZSBJU1BfUkJfUlBUUjExCQkJMHg2MjI0NAorKyNkZWZpbmUg SVNQX1JCX1dQVFIxMQkJCTB4NjIyNDgKKysjZGVmaW5lIElTUF9SQl9CQVNFX0xPMTIJCTB4NjIy NGMKKysjZGVmaW5lIElTUF9SQl9CQVNFX0hJMTIJCTB4NjIyNTAKKysjZGVmaW5lIElTUF9SQl9T SVpFMTIJCQkweDYyMjU0CisrI2RlZmluZSBJU1BfUkJfUlBUUjEyCQkJMHg2MjI1OAorKyNkZWZp bmUgSVNQX1JCX1dQVFIxMgkJCTB4NjIyNWMKKysKKysjZGVmaW5lIElTUF9QT1dFUl9TVEFUVVMJ CTB4NjAwMDAKKysKKysvKiBJU1BfU09GVF9SRVNFVCAqLworKyNkZWZpbmUgSVNQX1NPRlRfUkVT RVRfX0NDUFVfU09GVF9SRVNFVF9NQVNLCQkJMHgwMDAwMDAwMVVMCisrCisrLyogSVNQX0NDUFVf Q05UTCAqLworKyNkZWZpbmUgSVNQX0NDUFVfQ05UTF9fQ0NQVV9IT1NUX1NPRlRfUlNUX01BU0sJ CQkweDAwMDQwMDAwVUwKKysKKysvKiBJU1BfU1RBVFVTICovCisrI2RlZmluZSBJU1BfU1RBVFVT X19DQ1BVX1JFUE9SVF9NQVNLCQkJCTB4MDAwMDAwZmVVTAorKworKy8qIElTUF9TWVNfSU5UMF9T VEFUVVMgKi8KKysjZGVmaW5lIElTUF9TWVNfSU5UMF9TVEFUVVNfX1NZU19JTlRfUklOR0JVRkZF Ul9XUFQ5X0lOVF9NQVNLCTB4MDAwMTAwMDBVTAorKyNkZWZpbmUgSVNQX1NZU19JTlQwX1NUQVRV U19fU1lTX0lOVF9SSU5HQlVGRkVSX1dQVDEwX0lOVF9NQVNLCTB4MDAwNDAwMDBVTAorKyNkZWZp bmUgSVNQX1NZU19JTlQwX1NUQVRVU19fU1lTX0lOVF9SSU5HQlVGRkVSX1dQVDExX0lOVF9NQVNL CTB4MDAxMDAwMDBVTAorKyNkZWZpbmUgSVNQX1NZU19JTlQwX1NUQVRVU19fU1lTX0lOVF9SSU5H QlVGRkVSX1dQVDEyX0lOVF9NQVNLCTB4MDA0MDAwMDBVTAorKworKy8qIElTUF9TWVNfSU5UMF9F TiAqLworKyNkZWZpbmUgSVNQX1NZU19JTlQwX0VOX19TWVNfSU5UX1JJTkdCVUZGRVJfV1BUOV9F Tl9NQVNLCTB4MDAwMTAwMDBVTAorKyNkZWZpbmUgSVNQX1NZU19JTlQwX0VOX19TWVNfSU5UX1JJ TkdCVUZGRVJfV1BUMTBfRU5fTUFTSwkweDAwMDQwMDAwVUwKKysjZGVmaW5lIElTUF9TWVNfSU5U MF9FTl9fU1lTX0lOVF9SSU5HQlVGRkVSX1dQVDExX0VOX01BU0sJMHgwMDEwMDAwMFVMCisrI2Rl ZmluZSBJU1BfU1lTX0lOVDBfRU5fX1NZU19JTlRfUklOR0JVRkZFUl9XUFQxMl9FTl9NQVNLCTB4 MDA0MDAwMDBVTAorKworKy8qIElTUF9TWVNfSU5UMF9BQ0sgKi8KKysjZGVmaW5lIElTUF9TWVNf SU5UMF9BQ0tfX1NZU19JTlRfUklOR0JVRkZFUl9XUFQ5X0FDS19NQVNLCTB4MDAwMTAwMDBVTAor KyNkZWZpbmUgSVNQX1NZU19JTlQwX0FDS19fU1lTX0lOVF9SSU5HQlVGRkVSX1dQVDEwX0FDS19N QVNLCTB4MDAwNDAwMDBVTAorKyNkZWZpbmUgSVNQX1NZU19JTlQwX0FDS19fU1lTX0lOVF9SSU5H QlVGRkVSX1dQVDExX0FDS19NQVNLCTB4MDAxMDAwMDBVTAorKyNkZWZpbmUgSVNQX1NZU19JTlQw X0FDS19fU1lTX0lOVF9SSU5HQlVGRkVSX1dQVDEyX0FDS19NQVNLCTB4MDA0MDAwMDBVTAorKwor Ky8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIHJlYWRpbmcgaXNwIHJlZ2lzdGVycyAqLworK3N0YXRp YyBpbmxpbmUgdTMyIGlzcDRod19ycmVnKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHJlZykKKyt7 CisrCXJldHVybiByZWFkbChiYXNlICsgcmVnKTsKKyt9CisrCisrLyogSGVscGVyIGZ1bmN0aW9u cyBmb3Igd3JpdGluZyBpc3AgcmVnaXN0ZXJzICovCisrc3RhdGljIGlubGluZSB2b2lkIGlzcDRo d193cmVnKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHJlZywgdTMyIHZhbCkKKyt7CisrCXJldHVy biB3cml0ZWwodmFsLCBiYXNlICsgcmVnKTsKKyt9CisrCisrI2VuZGlmIC8qIF9JU1A0X0hXX1JF R19IXyAqLworZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNw NF9pbnRlcmZhY2UuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9pbnRl cmZhY2UuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMC4uOGQ3M2Y2 NmJiNDJjCistLS0gL2Rldi9udWxsCisrKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtZC9p c3A0L2lzcDRfaW50ZXJmYWNlLmMKK0BAIC0wLDAgKzEsODMyIEBACisrLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjArCisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjUgQWR2YW5j ZWQgTWljcm8gRGV2aWNlcywgSW5jLgorKyAqLworKworKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwu aD4KKysKKysjaW5jbHVkZSAiaXNwNF9kZWJ1Zy5oIgorKyNpbmNsdWRlICJpc3A0X2Z3X2NtZF9y ZXNwLmgiCisrI2luY2x1ZGUgImlzcDRfaHdfcmVnLmgiCisrI2luY2x1ZGUgImlzcDRfaW50ZXJm YWNlLmgiCisrCisrI2RlZmluZSBJU1A0SUZfRldfUkVTUF9SQl9JUlFfRU5fTUFTSyBcCisrCShJ U1BfU1lTX0lOVDBfRU5fX1NZU19JTlRfUklOR0JVRkZFUl9XUFQ5X0VOX01BU0tcCisrCSB8IElT UF9TWVNfSU5UMF9FTl9fU1lTX0lOVF9SSU5HQlVGRkVSX1dQVDEyX0VOX01BU0spCisrCisrI2Rl ZmluZSBJU1A0SUZfRldfQ01EX1RJTUVPVVQgKEhaIC8gMikKKysKKytzdHJ1Y3QgaXNwNGlmX3Ji X2NvbmZpZyB7CisrCWNvbnN0IGNoYXIgKm5hbWU7CisrCXUzMiBpbmRleDsKKysJdTMyIHJlZ19y cHRyOworKwl1MzIgcmVnX3dwdHI7CisrCXUzMiByZWdfYmFzZV9sbzsKKysJdTMyIHJlZ19iYXNl X2hpOworKwl1MzIgcmVnX3NpemU7CisrCXUzMiB2YWxfc2l6ZTsKKysJdTY0IGJhc2VfbWNfYWRk cjsKKysJdm9pZCAqYmFzZV9zeXNfYWRkcjsKKyt9OworKworKy8qIEZXIGNtZCByaW5nIGJ1ZmZl ciBjb25maWd1cmF0aW9uICovCisrc3RhdGljIHN0cnVjdCBpc3A0aWZfcmJfY29uZmlnIGlzcDRp Zl9jbWRfcmJfY29uZmlnW0lTUDRJRl9TVFJFQU1fSURfTUFYXSA9IHsKKysJeworKwkJLm5hbWUg PSAiQ01EX1JCX0dCTDAiLAorKwkJLmluZGV4ID0gMywKKysJCS5yZWdfcnB0ciA9IElTUF9SQl9S UFRSNCwKKysJCS5yZWdfd3B0ciA9IElTUF9SQl9XUFRSNCwKKysJCS5yZWdfYmFzZV9sbyA9IElT UF9SQl9CQVNFX0xPNCwKKysJCS5yZWdfYmFzZV9oaSA9IElTUF9SQl9CQVNFX0hJNCwKKysJCS5y ZWdfc2l6ZSA9IElTUF9SQl9TSVpFNCwKKysJfSwKKysJeworKwkJLm5hbWUgPSAiQ01EX1JCX1NU UjEiLAorKwkJLmluZGV4ID0gMCwKKysJCS5yZWdfcnB0ciA9IElTUF9SQl9SUFRSMSwKKysJCS5y ZWdfd3B0ciA9IElTUF9SQl9XUFRSMSwKKysJCS5yZWdfYmFzZV9sbyA9IElTUF9SQl9CQVNFX0xP MSwKKysJCS5yZWdfYmFzZV9oaSA9IElTUF9SQl9CQVNFX0hJMSwKKysJCS5yZWdfc2l6ZSA9IElT UF9SQl9TSVpFMSwKKysJfSwKKysJeworKwkJLm5hbWUgPSAiQ01EX1JCX1NUUjIiLAorKwkJLmlu ZGV4ID0gMSwKKysJCS5yZWdfcnB0ciA9IElTUF9SQl9SUFRSMiwKKysJCS5yZWdfd3B0ciA9IElT UF9SQl9XUFRSMiwKKysJCS5yZWdfYmFzZV9sbyA9IElTUF9SQl9CQVNFX0xPMiwKKysJCS5yZWdf YmFzZV9oaSA9IElTUF9SQl9CQVNFX0hJMiwKKysJCS5yZWdfc2l6ZSA9IElTUF9SQl9TSVpFMiwK KysJfSwKKysJeworKwkJLm5hbWUgPSAiQ01EX1JCX1NUUjMiLAorKwkJLmluZGV4ID0gMiwKKysJ CS5yZWdfcnB0ciA9IElTUF9SQl9SUFRSMywKKysJCS5yZWdfd3B0ciA9IElTUF9SQl9XUFRSMywK KysJCS5yZWdfYmFzZV9sbyA9IElTUF9SQl9CQVNFX0xPMywKKysJCS5yZWdfYmFzZV9oaSA9IElT UF9SQl9CQVNFX0hJMywKKysJCS5yZWdfc2l6ZSA9IElTUF9SQl9TSVpFMywKKysJfSwKKyt9Owor KworKy8qIEZXIHJlc3AgcmluZyBidWZmZXIgY29uZmlndXJhdGlvbiAqLworK3N0YXRpYyBzdHJ1 Y3QgaXNwNGlmX3JiX2NvbmZpZyBpc3A0aWZfcmVzcF9yYl9jb25maWdbSVNQNElGX1NUUkVBTV9J RF9NQVhdID0geworKwl7CisrCQkubmFtZSA9ICJSRVNfUkJfR0JMMCIsCisrCQkuaW5kZXggPSAz LAorKwkJLnJlZ19ycHRyID0gSVNQX1JCX1JQVFIxMiwKKysJCS5yZWdfd3B0ciA9IElTUF9SQl9X UFRSMTIsCisrCQkucmVnX2Jhc2VfbG8gPSBJU1BfUkJfQkFTRV9MTzEyLAorKwkJLnJlZ19iYXNl X2hpID0gSVNQX1JCX0JBU0VfSEkxMiwKKysJCS5yZWdfc2l6ZSA9IElTUF9SQl9TSVpFMTIsCisr CX0sCisrCXsKKysJCS5uYW1lID0gIlJFU19SQl9TVFIxIiwKKysJCS5pbmRleCA9IDAsCisrCQku cmVnX3JwdHIgPSBJU1BfUkJfUlBUUjksCisrCQkucmVnX3dwdHIgPSBJU1BfUkJfV1BUUjksCisr CQkucmVnX2Jhc2VfbG8gPSBJU1BfUkJfQkFTRV9MTzksCisrCQkucmVnX2Jhc2VfaGkgPSBJU1Bf UkJfQkFTRV9ISTksCisrCQkucmVnX3NpemUgPSBJU1BfUkJfU0laRTksCisrCX0sCisrCXsKKysJ CS5uYW1lID0gIlJFU19SQl9TVFIyIiwKKysJCS5pbmRleCA9IDEsCisrCQkucmVnX3JwdHIgPSBJ U1BfUkJfUlBUUjEwLAorKwkJLnJlZ193cHRyID0gSVNQX1JCX1dQVFIxMCwKKysJCS5yZWdfYmFz ZV9sbyA9IElTUF9SQl9CQVNFX0xPMTAsCisrCQkucmVnX2Jhc2VfaGkgPSBJU1BfUkJfQkFTRV9I STEwLAorKwkJLnJlZ19zaXplID0gSVNQX1JCX1NJWkUxMCwKKysJfSwKKysJeworKwkJLm5hbWUg PSAiUkVTX1JCX1NUUjMiLAorKwkJLmluZGV4ID0gMiwKKysJCS5yZWdfcnB0ciA9IElTUF9SQl9S UFRSMTEsCisrCQkucmVnX3dwdHIgPSBJU1BfUkJfV1BUUjExLAorKwkJLnJlZ19iYXNlX2xvID0g SVNQX1JCX0JBU0VfTE8xMSwKKysJCS5yZWdfYmFzZV9oaSA9IElTUF9SQl9CQVNFX0hJMTEsCisr CQkucmVnX3NpemUgPSBJU1BfUkJfU0laRTExLAorKwl9LAorK307CisrCisrLyogRlcgbG9nIHJp bmcgYnVmZmVyIGNvbmZpZ3VyYXRpb24gKi8KKytzdGF0aWMgc3RydWN0IGlzcDRpZl9yYl9jb25m aWcgaXNwNGlmX2xvZ19yYl9jb25maWcgPSB7CisrCS5uYW1lID0gIkxPR19SQiIsCisrCS5pbmRl eCA9IDAsCisrCS5yZWdfcnB0ciA9IElTUF9MT0dfUkJfUlBUUjAsCisrCS5yZWdfd3B0ciA9IElT UF9MT0dfUkJfV1BUUjAsCisrCS5yZWdfYmFzZV9sbyA9IElTUF9MT0dfUkJfQkFTRV9MTzAsCisr CS5yZWdfYmFzZV9oaSA9IElTUF9MT0dfUkJfQkFTRV9ISTAsCisrCS5yZWdfc2l6ZSA9IElTUF9M T0dfUkJfU0laRTAsCisrfTsKKysKKytzdGF0aWMgc3RydWN0IGlzcDRpZl9ncHVfbWVtX2luZm8g KgorK2lzcDRpZl9ncHVfbWVtX2FsbG9jKHN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYsIHUz MiBtZW1fc2l6ZSkKKyt7CisrCXN0cnVjdCBpc3A0aWZfZ3B1X21lbV9pbmZvICptZW1faW5mbzsK KysJc3RydWN0IGRldmljZSAqZGV2ID0gaXNwaWYtPmRldjsKKysJaW50IHJldDsKKysKKysJbWVt X2luZm8gPSBrbWFsbG9jX29iaigqbWVtX2luZm8sIEdGUF9LRVJORUwpOworKwlpZiAoIW1lbV9p bmZvKQorKwkJcmV0dXJuIE5VTEw7CisrCisrCW1lbV9pbmZvLT5tZW1fc2l6ZSA9IG1lbV9zaXpl OworKwlyZXQgPSBpc3Bfa2VybmVsX2J1ZmZlcl9hbGxvYyhkZXYsIG1lbV9pbmZvLT5tZW1fc2l6 ZSwKKysJCQkJICAgICAgJm1lbV9pbmZvLT5tZW1faGFuZGxlLAorKwkJCQkgICAgICAmbWVtX2lu Zm8tPmdwdV9tY19hZGRyLAorKwkJCQkgICAgICAmbWVtX2luZm8tPnN5c19hZGRyKTsKKysJaWYg KHJldCkgeworKwkJa2ZyZWUobWVtX2luZm8pOworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysKKysJ cmV0dXJuIG1lbV9pbmZvOworK30KKysKKytzdGF0aWMgdm9pZCBpc3A0aWZfZ3B1X21lbV9mcmVl KHN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYsCisrCQkJCXN0cnVjdCBpc3A0aWZfZ3B1X21l bV9pbmZvICoqbWVtX2luZm9fcHRyKQorK3sKKysJc3RydWN0IGlzcDRpZl9ncHVfbWVtX2luZm8g Km1lbV9pbmZvID0gKm1lbV9pbmZvX3B0cjsKKysJc3RydWN0IGRldmljZSAqZGV2ID0gaXNwaWYt PmRldjsKKysKKysJaWYgKCFtZW1faW5mbykgeworKwkJZGV2X2VycihkZXYsICJpbnZhbGlkIG1l bV9pbmZvXG4iKTsKKysJCXJldHVybjsKKysJfQorKworKwkqbWVtX2luZm9fcHRyID0gTlVMTDsK KysJaXNwX2tlcm5lbF9idWZmZXJfZnJlZSgmbWVtX2luZm8tPm1lbV9oYW5kbGUsICZtZW1faW5m by0+Z3B1X21jX2FkZHIsCisrCQkJICAgICAgICZtZW1faW5mby0+c3lzX2FkZHIpOworKwlrZnJl ZShtZW1faW5mbyk7CisrfQorKworK3N0YXRpYyB2b2lkIGlzcDRpZl9kZWFsbG9jX2Z3X2dwdW1l bShzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmKQorK3sKKysJaXNwNGlmX2dwdV9tZW1fZnJl ZShpc3BpZiwgJmlzcGlmLT5md19tZW1fcG9vbCk7CisrCWlzcDRpZl9ncHVfbWVtX2ZyZWUoaXNw aWYsICZpc3BpZi0+ZndfY21kX3Jlc3BfYnVmKTsKKysJaXNwNGlmX2dwdV9tZW1fZnJlZShpc3Bp ZiwgJmlzcGlmLT5md19sb2dfYnVmKTsKKysKKysJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg PCBJU1A0SUZfTUFYX1NUUkVBTV9CVUZfQ09VTlQ7IGkrKykKKysJCWlzcDRpZl9ncHVfbWVtX2Zy ZWUoaXNwaWYsICZpc3BpZi0+bWV0YV9pbmZvX2J1ZltpXSk7CisrfQorKworK3N0YXRpYyBpbnQg aXNwNGlmX2FsbG9jX2Z3X2dwdW1lbShzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmKQorK3sK KysJc3RydWN0IGRldmljZSAqZGV2ID0gaXNwaWYtPmRldjsKKysKKysJaXNwaWYtPmZ3X21lbV9w b29sID0gaXNwNGlmX2dwdV9tZW1fYWxsb2MoaXNwaWYsCisrCQkJCQkJICBJU1A0RldfTUVNT1JZ X1BPT0xfU0laRSk7CisrCWlmICghaXNwaWYtPmZ3X21lbV9wb29sKQorKwkJZ290byBlcnJvcl9u b19tZW1vcnk7CisrCisrCWlzcGlmLT5md19jbWRfcmVzcF9idWYgPQorKwkJaXNwNGlmX2dwdV9t ZW1fYWxsb2MoaXNwaWYsIElTUDRJRl9SQl9QTUJNQVBfTUVNX1NJWkUpOworKwlpZiAoIWlzcGlm LT5md19jbWRfcmVzcF9idWYpCisrCQlnb3RvIGVycm9yX25vX21lbW9yeTsKKysKKysJaXNwaWYt PmZ3X2xvZ19idWYgPQorKwkJaXNwNGlmX2dwdV9tZW1fYWxsb2MoaXNwaWYsIElTUDRJRl9GV19M T0dfUklOR0JVRl9TSVpFKTsKKysJaWYgKCFpc3BpZi0+ZndfbG9nX2J1ZikKKysJCWdvdG8gZXJy b3Jfbm9fbWVtb3J5OworKworKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IElTUDRJRl9N QVhfU1RSRUFNX0JVRl9DT1VOVDsgaSsrKSB7CisrCQlpc3BpZi0+bWV0YV9pbmZvX2J1ZltpXSA9 CisrCQkJaXNwNGlmX2dwdV9tZW1fYWxsb2MoaXNwaWYsIElTUDRJRl9NRVRBX0lORk9fQlVGX1NJ WkUpOworKwkJaWYgKCFpc3BpZi0+bWV0YV9pbmZvX2J1ZltpXSkKKysJCQlnb3RvIGVycm9yX25v X21lbW9yeTsKKysJfQorKworKwlyZXR1cm4gMDsKKysKKytlcnJvcl9ub19tZW1vcnk6CisrCWRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIGdwdSBtZW1vcnlcbiIpOworKwlyZXR1cm4g LUVOT01FTTsKKyt9CisrCisrc3RhdGljIHUzMiBpc3A0aWZfY29tcHV0ZV9jaGVja19zdW0oY29u c3Qgdm9pZCAqYnVmLCBzaXplX3QgYnVmX3NpemUpCisreworKwljb25zdCB1OCAqc3VycGx1c19w dHI7CisrCWNvbnN0IHUzMiAqYnVmZmVyOworKwl1MzIgY2hlY2tzdW0gPSAwOworKwlzaXplX3Qg aTsKKysKKysJYnVmZmVyID0gKGNvbnN0IHUzMiAqKWJ1ZjsKKysJZm9yIChpID0gMDsgaSA8IGJ1 Zl9zaXplIC8gc2l6ZW9mKHUzMik7IGkrKykKKysJCWNoZWNrc3VtICs9IGJ1ZmZlcltpXTsKKysK KysJc3VycGx1c19wdHIgPSAoY29uc3QgdTggKikmYnVmZmVyW2ldOworKwkvKiBhZGQgc3VycGx1 cyBkYXRhIGNyYyBjaGVja3N1bSAqLworKwlmb3IgKGkgPSAwOyBpIDwgYnVmX3NpemUgJSBzaXpl b2YodTMyKTsgaSsrKQorKwkJY2hlY2tzdW0gKz0gc3VycGx1c19wdHJbaV07CisrCisrCXJldHVy biBjaGVja3N1bTsKKyt9CisrCisrdm9pZCBpc3A0aWZfY2xlYXJfY21kcShzdHJ1Y3QgaXNwNF9p bnRlcmZhY2UgKmlzcGlmKQorK3sKKysJc3RydWN0IGlzcDRpZl9jbWRfZWxlbWVudCAqYnVmX25v ZGUsICp0bXBfbm9kZTsKKysJTElTVF9IRUFEKGZyZWVfbGlzdCk7CisrCisrCXNjb3BlZF9ndWFy ZChzcGlubG9jaywgJmlzcGlmLT5jbWRxX2xvY2spCisrCQlsaXN0X3NwbGljZV9pbml0KCZpc3Bp Zi0+Y21kcSwgJmZyZWVfbGlzdCk7CisrCisrCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShidWZf bm9kZSwgdG1wX25vZGUsICZmcmVlX2xpc3QsIGxpc3QpCisrCQlrZnJlZShidWZfbm9kZSk7Cisr fQorKworK3N0YXRpYyBib29sIGlzcDRpZl9pc19jbWRxX3JiX2Z1bGwoc3RydWN0IGlzcDRfaW50 ZXJmYWNlICppc3BpZiwKKysJCQkJICAgZW51bSBpc3A0aWZfc3RyZWFtX2lkIHN0cmVhbSkKKyt7 CisrCXN0cnVjdCBpc3A0aWZfcmJfY29uZmlnICpyYl9jb25maWcgPSAmaXNwNGlmX2NtZF9yYl9j b25maWdbc3RyZWFtXTsKKysJdTMyIHJyZWcgPSByYl9jb25maWctPnJlZ19ycHRyLCB3cmVnID0g cmJfY29uZmlnLT5yZWdfd3B0cjsKKysJdTMyIGxlbiA9IHJiX2NvbmZpZy0+dmFsX3NpemU7Cisr CXUzMiByZF9wdHIsIHdyX3B0cjsKKysJdTMyIGJ5dGVzX2ZyZWU7CisrCisrCXJkX3B0ciA9IGlz cDRod19ycmVnKGlzcGlmLT5tbWlvLCBycmVnKTsKKysJd3JfcHRyID0gaXNwNGh3X3JyZWcoaXNw aWYtPm1taW8sIHdyZWcpOworKworKwkvKgorKwkgKiBSZWFkIGFuZCB3cml0ZSBwb2ludGVycyBh cmUgZXF1YWwsIGluZGljYXRpbmcgdGhlIHJpbmcgYnVmZmVyCisrCSAqIGlzIGVtcHR5CisrCSAq LworKwlpZiAod3JfcHRyID09IHJkX3B0cikKKysJCXJldHVybiBmYWxzZTsKKysKKysJaWYgKHdy X3B0ciA+IHJkX3B0cikKKysJCWJ5dGVzX2ZyZWUgPSBsZW4gLSAod3JfcHRyIC0gcmRfcHRyKTsK KysJZWxzZQorKwkJYnl0ZXNfZnJlZSA9IHJkX3B0ciAtIHdyX3B0cjsKKysKKysJLyoKKysJICog SWdub3JlIG9uZSBieXRlIGZyb20gdGhlIGJ5dGVzIGZyZWUgdG8gcHJldmVudCByZF9wdHIgZnJv bSBlcXVhbGluZworKwkgKiB3cl9wdHIgd2hlbiB0aGUgcmluZyBidWZmZXIgaXMgZnVsbCwgYmVj YXVzZSByZF9wdHIgPT0gd3JfcHRyIGlzCisrCSAqIHN1cHBvc2VkIHRvIGluZGljYXRlIHRoYXQg dGhlIHJpbmcgYnVmZmVyIGlzIGVtcHR5LgorKwkgKi8KKysJcmV0dXJuIGJ5dGVzX2ZyZWUgPD0g c2l6ZW9mKHN0cnVjdCBpc3A0ZndfY21kKTsKKyt9CisrCisrc3RydWN0IGlzcDRpZl9jbWRfZWxl bWVudCAqaXNwNGlmX3JtX2NtZF9mcm9tX2NtZHEoc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3Bp ZiwKKysJCQkJCQkgICB1MzIgc2VxX251bSwgdTMyIGNtZF9pZCkKKyt7CisrCXN0cnVjdCBpc3A0 aWZfY21kX2VsZW1lbnQgKmVsZTsKKysKKysJZ3VhcmQoc3BpbmxvY2spKCZpc3BpZi0+Y21kcV9s b2NrKTsKKysKKysJbGlzdF9mb3JfZWFjaF9lbnRyeShlbGUsICZpc3BpZi0+Y21kcSwgbGlzdCkg eworKwkJaWYgKGVsZS0+c2VxX251bSA9PSBzZXFfbnVtICYmIGVsZS0+Y21kX2lkID09IGNtZF9p ZCkgeworKwkJCWxpc3RfZGVsKCZlbGUtPmxpc3QpOworKwkJCXJldHVybiBlbGU7CisrCQl9Cisr CX0KKysKKysJcmV0dXJuIE5VTEw7CisrfQorKworKy8qIE11c3QgY2hlY2sgdGhhdCBpc3A0aWZf aXNfY21kcV9yYl9mdWxsKCkgPT0gZmFsc2UgYmVmb3JlIGNhbGxpbmcgKi8KKytzdGF0aWMgaW50 IGlzcDRpZl9pbnNlcnRfaXNwX2Z3X2NtZChzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmLAor KwkJCQkgICAgZW51bSBpc3A0aWZfc3RyZWFtX2lkIHN0cmVhbSwKKysJCQkJICAgIGNvbnN0IHN0 cnVjdCBpc3A0ZndfY21kICpjbWQpCisreworKwlzdHJ1Y3QgaXNwNGlmX3JiX2NvbmZpZyAqcmJf Y29uZmlnID0gJmlzcDRpZl9jbWRfcmJfY29uZmlnW3N0cmVhbV07CisrCXUzMiBycmVnID0gcmJf Y29uZmlnLT5yZWdfcnB0ciwgd3JlZyA9IHJiX2NvbmZpZy0+cmVnX3dwdHI7CisrCXZvaWQgKm1l bV9zeXMgPSByYl9jb25maWctPmJhc2Vfc3lzX2FkZHI7CisrCWNvbnN0IHUzMiBjbWRfc3ogPSBz aXplb2YoKmNtZCk7CisrCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlzcGlmLT5kZXY7CisrCXUzMiBs ZW4gPSByYl9jb25maWctPnZhbF9zaXplOworKwljb25zdCB2b2lkICpzcmMgPSBjbWQ7CisrCXUz MiByZF9wdHIsIHdyX3B0cjsKKysJdTMyIGJ5dGVzX3RvX2VuZDsKKysKKysJcmRfcHRyID0gaXNw NGh3X3JyZWcoaXNwaWYtPm1taW8sIHJyZWcpOworKwl3cl9wdHIgPSBpc3A0aHdfcnJlZyhpc3Bp Zi0+bW1pbywgd3JlZyk7CisrCWlmIChyZF9wdHIgPj0gbGVuIHx8IHdyX3B0ciA+PSBsZW4pIHsK KysJCWRldl9lcnIoZGV2LAorKwkJCSJyYiBpbnZhbGlkOiBzdHJlYW09JXUoJXMpLCByZD0ldSwg d3I9JXUsIGxlbj0ldSwgY21kX3N6PSV1XG4iLAorKwkJCXN0cmVhbSwgaXNwNGRiZ19nZXRfaWZf c3RyZWFtX3N0cihzdHJlYW0pLCByZF9wdHIsCisrCQkJd3JfcHRyLCBsZW4sIGNtZF9zeik7Cisr CQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwlieXRlc190b19lbmQgPSBsZW4gLSB3cl9wdHI7 CisrCWlmIChieXRlc190b19lbmQgPj0gY21kX3N6KSB7CisrCQkvKiBGVyBjbWQgaXMganVzdCBh IHN0cmFpZ2h0IGNvcHkgdG8gdGhlIHdyaXRlIHBvaW50ZXIgKi8KKysJCW1lbWNweShtZW1fc3lz ICsgd3JfcHRyLCBzcmMsIGNtZF9zeik7CisrCQlpc3A0aHdfd3JlZyhpc3BpZi0+bW1pbywgd3Jl ZywgKHdyX3B0ciArIGNtZF9zeikgJSBsZW4pOworKwl9IGVsc2UgeworKwkJLyoKKysJCSAqIEZX IGNtZCBpcyBzcGxpdCBiZWNhdXNlIHRoZSByaW5nIGJ1ZmZlciBuZWVkcyB0byB3cmFwCisrCQkg KiBhcm91bmQKKysJCSAqLworKwkJbWVtY3B5KG1lbV9zeXMgKyB3cl9wdHIsIHNyYywgYnl0ZXNf dG9fZW5kKTsKKysJCW1lbWNweShtZW1fc3lzLCBzcmMgKyBieXRlc190b19lbmQsIGNtZF9zeiAt IGJ5dGVzX3RvX2VuZCk7CisrCQlpc3A0aHdfd3JlZyhpc3BpZi0+bW1pbywgd3JlZywgY21kX3N6 IC0gYnl0ZXNfdG9fZW5kKTsKKysJfQorKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGlu bGluZSBlbnVtIGlzcDRpZl9zdHJlYW1faWQgaXNwNGlmX2dldF9md19zdHJlYW0odTMyIGNtZF9p ZCkKKyt7CisrCXJldHVybiBJU1A0SUZfU1RSRUFNX0lEXzE7CisrfQorKworK3N0YXRpYyBpbnQg aXNwNGlmX3NlbmRfZndfY21kKHN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYsIHUzMiBjbWRf aWQsCisrCQkJICAgICAgY29uc3Qgdm9pZCAqcGFja2FnZSwKKysJCQkgICAgICB1MzIgcGFja2Fn ZV9zaXplLCBib29sIHN5bmMpCisreworKwllbnVtIGlzcDRpZl9zdHJlYW1faWQgc3RyZWFtID0g aXNwNGlmX2dldF9md19zdHJlYW0oY21kX2lkKTsKKysJc3RydWN0IGlzcDRpZl9jbWRfZWxlbWVu dCAqZWxlID0gTlVMTDsKKysJc3RydWN0IGRldmljZSAqZGV2ID0gaXNwaWYtPmRldjsKKysJc3Ry dWN0IGlzcDRmd19jbWQgY21kOworKwl1MzIgc2VxX251bTsKKysJaW50IHJldDsKKysKKysJaWYg KHBhY2thZ2Vfc2l6ZSA+IHNpemVvZihjbWQuY21kX3BhcmFtKSkgeworKwkJZGV2X2VycihkZXYs ICJmYWlsIHBrZ3NpemUoJXUpID4gJXp1IGNtZDoweCV4LCBzdHJlYW0gJWRcbiIsCisrCQkJcGFj a2FnZV9zaXplLCBzaXplb2YoY21kLmNtZF9wYXJhbSksIGNtZF9pZCwgc3RyZWFtKTsKKysJCXJl dHVybiAtRUlOVkFMOworKwl9CisrCisrCS8qCisrCSAqIFRoZSBzdHJ1Y3Qgd2lsbCBiZSBzaGFy ZWQgd2l0aCBJU1AgRlcsIHVzZSBtZW1zZXQoKSB0byBndWFyYW50ZWUKKysJICogcGFkZGluZyBi aXRzIGFyZSB6ZXJvZWQsIHNpbmNlIHRoaXMgaXMgbm90IGd1YXJhbnRlZWQgb24gYWxsCisrCSAq IGNvbXBpbGVycy4KKysJICovCisrCW1lbXNldCgmY21kLCAwLCBzaXplb2YoY21kKSk7CisrCWNt ZC5jbWRfaWQgPSBjbWRfaWQ7CisrCXN3aXRjaCAoc3RyZWFtKSB7CisrCWNhc2UgSVNQNElGX1NU UkVBTV9JRF9HTE9CQUw6CisrCQljbWQuY21kX3N0cmVhbV9pZCA9IElTUDRGV19TVFJFQU1fSURf SU5WQUxJRDsKKysJCWJyZWFrOworKwljYXNlIElTUDRJRl9TVFJFQU1fSURfMToKKysJCWNtZC5j bWRfc3RyZWFtX2lkID0gSVNQNEZXX1NUUkVBTV9JRF8xOworKwkJYnJlYWs7CisrCWRlZmF1bHQ6 CisrCQlkZXZfZXJyKGRldiwgImZhaWwgYmFkIHN0cmVhbSBpZCAlZFxuIiwgc3RyZWFtKTsKKysJ CXJldHVybiAtRUlOVkFMOworKwl9CisrCisrCS8qIEFsbG9jYXRlIHRoZSBzeW5jIGNvbW1hbmQg b2JqZWN0IGVhcmx5IGFuZCBvdXRzaWRlIG9mIHRoZSBsb2NrICovCisrCWlmIChzeW5jKSB7Cisr CQllbGUgPSBrbWFsbG9jX29iaigqZWxlLCBHRlBfS0VSTkVMKTsKKysJCWlmICghZWxlKQorKwkJ CXJldHVybiAtRU5PTUVNOworKworKwkJLyogR2V0IHR3byByZWZlcmVuY2VzOiBvbmUgZm9yIHRo ZSByZXNwIHRocmVhZCwgb25lIGZvciB1cyAqLworKwkJYXRvbWljX3NldCgmZWxlLT5yZWZjbnQs IDIpOworKwkJaW5pdF9jb21wbGV0aW9uKCZlbGUtPmNtZF9kb25lKTsKKysJfQorKworKwlpZiAo cGFja2FnZSAmJiBwYWNrYWdlX3NpemUpCisrCQltZW1jcHkoY21kLmNtZF9wYXJhbSwgcGFja2Fn ZSwgcGFja2FnZV9zaXplKTsKKysKKysJc2NvcGVkX2d1YXJkKG11dGV4LCAmaXNwaWYtPmlzcDRp Zl9tdXRleCkgeworKwkJcmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoaXNwNGlmX2lzX2NtZHFfcmJf ZnVsbCwgcmV0LCAhcmV0LAorKwkJCQkJSVNQNElGX1JCX0ZVTExfU0xFRVBfVVMsCisrCQkJCQlJ U1A0SUZfUkJfRlVMTF9USU1FT1VUX1VTLCBmYWxzZSwgaXNwaWYsCisrCQkJCQlzdHJlYW0pOwor KwkJaWYgKHJldCkgeworKwkJCXN0cnVjdCBpc3A0aWZfcmJfY29uZmlnICpyYl9jb25maWcgPQor KwkJCQkJJmlzcDRpZl9yZXNwX3JiX2NvbmZpZ1tzdHJlYW1dOworKwkJCXUzMiByZF9wdHIgPSBp c3A0aHdfcnJlZyhpc3BpZi0+bW1pbywKKysJCQkJCQkgcmJfY29uZmlnLT5yZWdfcnB0cik7Cisr CQkJdTMyIHdyX3B0ciA9IGlzcDRod19ycmVnKGlzcGlmLT5tbWlvLAorKwkJCQkJCSByYl9jb25m aWctPnJlZ193cHRyKTsKKysKKysJCQlkZXZfZXJyKGRldiwKKysJCQkJImZhaWxlZCB0byBnZXQg ZnJlZSBjbWRxIHNsb3QsIHN0cmVhbSAlcyglZCkscmQgJXUsIHdyICV1XG4iLAorKwkJCQlpc3A0 ZGJnX2dldF9pZl9zdHJlYW1fc3RyKHN0cmVhbSksIHN0cmVhbSwKKysJCQkJcmRfcHRyLCB3cl9w dHIpOworKwkJCXJldCA9IC1FVElNRURPVVQ7CisrCQkJZ290byBmcmVlX2VsZTsKKysJCX0KKysK KysJCXNlcV9udW0gPSBpc3BpZi0+aG9zdDJmd19zZXFfbnVtKys7CisrCQljbWQuY21kX3NlcV9u dW0gPSBzZXFfbnVtOworKwkJY21kLmNtZF9jaGVja19zdW0gPSBpc3A0aWZfY29tcHV0ZV9jaGVj a19zdW0oJmNtZCwgc2l6ZW9mKGNtZCkKKysJCQkJCQkJICAgICAtIHNpemVvZih1MzIpKTsKKysK KysJCS8qCisrCQkgKiBvbmx5IGFwcGVuZCB0aGUgZncgY21kIHRvIHF1ZXVlIHdoZW4gaXRzIHJl c3BvbnNlIG5lZWRzIHRvCisrCQkgKiBiZSB3YWl0ZWQgZm9yLCBjdXJyZW50bHkgdGhlcmUgYXJl IG9ubHkgdHdvIHN1Y2ggY29tbWFuZHMsCisrCQkgKiBkaXNhYmxlIGNoYW5uZWwgYW5kIHN0b3Ag c3RyZWFtIHdoaWNoIGFyZSBvbmx5IHNlbnQgYWZ0ZXIKKysJCSAqIGNsb3NlIGNhbWVyYQorKwkJ ICovCisrCQlpZiAoZWxlKSB7CisrCQkJZWxlLT5zZXFfbnVtID0gc2VxX251bTsKKysJCQllbGUt PmNtZF9pZCA9IGNtZF9pZDsKKysJCQlzY29wZWRfZ3VhcmQoc3BpbmxvY2ssICZpc3BpZi0+Y21k cV9sb2NrKQorKwkJCQlsaXN0X2FkZF90YWlsKCZlbGUtPmxpc3QsICZpc3BpZi0+Y21kcSk7Cisr CQl9CisrCisrCQlyZXQgPSBpc3A0aWZfaW5zZXJ0X2lzcF9md19jbWQoaXNwaWYsIHN0cmVhbSwg JmNtZCk7CisrCQlpZiAocmV0KSB7CisrCQkJZGV2X2VycihkZXYsCisrCQkJCSJmYWlsIGZvciBp bnNlcnRfaXNwX2Z3X2NtZCBjbWRfaWQgJXMoMHglMDh4KVxuIiwKKysJCQkJaXNwNGRiZ19nZXRf Y21kX3N0cihjbWRfaWQpLCBjbWRfaWQpOworKwkJCWdvdG8gZXJyX2RlcXVldWVfZWxlOworKwkJ fQorKwl9CisrCisrCWlmIChlbGUpIHsKKysJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGlt ZW91dCgmZWxlLT5jbWRfZG9uZSwKKysJCQkJCQkgIElTUDRJRl9GV19DTURfVElNRU9VVCk7Cisr CQlpZiAoIXJldCkgeworKwkJCXJldCA9IC1FVElNRURPVVQ7CisrCQkJZ290byBlcnJfZGVxdWV1 ZV9lbGU7CisrCQl9CisrCisrCQlyZXQgPSAwOworKwkJZ290byBwdXRfZWxlX3JlZjsKKysJfQor KworKwlyZXR1cm4gMDsKKysKKytlcnJfZGVxdWV1ZV9lbGU6CisrCS8qCisrCSAqIFRyeSB0byBy ZW1vdmUgdGhlIGNvbW1hbmQgZnJvbSB0aGUgcXVldWUuIElmIHRoYXQgZmFpbHMsIHRoZW4gaXQK KysJICogbWVhbnMgdGhlIHJlc3BvbnNlIHRocmVhZCBpcyBjdXJyZW50bHkgdXNpbmcgdGhlIG9i amVjdCwgYW5kIHdlIG5lZWQKKysJICogdG8gdXNlIHRoZSByZWZjb3VudCB0byBhdm9pZCBhIHVz ZS1hZnRlci1mcmVlIGJ5IGVpdGhlciBzaWRlLgorKwkgKi8KKysJaWYgKGVsZSAmJiBpc3A0aWZf cm1fY21kX2Zyb21fY21kcShpc3BpZiwgc2VxX251bSwgY21kX2lkKSkKKysJCWdvdG8gZnJlZV9l bGU7CisrCisrcHV0X2VsZV9yZWY6CisrCS8qIERvbid0IGZyZWUgdGhlIGNvbW1hbmQgaWYgd2Ug ZGlkbid0IHB1dCB0aGUgbGFzdCByZWZlcmVuY2UgKi8KKysJaWYgKGVsZSAmJiBhdG9taWNfZGVj X3JldHVybigmZWxlLT5yZWZjbnQpKQorKwkJZWxlID0gTlVMTDsKKysKKytmcmVlX2VsZToKKysJ a2ZyZWUoZWxlKTsKKysJcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGludCBpc3A0aWZfc2Vu ZF9idWZmZXIoc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiwKKysJCQkgICAgICBzdHJ1Y3Qg aXNwNGlmX2ltZ19idWZfaW5mbyAqYnVmX2luZm8pCisreworKwlzdHJ1Y3QgaXNwNGZ3X2NtZF9z ZW5kX2J1ZmZlciBjbWQ7CisrCisrCS8qCisrCSAqIFRoZSBzdHJ1Y3Qgd2lsbCBiZSBzaGFyZWQg d2l0aCBJU1AgRlcsIHVzZSBtZW1zZXQoKSB0byBndWFyYW50ZWUKKysJICogcGFkZGluZyBiaXRz IGFyZSB6ZXJvZWQsIHNpbmNlIHRoaXMgaXMgbm90IGd1YXJhbnRlZWQgb24gYWxsCisrCSAqIGNv bXBpbGVycy4KKysJICovCisrCW1lbXNldCgmY21kLCAwLCBzaXplb2YoY21kKSk7CisrCWNtZC5i dWZmZXJfdHlwZSA9IElTUDRGV19CVUZGRVJfVFlQRV9QUkVWSUVXOworKwljbWQuYnVmZmVyLnZt aWRfc3BhY2UuYml0LnNwYWNlID0gSVNQNEZXX0FERFJfU1BBQ0VfVFlQRV9HUFVfVkE7CisrCWlz cDRpZl9zcGxpdF9hZGRyNjQoYnVmX2luZm8tPnBsYW5lc1swXS5tY19hZGRyLAorKwkJCSAgICAm Y21kLmJ1ZmZlci5idWZfYmFzZV9hX2xvLAorKwkJCSAgICAmY21kLmJ1ZmZlci5idWZfYmFzZV9h X2hpKTsKKysJY21kLmJ1ZmZlci5idWZfc2l6ZV9hID0gYnVmX2luZm8tPnBsYW5lc1swXS5sZW47 CisrCisrCWlzcDRpZl9zcGxpdF9hZGRyNjQoYnVmX2luZm8tPnBsYW5lc1sxXS5tY19hZGRyLAor KwkJCSAgICAmY21kLmJ1ZmZlci5idWZfYmFzZV9iX2xvLAorKwkJCSAgICAmY21kLmJ1ZmZlci5i dWZfYmFzZV9iX2hpKTsKKysJY21kLmJ1ZmZlci5idWZfc2l6ZV9iID0gYnVmX2luZm8tPnBsYW5l c1sxXS5sZW47CisrCisrCWlzcDRpZl9zcGxpdF9hZGRyNjQoYnVmX2luZm8tPnBsYW5lc1syXS5t Y19hZGRyLAorKwkJCSAgICAmY21kLmJ1ZmZlci5idWZfYmFzZV9jX2xvLAorKwkJCSAgICAmY21k LmJ1ZmZlci5idWZfYmFzZV9jX2hpKTsKKysJY21kLmJ1ZmZlci5idWZfc2l6ZV9jID0gYnVmX2lu Zm8tPnBsYW5lc1syXS5sZW47CisrCisrCXJldHVybiBpc3A0aWZfc2VuZF9md19jbWQoaXNwaWYs IElTUDRGV19DTURfSURfU0VORF9CVUZGRVIsICZjbWQsCisrCQkJCSAgc2l6ZW9mKGNtZCksIGZh bHNlKTsKKyt9CisrCisrc3RhdGljIHZvaWQgaXNwNGlmX2luaXRfcmJfY29uZmlnKHN0cnVjdCBp c3A0X2ludGVyZmFjZSAqaXNwaWYsCisrCQkJCSAgc3RydWN0IGlzcDRpZl9yYl9jb25maWcgKnJi X2NvbmZpZykKKyt7CisrCWlzcDRod193cmVnKGlzcGlmLT5tbWlvLCByYl9jb25maWctPnJlZ19y cHRyLCAweDApOworKwlpc3A0aHdfd3JlZyhpc3BpZi0+bW1pbywgcmJfY29uZmlnLT5yZWdfd3B0 ciwgMHgwKTsKKysJaXNwNGh3X3dyZWcoaXNwaWYtPm1taW8sIHJiX2NvbmZpZy0+cmVnX2Jhc2Vf bG8sCisrCQkgICAgcmJfY29uZmlnLT5iYXNlX21jX2FkZHIpOworKwlpc3A0aHdfd3JlZyhpc3Bp Zi0+bW1pbywgcmJfY29uZmlnLT5yZWdfYmFzZV9oaSwKKysJCSAgICByYl9jb25maWctPmJhc2Vf bWNfYWRkciA+PiAzMik7CisrCWlzcDRod193cmVnKGlzcGlmLT5tbWlvLCByYl9jb25maWctPnJl Z19zaXplLCByYl9jb25maWctPnZhbF9zaXplKTsKKyt9CisrCisrc3RhdGljIGludCBpc3A0aWZf ZndfaW5pdChzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmKQorK3sKKysJdTMyIGFsaWduZWRf cmJfY2h1bmtfc2l6ZSA9IElTUDRJRl9SQl9QTUJNQVBfTUVNX0NIVU5LICYgMHhmZmZmZmZjMDsK KysJc3RydWN0IGlzcDRpZl9yYl9jb25maWcgKnJiX2NvbmZpZzsKKysJdTMyIG9mZnNldDsKKysJ dW5zaWduZWQgaW50IGk7CisrCisrCS8qIGluaXRpYWxpemUgQ01EX1JCIHN0cmVhbXMgKi8KKysJ Zm9yIChpID0gMDsgaSA8IElTUDRJRl9TVFJFQU1fSURfTUFYOyBpKyspIHsKKysJCXJiX2NvbmZp ZyA9IChpc3A0aWZfY21kX3JiX2NvbmZpZyArIGkpOworKwkJb2Zmc2V0ID0gYWxpZ25lZF9yYl9j aHVua19zaXplICogcmJfY29uZmlnLT5pbmRleDsKKysKKysJCXJiX2NvbmZpZy0+dmFsX3NpemUg PSBJU1A0SUZfRldfQ01EX0JVRl9TSVpFOworKwkJcmJfY29uZmlnLT5iYXNlX3N5c19hZGRyID0K KysJCQlpc3BpZi0+ZndfY21kX3Jlc3BfYnVmLT5zeXNfYWRkciArIG9mZnNldDsKKysJCXJiX2Nv bmZpZy0+YmFzZV9tY19hZGRyID0KKysJCQlpc3BpZi0+ZndfY21kX3Jlc3BfYnVmLT5ncHVfbWNf YWRkciArIG9mZnNldDsKKysKKysJCWlzcDRpZl9pbml0X3JiX2NvbmZpZyhpc3BpZiwgcmJfY29u ZmlnKTsKKysJfQorKworKwkvKiBpbml0aWFsaXplIFJFU1BfUkIgc3RyZWFtcyAqLworKwlmb3Ig KGkgPSAwOyBpIDwgSVNQNElGX1NUUkVBTV9JRF9NQVg7IGkrKykgeworKwkJcmJfY29uZmlnID0g KGlzcDRpZl9yZXNwX3JiX2NvbmZpZyArIGkpOworKwkJb2Zmc2V0ID0gYWxpZ25lZF9yYl9jaHVu a19zaXplICoKKysJCQkgKHJiX2NvbmZpZy0+aW5kZXggKyBJU1A0SUZfUkVTUF9DSEFOX1RPX1JC X09GRlNFVCAtIDEpOworKworKwkJcmJfY29uZmlnLT52YWxfc2l6ZSA9IElTUDRJRl9GV19DTURf QlVGX1NJWkU7CisrCQlyYl9jb25maWctPmJhc2Vfc3lzX2FkZHIgPQorKwkJCWlzcGlmLT5md19j bWRfcmVzcF9idWYtPnN5c19hZGRyICsgb2Zmc2V0OworKwkJcmJfY29uZmlnLT5iYXNlX21jX2Fk ZHIgPQorKwkJCWlzcGlmLT5md19jbWRfcmVzcF9idWYtPmdwdV9tY19hZGRyICsgb2Zmc2V0Owor KworKwkJaXNwNGlmX2luaXRfcmJfY29uZmlnKGlzcGlmLCByYl9jb25maWcpOworKwl9CisrCisr CS8qIGluaXRpYWxpemUgTE9HX1JCIHN0cmVhbSAqLworKwlyYl9jb25maWcgPSAmaXNwNGlmX2xv Z19yYl9jb25maWc7CisrCXJiX2NvbmZpZy0+dmFsX3NpemUgPSBJU1A0SUZfRldfTE9HX1JJTkdC VUZfU0laRTsKKysJcmJfY29uZmlnLT5iYXNlX21jX2FkZHIgPSBpc3BpZi0+ZndfbG9nX2J1Zi0+ Z3B1X21jX2FkZHI7CisrCXJiX2NvbmZpZy0+YmFzZV9zeXNfYWRkciA9IGlzcGlmLT5md19sb2df YnVmLT5zeXNfYWRkcjsKKysKKysJaXNwNGlmX2luaXRfcmJfY29uZmlnKGlzcGlmLCByYl9jb25m aWcpOworKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBpc3A0aWZfd2FpdF9md19y ZWFkeShzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmLAorKwkJCQl1MzIgaXNwX3N0YXR1c19h ZGRyKQorK3sKKysJc3RydWN0IGRldmljZSAqZGV2ID0gaXNwaWYtPmRldjsKKysJdTMyIHRpbWVv dXRfbXMgPSAxMDA7CisrCXUzMiBpbnRlcnZhbF9tcyA9IDE7CisrCXUzMiByZWdfdmFsOworKwor KwkvKiB3YWl0IGZvciBGVyBpbml0aWFsaXplIGRvbmUhICovCisrCWlmICghcmVhZF9wb2xsX3Rp bWVvdXQoaXNwNGh3X3JyZWcsIHJlZ192YWwsIHJlZ192YWwKKysJCQkgICAgICAgJiBJU1BfU1RB VFVTX19DQ1BVX1JFUE9SVF9NQVNLLAorKwkJCSAgICAgICBpbnRlcnZhbF9tcyAqIDEwMDAsIHRp bWVvdXRfbXMgKiAxMDAwLCBmYWxzZSwKKysJCQkgICAgICAgaXNwaWYtPm1taW8sIGlzcF9zdGF0 dXNfYWRkcikpCisrCQlyZXR1cm4gMDsKKysKKysJZGV2X2VycihkZXYsICJJU1AgQ0NQVSBGVyBi b290IGZhaWxlZFxuIik7CisrCisrCXJldHVybiAtRVRJTUU7CisrfQorKworK3N0YXRpYyB2b2lk IGlzcDRpZl9lbmFibGVfY2NwdShzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmKQorK3sKKysJ dTMyIHJlZ192YWw7CisrCisrCXJlZ192YWwgPSBpc3A0aHdfcnJlZyhpc3BpZi0+bW1pbywgSVNQ X1NPRlRfUkVTRVQpOworKwlyZWdfdmFsICY9ICh+SVNQX1NPRlRfUkVTRVRfX0NDUFVfU09GVF9S RVNFVF9NQVNLKTsKKysJaXNwNGh3X3dyZWcoaXNwaWYtPm1taW8sIElTUF9TT0ZUX1JFU0VULCBy ZWdfdmFsKTsKKysKKysJdXNsZWVwX3JhbmdlKDEwMCwgMTUwKTsKKysKKysJcmVnX3ZhbCA9IGlz cDRod19ycmVnKGlzcGlmLT5tbWlvLCBJU1BfQ0NQVV9DTlRMKTsKKysJcmVnX3ZhbCAmPSAofklT UF9DQ1BVX0NOVExfX0NDUFVfSE9TVF9TT0ZUX1JTVF9NQVNLKTsKKysJaXNwNGh3X3dyZWcoaXNw aWYtPm1taW8sIElTUF9DQ1BVX0NOVEwsIHJlZ192YWwpOworK30KKysKKytzdGF0aWMgdm9pZCBp c3A0aWZfZGlzYWJsZV9jY3B1KHN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYpCisreworKwl1 MzIgcmVnX3ZhbDsKKysKKysJcmVnX3ZhbCA9IGlzcDRod19ycmVnKGlzcGlmLT5tbWlvLCBJU1Bf Q0NQVV9DTlRMKTsKKysJcmVnX3ZhbCB8PSBJU1BfQ0NQVV9DTlRMX19DQ1BVX0hPU1RfU09GVF9S U1RfTUFTSzsKKysJaXNwNGh3X3dyZWcoaXNwaWYtPm1taW8sIElTUF9DQ1BVX0NOVEwsIHJlZ192 YWwpOworKworKwl1c2xlZXBfcmFuZ2UoMTAwLCAxNTApOworKworKwlyZWdfdmFsID0gaXNwNGh3 X3JyZWcoaXNwaWYtPm1taW8sIElTUF9TT0ZUX1JFU0VUKTsKKysJcmVnX3ZhbCB8PSBJU1BfU09G VF9SRVNFVF9fQ0NQVV9TT0ZUX1JFU0VUX01BU0s7CisrCWlzcDRod193cmVnKGlzcGlmLT5tbWlv LCBJU1BfU09GVF9SRVNFVCwgcmVnX3ZhbCk7CisrfQorKworK3N0YXRpYyBpbnQgaXNwNGlmX2Z3 X2Jvb3Qoc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZikKKyt7CisrCXN0cnVjdCBkZXZpY2Ug KmRldiA9IGlzcGlmLT5kZXY7CisrCisrCWlmIChpc3BpZi0+c3RhdHVzICE9IElTUDRJRl9TVEFU VVNfUFdSX09OKSB7CisrCQlkZXZfZXJyKGRldiwgImludmFsaWQgaXNwIHBvd2VyIHN0YXR1cyAl ZFxuIiwgaXNwaWYtPnN0YXR1cyk7CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwlpc3A0 aWZfZGlzYWJsZV9jY3B1KGlzcGlmKTsKKysKKysJaXNwNGlmX2Z3X2luaXQoaXNwaWYpOworKwor KwkvKiBjbGVhciBjY3B1IHN0YXR1cyAqLworKwlpc3A0aHdfd3JlZyhpc3BpZi0+bW1pbywgSVNQ X1NUQVRVUywgMHgwKTsKKysKKysJaXNwNGlmX2VuYWJsZV9jY3B1KGlzcGlmKTsKKysKKysJaWYg KGlzcDRpZl93YWl0X2Z3X3JlYWR5KGlzcGlmLCBJU1BfU1RBVFVTKSkgeworKwkJaXNwNGlmX2Rp c2FibGVfY2NwdShpc3BpZik7CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwkvKiBlbmFi bGUgaW50ZXJydXB0cyAqLworKwlpc3A0aHdfd3JlZyhpc3BpZi0+bW1pbywgSVNQX1NZU19JTlQw X0VOLAorKwkJICAgIElTUDRJRl9GV19SRVNQX1JCX0lSUV9FTl9NQVNLKTsKKysKKysJaXNwaWYt PnN0YXR1cyA9IElTUDRJRl9TVEFUVVNfRldfUlVOTklORzsKKysKKysJZGV2X2RiZyhkZXYsICJJ U1AgQ0NQVSBGVyBib290IHN1Y2Nlc3NcbiIpOworKworKwlyZXR1cm4gMDsKKyt9CisrCisraW50 IGlzcDRpZl9mMmhfcmVzcChzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmLCBlbnVtIGlzcDRp Zl9zdHJlYW1faWQgc3RyZWFtLAorKwkJICAgIHN0cnVjdCBpc3A0ZndfcmVzcCAqcmVzcCkKKyt7 CisrCXN0cnVjdCBpc3A0aWZfcmJfY29uZmlnICpyYl9jb25maWcgPSAmaXNwNGlmX3Jlc3BfcmJf Y29uZmlnW3N0cmVhbV07CisrCXUzMiBycmVnID0gcmJfY29uZmlnLT5yZWdfcnB0ciwgd3JlZyA9 IHJiX2NvbmZpZy0+cmVnX3dwdHI7CisrCXZvaWQgKm1lbV9zeXMgPSByYl9jb25maWctPmJhc2Vf c3lzX2FkZHI7CisrCWNvbnN0IHUzMiByZXNwX3N6ID0gc2l6ZW9mKCpyZXNwKTsKKysJc3RydWN0 IGRldmljZSAqZGV2ID0gaXNwaWYtPmRldjsKKysJdTMyIGxlbiA9IHJiX2NvbmZpZy0+dmFsX3Np emU7CisrCXUzMiByZF9wdHIsIHdyX3B0cjsKKysJdTMyIGJ5dGVzX3RvX2VuZDsKKysJdm9pZCAq ZHN0ID0gcmVzcDsKKysJdTMyIGNoZWNrc3VtOworKworKwlyZF9wdHIgPSBpc3A0aHdfcnJlZyhp c3BpZi0+bW1pbywgcnJlZyk7CisrCXdyX3B0ciA9IGlzcDRod19ycmVnKGlzcGlmLT5tbWlvLCB3 cmVnKTsKKysJaWYgKHJkX3B0ciA+PSBsZW4gfHwgd3JfcHRyID49IGxlbikKKysJCWdvdG8gZXJy X3JiX2ludmFsaWQ7CisrCisrCS8qCisrCSAqIFJlYWQgYW5kIHdyaXRlIHBvaW50ZXJzIGFyZSBl cXVhbCwgaW5kaWNhdGluZyB0aGUgcmluZyBidWZmZXIgaXMKKysJICogZW1wdHkKKysJICovCisr CWlmIChyZF9wdHIgPT0gd3JfcHRyKQorKwkJcmV0dXJuIC1FTk9EQVRBOworKworKwlieXRlc190 b19lbmQgPSBsZW4gLSByZF9wdHI7CisrCWlmIChieXRlc190b19lbmQgPj0gcmVzcF9zeikgewor KwkJLyogRlcgcmVzcG9uc2UgaXMganVzdCBhIHN0cmFpZ2h0IGNvcHkgZnJvbSB0aGUgcmVhZCBw b2ludGVyICovCisrCQlpZiAod3JfcHRyID4gcmRfcHRyICYmIHdyX3B0ciAtIHJkX3B0ciA8IHJl c3Bfc3opCisrCQkJZ290byBlcnJfcmJfaW52YWxpZDsKKysKKysJCW1lbWNweShkc3QsIG1lbV9z eXMgKyByZF9wdHIsIHJlc3Bfc3opOworKwkJaXNwNGh3X3dyZWcoaXNwaWYtPm1taW8sIHJyZWcs IChyZF9wdHIgKyByZXNwX3N6KSAlIGxlbik7CisrCX0gZWxzZSB7CisrCQkvKgorKwkJICogRlcg cmVzcG9uc2UgaXMgc3BsaXQgYmVjYXVzZSB0aGUgcmluZyBidWZmZXIgd3JhcHBlZAorKwkJICog YXJvdW5kCisrCQkgKi8KKysJCWlmICh3cl9wdHIgPiByZF9wdHIgfHwgd3JfcHRyIDwgcmVzcF9z eiAtIGJ5dGVzX3RvX2VuZCkKKysJCQlnb3RvIGVycl9yYl9pbnZhbGlkOworKworKwkJbWVtY3B5 KGRzdCwgbWVtX3N5cyArIHJkX3B0ciwgYnl0ZXNfdG9fZW5kKTsKKysJCW1lbWNweShkc3QgKyBi eXRlc190b19lbmQsIG1lbV9zeXMsIHJlc3Bfc3ogLSBieXRlc190b19lbmQpOworKwkJaXNwNGh3 X3dyZWcoaXNwaWYtPm1taW8sIHJyZWcsIHJlc3Bfc3ogLSBieXRlc190b19lbmQpOworKwl9Cisr CisrCWNoZWNrc3VtID0gaXNwNGlmX2NvbXB1dGVfY2hlY2tfc3VtKHJlc3AsIHJlc3Bfc3ogLSBz aXplb2YodTMyKSk7CisrCWlmIChjaGVja3N1bSAhPSByZXNwLT5yZXNwX2NoZWNrX3N1bSkgewor KwkJZGV2X2VycihkZXYsICJyZXNwIGNoZWNrc3VtIDB4JXgsc2hvdWxkIDB4JXgscnB0ciAldSx3 cHRyICV1XG4iLAorKwkJCWNoZWNrc3VtLCByZXNwLT5yZXNwX2NoZWNrX3N1bSwgcmRfcHRyLCB3 cl9wdHIpOworKwkJZGV2X2VycihkZXYsICIlcygldSksIHNlcU5vICV1LCByZXNwX2lkICVzKDB4 JXgpXG4iLAorKwkJCWlzcDRkYmdfZ2V0X2lmX3N0cmVhbV9zdHIoc3RyZWFtKSwgc3RyZWFtLAor KwkJCXJlc3AtPnJlc3Bfc2VxX251bSwgaXNwNGRiZ19nZXRfcmVzcF9zdHIocmVzcC0+cmVzcF9p ZCksCisrCQkJcmVzcC0+cmVzcF9pZCk7CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwly ZXR1cm4gMDsKKysKKytlcnJfcmJfaW52YWxpZDoKKysJZGV2X2VycihkZXYsCisrCQkicmIgaW52 YWxpZDogc3RyZWFtPSV1KCVzKSwgcmQ9JXUsIHdyPSV1LCBsZW49JXUsIHJlc3Bfc3o9JXVcbiIs CisrCQlzdHJlYW0sIGlzcDRkYmdfZ2V0X2lmX3N0cmVhbV9zdHIoc3RyZWFtKSwgcmRfcHRyLCB3 cl9wdHIsIGxlbiwKKysJCXJlc3Bfc3opOworKwlyZXR1cm4gLUVJTlZBTDsKKyt9CisrCisraW50 IGlzcDRpZl9zZW5kX2NvbW1hbmQoc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiwgdTMyIGNt ZF9pZCwKKysJCQljb25zdCB2b2lkICpwYWNrYWdlLCB1MzIgcGFja2FnZV9zaXplKQorK3sKKysJ cmV0dXJuIGlzcDRpZl9zZW5kX2Z3X2NtZChpc3BpZiwgY21kX2lkLCBwYWNrYWdlLCBwYWNrYWdl X3NpemUsIGZhbHNlKTsKKyt9CisrCisraW50IGlzcDRpZl9zZW5kX2NvbW1hbmRfc3luYyhzdHJ1 Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmLCB1MzIgY21kX2lkLAorKwkJCSAgICAgY29uc3Qgdm9p ZCAqcGFja2FnZSwgdTMyIHBhY2thZ2Vfc2l6ZSkKKyt7CisrCXJldHVybiBpc3A0aWZfc2VuZF9m d19jbWQoaXNwaWYsIGNtZF9pZCwgcGFja2FnZSwgcGFja2FnZV9zaXplLCB0cnVlKTsKKyt9Cisr Cisrdm9pZCBpc3A0aWZfY2xlYXJfYnVmcShzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmKQor K3sKKysJc3RydWN0IGlzcDRpZl9pbWdfYnVmX25vZGUgKmJ1Zl9ub2RlLCAqdG1wX25vZGU7Cisr CUxJU1RfSEVBRChmcmVlX2xpc3QpOworKworKwlzY29wZWRfZ3VhcmQoc3BpbmxvY2ssICZpc3Bp Zi0+YnVmcV9sb2NrKQorKwkJbGlzdF9zcGxpY2VfaW5pdCgmaXNwaWYtPmJ1ZnEsICZmcmVlX2xp c3QpOworKworKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYnVmX25vZGUsIHRtcF9ub2RlLCAm ZnJlZV9saXN0LCBub2RlKQorKwkJa2ZyZWUoYnVmX25vZGUpOworK30KKysKKyt2b2lkIGlzcDRp Zl9kZWFsbG9jX2J1ZmZlcl9ub2RlKHN0cnVjdCBpc3A0aWZfaW1nX2J1Zl9ub2RlICpidWZfbm9k ZSkKKyt7CisrCWtmcmVlKGJ1Zl9ub2RlKTsKKyt9CisrCisrc3RydWN0IGlzcDRpZl9pbWdfYnVm X25vZGUgKgorK2lzcDRpZl9hbGxvY19idWZmZXJfbm9kZShzdHJ1Y3QgaXNwNGlmX2ltZ19idWZf aW5mbyAqYnVmX2luZm8pCisreworKwlzdHJ1Y3QgaXNwNGlmX2ltZ19idWZfbm9kZSAqbm9kZTsK KysKKysJbm9kZSA9IGttYWxsb2Nfb2JqKCpub2RlLCBHRlBfS0VSTkVMKTsKKysJaWYgKG5vZGUp CisrCQlub2RlLT5idWZfaW5mbyA9ICpidWZfaW5mbzsKKysKKysJcmV0dXJuIG5vZGU7CisrfQor KworK3N0cnVjdCBpc3A0aWZfaW1nX2J1Zl9ub2RlICppc3A0aWZfZGVxdWV1ZV9idWZmZXIoc3Ry dWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZikKKyt7CisrCXN0cnVjdCBpc3A0aWZfaW1nX2J1Zl9u b2RlICpidWZfbm9kZTsKKysKKysJZ3VhcmQoc3BpbmxvY2spKCZpc3BpZi0+YnVmcV9sb2NrKTsK KysKKysJYnVmX25vZGUgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmlzcGlmLT5idWZxLCB0 eXBlb2YoKmJ1Zl9ub2RlKSwKKysJCQkJCSAgICBub2RlKTsKKysJaWYgKGJ1Zl9ub2RlKQorKwkJ bGlzdF9kZWwoJmJ1Zl9ub2RlLT5ub2RlKTsKKysKKysJcmV0dXJuIGJ1Zl9ub2RlOworK30KKysK KytpbnQgaXNwNGlmX3F1ZXVlX2J1ZmZlcihzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmLAor KwkJCXN0cnVjdCBpc3A0aWZfaW1nX2J1Zl9ub2RlICpidWZfbm9kZSkKKyt7CisrCWludCByZXQ7 CisrCisrCXJldCA9IGlzcDRpZl9zZW5kX2J1ZmZlcihpc3BpZiwgJmJ1Zl9ub2RlLT5idWZfaW5m byk7CisrCWlmIChyZXQpCisrCQlyZXR1cm4gcmV0OworKworKwlzY29wZWRfZ3VhcmQoc3Bpbmxv Y2ssICZpc3BpZi0+YnVmcV9sb2NrKQorKwkJbGlzdF9hZGRfdGFpbCgmYnVmX25vZGUtPm5vZGUs ICZpc3BpZi0+YnVmcSk7CisrCisrCXJldHVybiAwOworK30KKysKKytpbnQgaXNwNGlmX3N0b3Ao c3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZikKKyt7CisrCWlzcDRpZl9kaXNhYmxlX2NjcHUo aXNwaWYpOworKworKwlpc3A0aWZfZGVhbGxvY19md19ncHVtZW0oaXNwaWYpOworKworKwlyZXR1 cm4gMDsKKyt9CisrCisraW50IGlzcDRpZl9zdGFydChzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlz cGlmKQorK3sKKysJaW50IHJldDsKKysKKysJcmV0ID0gaXNwNGlmX2FsbG9jX2Z3X2dwdW1lbShp c3BpZik7CisrCWlmIChyZXQpCisrCQlyZXR1cm4gcmV0OworKworKwlyZXQgPSBpc3A0aWZfZndf Ym9vdChpc3BpZik7CisrCWlmIChyZXQpCisrCQlnb3RvIGZhaWxlZF9md19ib290OworKworKwly ZXR1cm4gMDsKKysKKytmYWlsZWRfZndfYm9vdDoKKysJaXNwNGlmX2RlYWxsb2NfZndfZ3B1bWVt KGlzcGlmKTsKKysJcmV0dXJuIHJldDsKKyt9CisrCisraW50IGlzcDRpZl9kZWluaXQoc3RydWN0 IGlzcDRfaW50ZXJmYWNlICppc3BpZikKKyt7CisrCWlzcDRpZl9jbGVhcl9jbWRxKGlzcGlmKTsK KysKKysJaXNwNGlmX2NsZWFyX2J1ZnEoaXNwaWYpOworKworKwltdXRleF9kZXN0cm95KCZpc3Bp Zi0+aXNwNGlmX211dGV4KTsKKysKKysJcmV0dXJuIDA7CisrfQorKworK2ludCBpc3A0aWZfaW5p dChzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCisrCQl2 b2lkIF9faW9tZW0gKmlzcF9tbWlvKQorK3sKKysJaXNwaWYtPmRldiA9IGRldjsKKysJaXNwaWYt Pm1taW8gPSBpc3BfbW1pbzsKKysKKysJc3Bpbl9sb2NrX2luaXQoJmlzcGlmLT5jbWRxX2xvY2sp OyAvKiB1c2VkIGZvciBjbWRxIGFjY2VzcyAqLworKwlzcGluX2xvY2tfaW5pdCgmaXNwaWYtPmJ1 ZnFfbG9jayk7IC8qIHVzZWQgZm9yIGJ1ZnEgYWNjZXNzICovCisrCW11dGV4X2luaXQoJmlzcGlm LT5pc3A0aWZfbXV0ZXgpOyAvKiB1c2VkIGZvciBjb21tYW5kcyBzZW50IHRvIGlzcGZ3ICovCisr CisrCUlOSVRfTElTVF9IRUFEKCZpc3BpZi0+Y21kcSk7CisrCUlOSVRfTElTVF9IRUFEKCZpc3Bp Zi0+YnVmcSk7CisrCisrCXJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfaW50ZXJmYWNlLmggYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL2FtZC9pc3A0L2lzcDRfaW50ZXJmYWNlLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwMDAuLmNlM2FjOWI5ZTVjZAorLS0tIC9kZXYvbnVsbAorKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X2ludGVyZmFjZS5oCitAQCAtMCwwICsxLDE0 NCBAQAorKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyAqLworKy8qCisrICog Q29weXJpZ2h0IChDKSAyMDI1IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKysgKi8KKysK KysjaWZuZGVmIF9JU1A0X0lOVEVSRkFDRV9IXworKyNkZWZpbmUgX0lTUDRfSU5URVJGQUNFX0hf CisrCisrI2luY2x1ZGUgPGRybS9hbWQvaXNwLmg+CisrI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+ CisrI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorKyNpbmNsdWRlIDxsaW51eC9z cGlubG9jay5oPgorKworK3N0cnVjdCBpc3A0ZndfcmVzcDsKKysKKysjZGVmaW5lIElTUDRJRl9S Ql9NQVggMjUKKysjZGVmaW5lIElTUDRJRl9SRVNQX0NIQU5fVE9fUkJfT0ZGU0VUIDkKKysjZGVm aW5lIElTUDRJRl9SQl9QTUJNQVBfTUVNX1NJWkUgKFNaXzE2TSAtIDEpCisrI2RlZmluZSBJU1A0 SUZfUkJfUE1CTUFQX01FTV9DSFVOSyBcCisrCShJU1A0SUZfUkJfUE1CTUFQX01FTV9TSVpFIC8g KElTUDRJRl9SQl9NQVggLSAxKSkKKysjZGVmaW5lIElTUDRJRl9IT1NUMkZXX0NPTU1BTkRfU0la RSBzaXplb2Yoc3RydWN0IGlzcDRmd19jbWQpCisrI2RlZmluZSBJU1A0SUZfTUFYX05VTV9IT1NU MkZXX0NPTU1BTkQgNDAKKysjZGVmaW5lIElTUDRJRl9GV19DTURfQlVGX1NJWkUgXAorKwkoSVNQ NElGX01BWF9OVU1fSE9TVDJGV19DT01NQU5EICogSVNQNElGX0hPU1QyRldfQ09NTUFORF9TSVpF KQorKyNkZWZpbmUgSVNQNElGX1JCX0ZVTExfU0xFRVBfVVMgKDMzICogVVNFQ19QRVJfTVNFQykK KysjZGVmaW5lIElTUDRJRl9SQl9GVUxMX1RJTUVPVVRfVVMgKDEwICogSVNQNElGX1JCX0ZVTExf U0xFRVBfVVMpCisrCisrI2RlZmluZSBJU1A0SUZfTUVUQV9JTkZPX0JVRl9TSVpFIEFMSUdOKHNp emVvZihzdHJ1Y3QgaXNwNGZ3X21ldGFfaW5mbyksIDB4ODAwMCkKKysjZGVmaW5lIElTUDRJRl9N QVhfU1RSRUFNX0JVRl9DT1VOVCA4CisrCisrI2RlZmluZSBJU1A0SUZfRldfTE9HX1JJTkdCVUZf U0laRSBTWl8yTQorKworK2VudW0gaXNwNGlmX3N0cmVhbV9pZCB7CisrCUlTUDRJRl9TVFJFQU1f SURfR0xPQkFMID0gMCwKKysJSVNQNElGX1NUUkVBTV9JRF8xID0gMSwKKysJSVNQNElGX1NUUkVB TV9JRF9NQVggPSA0CisrfTsKKysKKytlbnVtIGlzcDRpZl9zdGF0dXMgeworKwlJU1A0SUZfU1RB VFVTX1BXUl9PRkYsCisrCUlTUDRJRl9TVEFUVVNfUFdSX09OLAorKwlJU1A0SUZfU1RBVFVTX0ZX X1JVTk5JTkcsCisrCUlTUDRJRl9GU01fU1RBVFVTX01BWAorK307CisrCisrc3RydWN0IGlzcDRp Zl9ncHVfbWVtX2luZm8geworKwl1NjQgbWVtX3NpemU7CisrCXU2NCBncHVfbWNfYWRkcjsKKysJ dm9pZCAqc3lzX2FkZHI7CisrCXZvaWQgKm1lbV9oYW5kbGU7CisrfTsKKysKKytzdHJ1Y3QgaXNw NGlmX2ltZ19idWZfaW5mbyB7CisrCXN0cnVjdCB7CisrCQl2b2lkICpzeXNfYWRkcjsKKysJCXU2 NCBtY19hZGRyOworKwkJdTMyIGxlbjsKKysJfSBwbGFuZXNbM107CisrfTsKKysKKytzdHJ1Y3Qg aXNwNGlmX2ltZ19idWZfbm9kZSB7CisrCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKKysJc3RydWN0 IGlzcDRpZl9pbWdfYnVmX2luZm8gYnVmX2luZm87CisrfTsKKysKKytzdHJ1Y3QgaXNwNGlmX2Nt ZF9lbGVtZW50IHsKKysJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworKwl1MzIgc2VxX251bTsKKysJ dTMyIGNtZF9pZDsKKysJc3RydWN0IGNvbXBsZXRpb24gY21kX2RvbmU7CisrCWF0b21pY190IHJl ZmNudDsKKyt9OworKworK3N0cnVjdCBpc3A0X2ludGVyZmFjZSB7CisrCXN0cnVjdCBkZXZpY2Ug KmRldjsKKysJdm9pZCBfX2lvbWVtICptbWlvOworKworKwlzcGlubG9ja190IGNtZHFfbG9jazsg LyogdXNlZCBmb3IgY21kcSBhY2Nlc3MgKi8KKysJc3BpbmxvY2tfdCBidWZxX2xvY2s7IC8qIHVz ZWQgZm9yIGJ1ZnEgYWNjZXNzICovCisrCXN0cnVjdCBtdXRleCBpc3A0aWZfbXV0ZXg7IC8qIHVz ZWQgdG8gc2VuZCBmdyBjbWQgYW5kIHJlYWQgZncgbG9nICovCisrCisrCXN0cnVjdCBsaXN0X2hl YWQgY21kcTsgLyogY29tbWFuZHMgc2VudCB0byBmdyAqLworKwlzdHJ1Y3QgbGlzdF9oZWFkIGJ1 ZnE7IC8qIGJ1ZmZlcnMgc2VudCB0byBmdyAqLworKworKwllbnVtIGlzcDRpZl9zdGF0dXMgc3Rh dHVzOworKwl1MzIgaG9zdDJmd19zZXFfbnVtOworKworKwkvKiBJU1AgZncgYnVmZmVycyAqLwor KwlzdHJ1Y3QgaXNwNGlmX2dwdV9tZW1faW5mbyAqZndfbG9nX2J1ZjsKKysJc3RydWN0IGlzcDRp Zl9ncHVfbWVtX2luZm8gKmZ3X2NtZF9yZXNwX2J1ZjsKKysJc3RydWN0IGlzcDRpZl9ncHVfbWVt X2luZm8gKmZ3X21lbV9wb29sOworKwlzdHJ1Y3QgaXNwNGlmX2dwdV9tZW1faW5mbyAqbWV0YV9p bmZvX2J1ZltJU1A0SUZfTUFYX1NUUkVBTV9CVUZfQ09VTlRdOworK307CisrCisrc3RhdGljIGlu bGluZSB2b2lkIGlzcDRpZl9zcGxpdF9hZGRyNjQodTY0IGFkZHIsIHUzMiAqbG8sIHUzMiAqaGkp CisreworKwlpZiAobG8pCisrCQkqbG8gPSBhZGRyICYgMHhmZmZmZmZmZjsKKysKKysJaWYgKGhp KQorKwkJKmhpID0gYWRkciA+PiAzMjsKKyt9CisrCisrc3RhdGljIGlubGluZSB1NjQgaXNwNGlm X2pvaW5fYWRkcjY0KHUzMiBsbywgdTMyIGhpKQorK3sKKysJcmV0dXJuICgoKHU2NCloaSkgPDwg MzIpIHwgKHU2NClsbzsKKyt9CisrCisraW50IGlzcDRpZl9mMmhfcmVzcChzdHJ1Y3QgaXNwNF9p bnRlcmZhY2UgKmlzcGlmLCBlbnVtIGlzcDRpZl9zdHJlYW1faWQgc3RyZWFtLAorKwkJICAgIHN0 cnVjdCBpc3A0ZndfcmVzcCAqcmVzcCk7CisrCisraW50IGlzcDRpZl9zZW5kX2NvbW1hbmQoc3Ry dWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiwgdTMyIGNtZF9pZCwKKysJCQljb25zdCB2b2lkICpw YWNrYWdlLCB1MzIgcGFja2FnZV9zaXplKTsKKysKKytpbnQgaXNwNGlmX3NlbmRfY29tbWFuZF9z eW5jKHN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYsIHUzMiBjbWRfaWQsCisrCQkJICAgICBj b25zdCB2b2lkICpwYWNrYWdlLCB1MzIgcGFja2FnZV9zaXplKTsKKysKKytzdHJ1Y3QgaXNwNGlm X2NtZF9lbGVtZW50ICppc3A0aWZfcm1fY21kX2Zyb21fY21kcShzdHJ1Y3QgaXNwNF9pbnRlcmZh Y2UgKmlzcGlmLAorKwkJCQkJCSAgIHUzMiBzZXFfbnVtLCB1MzIgY21kX2lkKTsKKysKKyt2b2lk IGlzcDRpZl9jbGVhcl9jbWRxKHN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYpOworKworK3Zv aWQgaXNwNGlmX2NsZWFyX2J1ZnEoc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZik7CisrCisr dm9pZCBpc3A0aWZfZGVhbGxvY19idWZmZXJfbm9kZShzdHJ1Y3QgaXNwNGlmX2ltZ19idWZfbm9k ZSAqYnVmX25vZGUpOworKworK3N0cnVjdCBpc3A0aWZfaW1nX2J1Zl9ub2RlICoKKytpc3A0aWZf YWxsb2NfYnVmZmVyX25vZGUoc3RydWN0IGlzcDRpZl9pbWdfYnVmX2luZm8gKmJ1Zl9pbmZvKTsK KysKKytzdHJ1Y3QgaXNwNGlmX2ltZ19idWZfbm9kZSAqaXNwNGlmX2RlcXVldWVfYnVmZmVyKHN0 cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYpOworKworK2ludCBpc3A0aWZfcXVldWVfYnVmZmVy KHN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYsCisrCQkJc3RydWN0IGlzcDRpZl9pbWdfYnVm X25vZGUgKmJ1Zl9ub2RlKTsKKysKKytpbnQgaXNwNGlmX3N0b3Aoc3RydWN0IGlzcDRfaW50ZXJm YWNlICppc3BpZik7CisrCisraW50IGlzcDRpZl9zdGFydChzdHJ1Y3QgaXNwNF9pbnRlcmZhY2Ug KmlzcGlmKTsKKysKKytpbnQgaXNwNGlmX2RlaW5pdChzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlz cGlmKTsKKysKKytpbnQgaXNwNGlmX2luaXQoc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiwg c3RydWN0IGRldmljZSAqZGV2LAorKwkJdm9pZCBfX2lvbWVtICppc3BfbW1pbyk7CisrCisrI2Vu ZGlmIC8qIF9JU1A0X0lOVEVSRkFDRV9IXyAqLworZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9zdWJkZXYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YW1kL2lzcDQvaXNwNF9zdWJkZXYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAwMDAwMC4uNDhkZWVhNzljZTZjCistLS0gL2Rldi9udWxsCisrKysgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfc3ViZGV2LmMKK0BAIC0wLDAgKzEsMTA0NyBAQAorKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKworKy8qCisrICogQ29weXJpZ2h0IChD KSAyMDI1IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKysgKi8KKysKKysjaW5jbHVkZSA8 bGludXgvcG1fZG9tYWluLmg+CisrI2luY2x1ZGUgPGxpbnV4L3VuaXRzLmg+CisrCisrI2luY2x1 ZGUgImlzcDQuaCIKKysjaW5jbHVkZSAiaXNwNF9kZWJ1Zy5oIgorKyNpbmNsdWRlICJpc3A0X2Z3 X2NtZF9yZXNwLmgiCisrI2luY2x1ZGUgImlzcDRfaW50ZXJmYWNlLmgiCisrCisrI2RlZmluZSBJ U1A0U0RfTUlOX0JVRl9DTlRfQkVGX1NUQVJUX1NUUkVBTSA0CisrCisrI2RlZmluZSBJU1A0U0Rf UEVSRk9STUFOQ0VfU1RBVEVfTE9XIDAKKysjZGVmaW5lIElTUDRTRF9QRVJGT1JNQU5DRV9TVEFU RV9ISUdIIDEKKysKKysvKiBhbGlnbiAzMktCICovCisrI2RlZmluZSBJU1A0U0RfTUVUQV9CVUZf U0laRSBBTElHTihzaXplb2Yoc3RydWN0IGlzcDRmd19tZXRhX2luZm8pLCAweDgwMDApCisrCisr I2RlZmluZSB0b19pc3A0X3N1YmRldihzZCkgY29udGFpbmVyX29mKHNkLCBzdHJ1Y3QgaXNwNF9z dWJkZXYsIHNkZXYpCisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmlzcDRzZF9lbnRpdHlfbmFtZSA9 ICJhbWQgaXNwNCI7CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmlzcDRzZF90aHJlYWRfbmFtZVtJ U1A0U0RfTUFYX0ZXX1JFU1BfU1RSRUFNX05VTV0gPSB7CisrCSJhbWRfaXNwNF90aHJlYWRfZ2xv YmFsIiwKKysJImFtZF9pc3A0X3RocmVhZF9zdHJlYW0xIiwKKyt9OworKworK3N0YXRpYyB2b2lk IGlzcDRzZF9tb2R1bGVfZW5hYmxlKHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwgYm9v bCBlbmFibGUpCisreworKwlpZiAoaXNwX3N1YmRldi0+ZW5hYmxlX2dwaW8pIHsKKysJCWdwaW9k X3NldF92YWx1ZShpc3Bfc3ViZGV2LT5lbmFibGVfZ3BpbywgZW5hYmxlID8gMSA6IDApOworKwkJ ZGV2X2RiZyhpc3Bfc3ViZGV2LT5kZXYsICIlcyBpc3Bfc3ViZGV2IG1vZHVsZVxuIiwKKysJCQll bmFibGUgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIik7CisrCX0KKyt9CisrCisrc3RhdGljIGludCBp c3A0c2Rfc2V0dXBfZndfbWVtX3Bvb2woc3RydWN0IGlzcDRfc3ViZGV2ICppc3Bfc3ViZGV2KQor K3sKKysJc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiA9ICZpc3Bfc3ViZGV2LT5pc3BpZjsK KysJc3RydWN0IGlzcDRmd19jbWRfc2VuZF9idWZmZXIgYnVmX3R5cGU7CisrCXN0cnVjdCBkZXZp Y2UgKmRldiA9IGlzcF9zdWJkZXYtPmRldjsKKysJaW50IHJldDsKKysKKysJaWYgKCFpc3BpZi0+ ZndfbWVtX3Bvb2wpIHsKKysJCWRldl9lcnIoZGV2LCAiZmFpbCB0byBhbGxvYyBtZW0gcG9vbFxu Iik7CisrCQlyZXR1cm4gLUVOT01FTTsKKysJfQorKworKwkvKgorKwkgKiBUaGUgc3RydWN0IHdp bGwgYmUgc2hhcmVkIHdpdGggSVNQIEZXLCB1c2UgbWVtc2V0KCkgdG8gZ3VhcmFudGVlCisrCSAq IHBhZGRpbmcgYml0cyBhcmUgemVyb2VkLCBzaW5jZSB0aGlzIGlzIG5vdCBndWFyYW50ZWVkIG9u IGFsbAorKwkgKiBjb21waWxlcnMuCisrCSAqLworKwltZW1zZXQoJmJ1Zl90eXBlLCAwLCBzaXpl b2YoYnVmX3R5cGUpKTsKKysJYnVmX3R5cGUuYnVmZmVyX3R5cGUgPSBJU1A0RldfQlVGRkVSX1RZ UEVfTUVNX1BPT0w7CisrCWJ1Zl90eXBlLmJ1ZmZlci52bWlkX3NwYWNlLmJpdC5zcGFjZSA9IElT UDRGV19BRERSX1NQQUNFX1RZUEVfR1BVX1ZBOworKwlpc3A0aWZfc3BsaXRfYWRkcjY0KGlzcGlm LT5md19tZW1fcG9vbC0+Z3B1X21jX2FkZHIsCisrCQkJICAgICZidWZfdHlwZS5idWZmZXIuYnVm X2Jhc2VfYV9sbywKKysJCQkgICAgJmJ1Zl90eXBlLmJ1ZmZlci5idWZfYmFzZV9hX2hpKTsKKysJ YnVmX3R5cGUuYnVmZmVyLmJ1Zl9zaXplX2EgPSBpc3BpZi0+ZndfbWVtX3Bvb2wtPm1lbV9zaXpl OworKworKwlyZXQgPSBpc3A0aWZfc2VuZF9jb21tYW5kKGlzcGlmLCBJU1A0RldfQ01EX0lEX1NF TkRfQlVGRkVSLAorKwkJCQkgICZidWZfdHlwZSwgc2l6ZW9mKGJ1Zl90eXBlKSk7CisrCWlmIChy ZXQpIHsKKysJCWRldl9lcnIoZGV2LCAic2VuZCBmdyBtZW0gcG9vbCAweCVsbHgoJXUpIGZhaWwg JWRcbiIsCisrCQkJaXNwaWYtPmZ3X21lbV9wb29sLT5ncHVfbWNfYWRkciwKKysJCQlidWZfdHlw ZS5idWZmZXIuYnVmX3NpemVfYSwgcmV0KTsKKysJCXJldHVybiByZXQ7CisrCX0KKysKKysJZGV2 X2RiZyhkZXYsICJzZW5kIGZ3IG1lbSBwb29sIDB4JWxseCgldSkgc3VjXG4iLAorKwkJaXNwaWYt PmZ3X21lbV9wb29sLT5ncHVfbWNfYWRkciwgYnVmX3R5cGUuYnVmZmVyLmJ1Zl9zaXplX2EpOwor KworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBpc3A0c2Rfc2V0X3N0cmVhbV9wYXRo KHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldikKKyt7CisrCXN0cnVjdCBpc3A0X2ludGVy ZmFjZSAqaXNwaWYgPSAmaXNwX3N1YmRldi0+aXNwaWY7CisrCXN0cnVjdCBpc3A0ZndfY21kX3Nl dF9zdHJlYW1fY2ZnIGNtZDsKKysJc3RydWN0IGRldmljZSAqZGV2ID0gaXNwX3N1YmRldi0+ZGV2 OworKworKwkvKgorKwkgKiBUaGUgc3RydWN0IHdpbGwgYmUgc2hhcmVkIHdpdGggSVNQIEZXLCB1 c2UgbWVtc2V0KCkgdG8gZ3VhcmFudGVlCisrCSAqIHBhZGRpbmcgYml0cyBhcmUgemVyb2VkLCBz aW5jZSB0aGlzIGlzIG5vdCBndWFyYW50ZWVkIG9uIGFsbAorKwkgKiBjb21waWxlcnMuCisrCSAq LworKwltZW1zZXQoJmNtZCwgMCwgc2l6ZW9mKGNtZCkpOworKwljbWQuc3RyZWFtX2NmZy5taXBp X3BpcGVfcGF0aF9jZmcuaXNwNGZ3X3NlbnNvcl9pZCA9CisrCQlJU1A0RldfU0VOU09SX0lEX09O X01JUEkwOworKwljbWQuc3RyZWFtX2NmZy5taXBpX3BpcGVfcGF0aF9jZmcuYl9lbmFibGUgPSB0 cnVlOworKwljbWQuc3RyZWFtX2NmZy5pc3BfcGlwZV9wYXRoX2NmZy5pc3BfcGlwZV9pZCA9Cisr CQlJU1A0RldfTUlQSTBfSVNQX1BJUEVMSU5FX0lEOworKworKwljbWQuc3RyZWFtX2NmZy5iX2Vu YWJsZV90bnIgPSB0cnVlOworKwlkZXZfZGJnKGRldiwgImlzcDRmd19zZW5zb3JfaWQgJWQsIHBp cGVJZCAweCV4IEVuYWJsZVRuciAldVxuIiwKKysJCWNtZC5zdHJlYW1fY2ZnLm1pcGlfcGlwZV9w YXRoX2NmZy5pc3A0Zndfc2Vuc29yX2lkLAorKwkJY21kLnN0cmVhbV9jZmcuaXNwX3BpcGVfcGF0 aF9jZmcuaXNwX3BpcGVfaWQsCisrCQljbWQuc3RyZWFtX2NmZy5iX2VuYWJsZV90bnIpOworKwor KwlyZXR1cm4gaXNwNGlmX3NlbmRfY29tbWFuZChpc3BpZiwgSVNQNEZXX0NNRF9JRF9TRVRfU1RS RUFNX0NPTkZJRywKKysJCQkJICAgJmNtZCwgc2l6ZW9mKGNtZCkpOworK30KKysKKytzdGF0aWMg aW50IGlzcDRzZF9zZW5kX21ldGFfYnVmKHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldikK Kyt7CisrCXN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYgPSAmaXNwX3N1YmRldi0+aXNwaWY7 CisrCXN0cnVjdCBpc3A0ZndfY21kX3NlbmRfYnVmZmVyIGJ1Zl90eXBlOworKwlzdHJ1Y3QgZGV2 aWNlICpkZXYgPSBpc3Bfc3ViZGV2LT5kZXY7CisrCisrCS8qCisrCSAqIFRoZSBzdHJ1Y3Qgd2ls bCBiZSBzaGFyZWQgd2l0aCBJU1AgRlcsIHVzZSBtZW1zZXQoKSB0byBndWFyYW50ZWUKKysJICog cGFkZGluZyBiaXRzIGFyZSB6ZXJvZWQsIHNpbmNlIHRoaXMgaXMgbm90IGd1YXJhbnRlZWQgb24g YWxsCisrCSAqIGNvbXBpbGVycy4KKysJICovCisrCW1lbXNldCgmYnVmX3R5cGUsIDAsIHNpemVv ZihidWZfdHlwZSkpOworKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IElTUDRJRl9NQVhf U1RSRUFNX0JVRl9DT1VOVDsgaSsrKSB7CisrCQlzdHJ1Y3QgaXNwNGlmX2dwdV9tZW1faW5mbyAq bWV0YV9pbmZvX2J1ZiA9CisrCQkJCWlzcF9zdWJkZXYtPmlzcGlmLm1ldGFfaW5mb19idWZbaV07 CisrCQlpbnQgcmV0OworKworKwkJaWYgKCFtZXRhX2luZm9fYnVmKSB7CisrCQkJZGV2X2Vycihk ZXYsICJmYWlsIGZvciBubyBtZXRhIGluZm8gYnVmKCV1KVxuIiwgaSk7CisrCQkJcmV0dXJuIC1F Tk9NRU07CisrCQl9CisrCisrCQlidWZfdHlwZS5idWZmZXJfdHlwZSA9IElTUDRGV19CVUZGRVJf VFlQRV9NRVRBX0lORk87CisrCQlidWZfdHlwZS5idWZmZXIudm1pZF9zcGFjZS5iaXQuc3BhY2Ug PQorKwkJCUlTUDRGV19BRERSX1NQQUNFX1RZUEVfR1BVX1ZBOworKwkJaXNwNGlmX3NwbGl0X2Fk ZHI2NChtZXRhX2luZm9fYnVmLT5ncHVfbWNfYWRkciwKKysJCQkJICAgICZidWZfdHlwZS5idWZm ZXIuYnVmX2Jhc2VfYV9sbywKKysJCQkJICAgICZidWZfdHlwZS5idWZmZXIuYnVmX2Jhc2VfYV9o aSk7CisrCQlidWZfdHlwZS5idWZmZXIuYnVmX3NpemVfYSA9IG1ldGFfaW5mb19idWYtPm1lbV9z aXplOworKwkJcmV0ID0gaXNwNGlmX3NlbmRfY29tbWFuZChpc3BpZiwgSVNQNEZXX0NNRF9JRF9T RU5EX0JVRkZFUiwKKysJCQkJCSAgJmJ1Zl90eXBlLCBzaXplb2YoYnVmX3R5cGUpKTsKKysJCWlm IChyZXQpIHsKKysJCQlkZXZfZXJyKGRldiwgInNlbmQgbWV0YSBpbmZvKCV1KSBmYWlsXG4iLCBp KTsKKysJCQlyZXR1cm4gcmV0OworKwkJfQorKwl9CisrCisrCWRldl9kYmcoZGV2LCAic2VuZCBt ZXRhIGluZm8gc3VjXG4iKTsKKysJcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBib29sIGlzcDRz ZF9nZXRfc3RyX291dF9wcm9wKHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwKKysJCQkJ ICAgIHN0cnVjdCBpc3A0ZndfaW1hZ2VfcHJvcCAqb3V0X3Byb3AsCisrCQkJCSAgICBzdHJ1Y3Qg djRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlLCB1MzIgcGFkKQorK3sKKysJc3RydWN0IGRldmljZSAq ZGV2ID0gaXNwX3N1YmRldi0+ZGV2OworKwlzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3Jt YXQ7CisrCisrCWZvcm1hdCA9IHY0bDJfc3ViZGV2X3N0YXRlX2dldF9mb3JtYXQoc3RhdGUsIHBh ZCwgMCk7CisrCWlmICghZm9ybWF0KSB7CisrCQlkZXZfZXJyKGRldiwgImZhaWwgZ2V0IHN1YmRl diBzdGF0ZSBmb3JtYXRcbiIpOworKwkJcmV0dXJuIGZhbHNlOworKwl9CisrCisrCXN3aXRjaCAo Zm9ybWF0LT5jb2RlKSB7CisrCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVlWOF8xXzVYODoKKysJCW91 dF9wcm9wLT5pbWFnZV9mb3JtYXQgPSBJU1A0RldfSU1BR0VfRk9STUFUX05WMTI7CisrCQlvdXRf cHJvcC0+d2lkdGggPSBmb3JtYXQtPndpZHRoOworKwkJb3V0X3Byb3AtPmhlaWdodCA9IGZvcm1h dC0+aGVpZ2h0OworKwkJb3V0X3Byb3AtPmx1bWFfcGl0Y2ggPSBmb3JtYXQtPndpZHRoOworKwkJ b3V0X3Byb3AtPmNocm9tYV9waXRjaCA9IG91dF9wcm9wLT53aWR0aDsKKysJCWJyZWFrOworKwlj YXNlIE1FRElBX0JVU19GTVRfWVVZVjhfMVgxNjoKKysJCW91dF9wcm9wLT5pbWFnZV9mb3JtYXQg PSBJU1A0RldfSU1BR0VfRk9STUFUX1lVVjQyMklOVEVSTEVBVkVEOworKwkJb3V0X3Byb3AtPndp ZHRoID0gZm9ybWF0LT53aWR0aDsKKysJCW91dF9wcm9wLT5oZWlnaHQgPSBmb3JtYXQtPmhlaWdo dDsKKysJCW91dF9wcm9wLT5sdW1hX3BpdGNoID0gZm9ybWF0LT53aWR0aCAqIDI7CisrCQlvdXRf cHJvcC0+Y2hyb21hX3BpdGNoID0gMDsKKysJCWJyZWFrOworKwlkZWZhdWx0OgorKwkJZGV2X2Vy cihkZXYsICJmYWlsIGZvciBiYWQgaW1hZ2UgZm9ybWF0OjB4JXhcbiIsCisrCQkJZm9ybWF0LT5j b2RlKTsKKysJCXJldHVybiBmYWxzZTsKKysJfQorKworKwlpZiAoIW91dF9wcm9wLT53aWR0aCB8 fCAhb3V0X3Byb3AtPmhlaWdodCkKKysJCXJldHVybiBmYWxzZTsKKysKKysJcmV0dXJuIHRydWU7 CisrfQorKworK3N0YXRpYyBpbnQgaXNwNHNkX2tpY2tvZmZfc3RyZWFtKHN0cnVjdCBpc3A0X3N1 YmRldiAqaXNwX3N1YmRldiwgdTMyIHcsIHUzMiBoKQorK3sKKysJc3RydWN0IGlzcDRzZF9zZW5z b3JfaW5mbyAqc2Vuc29yX2luZm8gPSAmaXNwX3N1YmRldi0+c2Vuc29yX2luZm87CisrCXN0cnVj dCBpc3A0X2ludGVyZmFjZSAqaXNwaWYgPSAmaXNwX3N1YmRldi0+aXNwaWY7CisrCXN0cnVjdCBk ZXZpY2UgKmRldiA9IGlzcF9zdWJkZXYtPmRldjsKKysKKysJaWYgKHNlbnNvcl9pbmZvLT5zdGF0 dXMgPT0gSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVEVEKQorKwkJcmV0dXJuIDA7CisrCisrCWlm IChzZW5zb3JfaW5mby0+c3RhdHVzID09IElTUDRTRF9TVEFSVF9TVEFUVVNfU1RBUlRfRkFJTCkg eworKwkJZGV2X2VycihkZXYsICJmYWlsIGZvciBwcmV2aW91cyBzdGFydCBmYWlsXG4iKTsKKysJ CXJldHVybiAtRUlOVkFMOworKwl9CisrCisrCWRldl9kYmcoZGV2LCAidzoldSxoOiV1XG4iLCB3 LCBoKTsKKysKKysJaWYgKGlzcDRzZF9zZW5kX21ldGFfYnVmKGlzcF9zdWJkZXYpKSB7CisrCQlk ZXZfZXJyKGRldiwgImZhaWwgdG8gc2VuZCBtZXRhIGJ1ZlxuIik7CisrCQlzZW5zb3JfaW5mby0+ c3RhdHVzID0gSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVF9GQUlMOworKwkJcmV0dXJuIC1FSU5W QUw7CisrCX0KKysKKysJc2Vuc29yX2luZm8tPnN0YXR1cyA9IElTUDRTRF9TVEFSVF9TVEFUVVNf T0ZGOworKworKwlpZiAoIXNlbnNvcl9pbmZvLT5zdGFydF9zdHJlYW1fY21kX3NlbnQgJiYKKysJ ICAgIHNlbnNvcl9pbmZvLT5idWZfc2VudF9jbnQgPj0gSVNQNFNEX01JTl9CVUZfQ05UX0JFRl9T VEFSVF9TVFJFQU0pIHsKKysJCWludCByZXQgPSBpc3A0aWZfc2VuZF9jb21tYW5kKGlzcGlmLCBJ U1A0RldfQ01EX0lEX1NUQVJUX1NUUkVBTSwKKysJCQkJCSAgICAgIE5VTEwsIDApOworKwkJaWYg KHJldCkgeworKwkJCWRldl9lcnIoZGV2LCAiZmFpbCB0byBzdGFydCBzdHJlYW1cbiIpOworKwkJ CXJldHVybiByZXQ7CisrCQl9CisrCisrCQlzZW5zb3JfaW5mby0+c3RhcnRfc3RyZWFtX2NtZF9z ZW50ID0gdHJ1ZTsKKysJfSBlbHNlIHsKKysJCWRldl9kYmcoZGV2LAorKwkJCSJubyBzZW5kIFNU QVJUX1NUUkVBTSwgc3RhcnRfc2VudCAldSwgYnVmX3NlbnQgJXVcbiIsCisrCQkJc2Vuc29yX2lu Zm8tPnN0YXJ0X3N0cmVhbV9jbWRfc2VudCwKKysJCQlzZW5zb3JfaW5mby0+YnVmX3NlbnRfY250 KTsKKysJfQorKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBpc3A0c2Rfc2V0dXBf b3V0cHV0KHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwKKysJCQkgICAgICAgc3RydWN0 IHY0bDJfc3ViZGV2X3N0YXRlICpzdGF0ZSwgdTMyIHBhZCkKKyt7CisrCXN0cnVjdCBpc3A0c2Rf b3V0cHV0X2luZm8gKm91dHB1dF9pbmZvID0KKysJCQkmaXNwX3N1YmRldi0+c2Vuc29yX2luZm8u b3V0cHV0X2luZm87CisrCXN0cnVjdCBpc3A0c2Rfc2Vuc29yX2luZm8gKnNlbnNvcl9pbmZvID0g JmlzcF9zdWJkZXYtPnNlbnNvcl9pbmZvOworKwlzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlm ID0gJmlzcF9zdWJkZXYtPmlzcGlmOworKwlzdHJ1Y3QgaXNwNGZ3X2NtZF9zZXRfb3V0X2NoX3By b3AgY21kX2NoX3Byb3A7CisrCXN0cnVjdCBpc3A0ZndfY21kX2VuYWJsZV9vdXRfY2ggY21kX2No X2VuOworKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpc3Bfc3ViZGV2LT5kZXY7CisrCWludCByZXQ7 CisrCisrCWlmIChvdXRwdXRfaW5mby0+c3RhcnRfc3RhdHVzID09IElTUDRTRF9TVEFSVF9TVEFU VVNfU1RBUlRFRCkKKysJCXJldHVybiAwOworKworKwlpZiAob3V0cHV0X2luZm8tPnN0YXJ0X3N0 YXR1cyA9PSBJU1A0U0RfU1RBUlRfU1RBVFVTX1NUQVJUX0ZBSUwpIHsKKysJCWRldl9lcnIoZGV2 LCAiZmFpbCBmb3IgcHJldmlvdXMgc3RhcnQgZmFpbFxuIik7CisrCQlyZXR1cm4gLUVJTlZBTDsK KysJfQorKworKwkvKgorKwkgKiBUaGUgc3RydWN0IHdpbGwgYmUgc2hhcmVkIHdpdGggSVNQIEZX LCB1c2UgbWVtc2V0KCkgdG8gZ3VhcmFudGVlCisrCSAqIHBhZGRpbmcgYml0cyBhcmUgemVyb2Vk LCBzaW5jZSB0aGlzIGlzIG5vdCBndWFyYW50ZWVkIG9uIGFsbAorKwkgKiBjb21waWxlcnMuCisr CSAqLworKwltZW1zZXQoJmNtZF9jaF9wcm9wLCAwLCBzaXplb2YoY21kX2NoX3Byb3ApKTsKKysJ Y21kX2NoX3Byb3AuY2ggPSBJU1A0RldfSVNQX1BJUEVfT1VUX0NIX1BSRVZJRVc7CisrCisrCWlm ICghaXNwNHNkX2dldF9zdHJfb3V0X3Byb3AoaXNwX3N1YmRldiwKKysJCQkJICAgICAmY21kX2No X3Byb3AuaW1hZ2VfcHJvcCwgc3RhdGUsIHBhZCkpIHsKKysJCWRldl9lcnIoZGV2LCAiZmFpbCB0 byBnZXQgb3V0IHByb3BcbiIpOworKwkJcmV0dXJuIC1FSU5WQUw7CisrCX0KKysKKysJZGV2X2Ri ZyhkZXYsICJjaGFubmVsOiVzLGZtdCAlcyx3Omg9JXU6JXUsbHA6JXUsY3AldVxuIiwKKysJCWlz cDRkYmdfZ2V0X291dF9jaF9zdHIoY21kX2NoX3Byb3AuY2gpLAorKwkJaXNwNGRiZ19nZXRfaW1n X2ZtdF9zdHIoY21kX2NoX3Byb3AuaW1hZ2VfcHJvcC5pbWFnZV9mb3JtYXQpLAorKwkJY21kX2No X3Byb3AuaW1hZ2VfcHJvcC53aWR0aCwgY21kX2NoX3Byb3AuaW1hZ2VfcHJvcC5oZWlnaHQsCisr CQljbWRfY2hfcHJvcC5pbWFnZV9wcm9wLmx1bWFfcGl0Y2gsCisrCQljbWRfY2hfcHJvcC5pbWFn ZV9wcm9wLmNocm9tYV9waXRjaCk7CisrCisrCXJldCA9IGlzcDRpZl9zZW5kX2NvbW1hbmQoaXNw aWYsIElTUDRGV19DTURfSURfU0VUX09VVF9DSEFOX1BST1AsCisrCQkJCSAgJmNtZF9jaF9wcm9w LCBzaXplb2YoY21kX2NoX3Byb3ApKTsKKysJaWYgKHJldCkgeworKwkJb3V0cHV0X2luZm8tPnN0 YXJ0X3N0YXR1cyA9IElTUDRTRF9TVEFSVF9TVEFUVVNfU1RBUlRfRkFJTDsKKysJCWRldl9lcnIo ZGV2LCAiZmFpbCB0byBzZXQgb3V0IHByb3BcbiIpOworKwkJcmV0dXJuIHJldDsKKysJfQorKwor KwkvKgorKwkgKiBUaGUgc3RydWN0IHdpbGwgYmUgc2hhcmVkIHdpdGggSVNQIEZXLCB1c2UgbWVt c2V0KCkgdG8gZ3VhcmFudGVlCisrCSAqIHBhZGRpbmcgYml0cyBhcmUgemVyb2VkLCBzaW5jZSB0 aGlzIGlzIG5vdCBndWFyYW50ZWVkIG9uIGFsbAorKwkgKiBjb21waWxlcnMuCisrCSAqLworKwlt ZW1zZXQoJmNtZF9jaF9lbiwgMCwgc2l6ZW9mKGNtZF9jaF9lbikpOworKwljbWRfY2hfZW4uY2gg PSBJU1A0RldfSVNQX1BJUEVfT1VUX0NIX1BSRVZJRVc7CisrCWNtZF9jaF9lbi5pc19lbmFibGUg PSB0cnVlOworKwlyZXQgPSBpc3A0aWZfc2VuZF9jb21tYW5kKGlzcGlmLCBJU1A0RldfQ01EX0lE X0VOQUJMRV9PVVRfQ0hBTiwKKysJCQkJICAmY21kX2NoX2VuLCBzaXplb2YoY21kX2NoX2VuKSk7 CisrCWlmIChyZXQpIHsKKysJCW91dHB1dF9pbmZvLT5zdGFydF9zdGF0dXMgPSBJU1A0U0RfU1RB UlRfU1RBVFVTX1NUQVJUX0ZBSUw7CisrCQlkZXZfZXJyKGRldiwgImZhaWwgdG8gZW5hYmxlIGNo YW5uZWxcbiIpOworKwkJcmV0dXJuIHJldDsKKysJfQorKworKwlkZXZfZGJnKGRldiwgImVuYWJs ZSBjaGFubmVsICVzXG4iLAorKwkJaXNwNGRiZ19nZXRfb3V0X2NoX3N0cihjbWRfY2hfZW4uY2gp KTsKKysKKysJaWYgKCFzZW5zb3JfaW5mby0+c3RhcnRfc3RyZWFtX2NtZF9zZW50KSB7CisrCQly ZXQgPSBpc3A0c2Rfa2lja29mZl9zdHJlYW0oaXNwX3N1YmRldiwKKysJCQkJCSAgICBjbWRfY2hf cHJvcC5pbWFnZV9wcm9wLndpZHRoLAorKwkJCQkJICAgIGNtZF9jaF9wcm9wLmltYWdlX3Byb3Au aGVpZ2h0KTsKKysJCWlmIChyZXQpIHsKKysJCQlkZXZfZXJyKGRldiwgImtpY2tvZmYgc3RyZWFt IGZhaWwgJWRcbiIsIHJldCk7CisrCQkJcmV0dXJuIHJldDsKKysJCX0KKysJCS8qCisrCQkgKiBz ZW5zb3JfaW5mby0+c3RhcnRfc3RyZWFtX2NtZF9zZW50IHdpbGwgYmUgc2V0IHRvIHRydWUKKysJ CSAqIDEuIGluIGlzcDRzZF9raWNrb2ZmX3N0cmVhbSwgaWYgYXBwIGZpcnN0IHNlbmQgYnVmZmVy IHRoZW4KKysJCSAqIHN0YXJ0IHN0cmVhbQorKwkJICogMi4gaW4gaXNwX3NldF9zdHJlYW1fYnVm LCBpZiBhcHAgZmlyc3Qgc3RhcnQgc3RyZWFtLCB0aGVuCisrCQkgKiBzZW5kIGJ1ZmZlciBiZWNh dXNlIElTUCBGVyBoYXMgdGhlIHJlcXVpcmVtZW50LCBob3N0IG5lZWRzCisrCQkgKiB0byBzZW5k IGJ1ZmZlciBiZWZvcmUgc2VuZCBzdGFydCBzdHJlYW0gY21kCisrCQkgKi8KKysJCWlmIChzZW5z b3JfaW5mby0+c3RhcnRfc3RyZWFtX2NtZF9zZW50KSB7CisrCQkJc2Vuc29yX2luZm8tPnN0YXR1 cyA9IElTUDRTRF9TVEFSVF9TVEFUVVNfU1RBUlRFRDsKKysJCQlvdXRwdXRfaW5mby0+c3RhcnRf c3RhdHVzID0gSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVEVEOworKwkJCWRldl9kYmcoZGV2LCAi a2lja29mZiBzdHJlYW0gc3VjLHN0YXJ0IGNtZCBzZW50XG4iKTsKKysJCX0KKysJfSBlbHNlIHsK KysJCWRldl9kYmcoZGV2LCAic3RyZWFtIHJ1bm5pbmcsIG5vIG5lZWQga2lja29mZlxuIik7Cisr CQlvdXRwdXRfaW5mby0+c3RhcnRfc3RhdHVzID0gSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVEVE OworKwl9CisrCisrCWRldl9kYmcoZGV2LCAic2V0dXAgb3V0cHV0IHN1Y1xuIik7CisrCXJldHVy biAwOworK30KKysKKytzdGF0aWMgaW50IGlzcDRzZF9pbml0X3N0cmVhbShzdHJ1Y3QgaXNwNF9z dWJkZXYgKmlzcF9zdWJkZXYpCisreworKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpc3Bfc3ViZGV2 LT5kZXY7CisrCWludCByZXQ7CisrCisrCXJldCA9IGlzcDRzZF9zZXR1cF9md19tZW1fcG9vbChp c3Bfc3ViZGV2KTsKKysJaWYgKHJldCkgeworKwkJZGV2X2VycihkZXYsICJmYWlsIHRvIHNldHVw IGZ3IG1lbSBwb29sXG4iKTsKKysJCXJldHVybiByZXQ7CisrCX0KKysKKysJcmV0ID0gaXNwNHNk X3NldF9zdHJlYW1fcGF0aChpc3Bfc3ViZGV2KTsKKysJaWYgKHJldCkgeworKwkJZGV2X2Vycihk ZXYsICJmYWlsIHRvIHNldHVwIHN0cmVhbSBwYXRoXG4iKTsKKysJCXJldHVybiByZXQ7CisrCX0K KysKKysJcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyB2b2lkIGlzcDRzZF91bmluaXRfc3RyZWFt KHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwKKysJCQkJIHN0cnVjdCB2NGwyX3N1YmRl dl9zdGF0ZSAqc3RhdGUsIHUzMiBwYWQpCisreworKwlzdHJ1Y3QgaXNwNHNkX3NlbnNvcl9pbmZv ICpzZW5zb3JfaW5mbyA9ICZpc3Bfc3ViZGV2LT5zZW5zb3JfaW5mbzsKKysJc3RydWN0IGlzcDRz ZF9vdXRwdXRfaW5mbyAqb3V0cHV0X2luZm8gPSAmc2Vuc29yX2luZm8tPm91dHB1dF9pbmZvOwor KwlzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmID0gJmlzcF9zdWJkZXYtPmlzcGlmOworKwlz dHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmb3JtYXQ7CisrCisrCWZvcm1hdCA9IHY0bDJfc3Vi ZGV2X3N0YXRlX2dldF9mb3JtYXQoc3RhdGUsIHBhZCwgMCk7CisrCWlmICghZm9ybWF0KSB7Cisr CQlkZXZfZXJyKGlzcF9zdWJkZXYtPmRldiwgImZhaWwgdG8gZ2V0IHY0bDIgZm9ybWF0XG4iKTsK KysJfSBlbHNlIHsKKysJCW1lbXNldChmb3JtYXQsIDAsIHNpemVvZigqZm9ybWF0KSk7CisrCQlm b3JtYXQtPmNvZGUgPSBNRURJQV9CVVNfRk1UX1lVWVY4XzFfNVg4OworKwl9CisrCisrCWlzcDRp Zl9jbGVhcl9idWZxKGlzcGlmKTsKKysJaXNwNGlmX2NsZWFyX2NtZHEoaXNwaWYpOworKworKwlz ZW5zb3JfaW5mby0+c3RhcnRfc3RyZWFtX2NtZF9zZW50ID0gZmFsc2U7CisrCXNlbnNvcl9pbmZv LT5idWZfc2VudF9jbnQgPSAwOworKworKwlzZW5zb3JfaW5mby0+c3RhdHVzID0gSVNQNFNEX1NU QVJUX1NUQVRVU19PRkY7CisrCW91dHB1dF9pbmZvLT5zdGFydF9zdGF0dXMgPSBJU1A0U0RfU1RB UlRfU1RBVFVTX09GRjsKKyt9CisrCisrc3RhdGljIHZvaWQgaXNwNHNkX2Z3X3Jlc3BfY21kX2Rv bmUoc3RydWN0IGlzcDRfc3ViZGV2ICppc3Bfc3ViZGV2LAorKwkJCQkgICAgZW51bSBpc3A0aWZf c3RyZWFtX2lkIHN0cmVhbV9pZCwKKysJCQkJICAgIHN0cnVjdCBpc3A0ZndfcmVzcF9jbWRfZG9u ZSAqcGFyYSkKKyt7CisrCXN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYgPSAmaXNwX3N1YmRl di0+aXNwaWY7CisrCXN0cnVjdCBpc3A0aWZfY21kX2VsZW1lbnQgKmVsZSA9CisrCQlpc3A0aWZf cm1fY21kX2Zyb21fY21kcShpc3BpZiwgcGFyYS0+Y21kX3NlcV9udW0sIHBhcmEtPmNtZF9pZCk7 CisrCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlzcF9zdWJkZXYtPmRldjsKKysKKysJZGV2X2RiZyhk ZXYsICJzdHJlYW0gJWQsY21kICVzKDB4JTA4eCkoJWQpLHNlcSAldSwgZWxlICVwXG4iLAorKwkJ c3RyZWFtX2lkLAorKwkJaXNwNGRiZ19nZXRfY21kX3N0cihwYXJhLT5jbWRfaWQpLAorKwkJcGFy YS0+Y21kX2lkLCBwYXJhLT5jbWRfc3RhdHVzLCBwYXJhLT5jbWRfc2VxX251bSwKKysJCWVsZSk7 CisrCisrCWlmIChlbGUpIHsKKysJCWNvbXBsZXRlKCZlbGUtPmNtZF9kb25lKTsKKysJCWlmIChh dG9taWNfZGVjX2FuZF90ZXN0KCZlbGUtPnJlZmNudCkpCisrCQkJa2ZyZWUoZWxlKTsKKysJfQor K30KKysKKytzdGF0aWMgc3RydWN0IGlzcDRmd19tZXRhX2luZm8gKgorK2lzcDRzZF9nZXRfbWV0 YV9ieV9tYyhzdHJ1Y3QgaXNwNF9zdWJkZXYgKmlzcF9zdWJkZXYsIHU2NCBtYykKKyt7CisrCWZv ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSVNQNElGX01BWF9TVFJFQU1fQlVGX0NPVU5UOyBp KyspIHsKKysJCXN0cnVjdCBpc3A0aWZfZ3B1X21lbV9pbmZvICptZXRhX2luZm9fYnVmID0KKysJ CQkJaXNwX3N1YmRldi0+aXNwaWYubWV0YV9pbmZvX2J1ZltpXTsKKysKKysJCWlmIChtZXRhX2lu Zm9fYnVmLT5ncHVfbWNfYWRkciA9PSBtYykKKysJCQlyZXR1cm4gbWV0YV9pbmZvX2J1Zi0+c3lz X2FkZHI7CisrCX0KKysKKysJcmV0dXJuIE5VTEw7CisrfQorKworK3N0YXRpYyB2b2lkIGlzcDRz ZF9zZW5kX21ldGFfaW5mbyhzdHJ1Y3QgaXNwNF9zdWJkZXYgKmlzcF9zdWJkZXYsCisrCQkJCSAg dTY0IG1ldGFfaW5mb19tYykKKyt7CisrCXN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYgPSAm aXNwX3N1YmRldi0+aXNwaWY7CisrCXN0cnVjdCBpc3A0ZndfY21kX3NlbmRfYnVmZmVyIGJ1Zl90 eXBlOworKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpc3Bfc3ViZGV2LT5kZXY7CisrCisrCWlmIChp c3Bfc3ViZGV2LT5zZW5zb3JfaW5mby5zdGF0dXMgIT0gSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFS VEVEKSB7CisrCQlkZXZfd2FybihkZXYsICJub3Qgd29ya2luZyBzdGF0dXMgJWksIG1ldGFfaW5m byAweCVsbHhcbiIsCisrCQkJIGlzcF9zdWJkZXYtPnNlbnNvcl9pbmZvLnN0YXR1cywgbWV0YV9p bmZvX21jKTsKKysJCXJldHVybjsKKysJfQorKworKwkvKgorKwkgKiBUaGUgc3RydWN0IHdpbGwg YmUgc2hhcmVkIHdpdGggSVNQIEZXLCB1c2UgbWVtc2V0KCkgdG8gZ3VhcmFudGVlCisrCSAqIHBh ZGRpbmcgYml0cyBhcmUgemVyb2VkLCBzaW5jZSB0aGlzIGlzIG5vdCBndWFyYW50ZWVkIG9uIGFs bAorKwkgKiBjb21waWxlcnMuCisrCSAqLworKwltZW1zZXQoJmJ1Zl90eXBlLCAwLCBzaXplb2Yo YnVmX3R5cGUpKTsKKysJYnVmX3R5cGUuYnVmZmVyX3R5cGUgPSBJU1A0RldfQlVGRkVSX1RZUEVf TUVUQV9JTkZPOworKwlidWZfdHlwZS5idWZmZXIudm1pZF9zcGFjZS5iaXQuc3BhY2UgPSBJU1A0 RldfQUREUl9TUEFDRV9UWVBFX0dQVV9WQTsKKysJaXNwNGlmX3NwbGl0X2FkZHI2NChtZXRhX2lu Zm9fbWMsCisrCQkJICAgICZidWZfdHlwZS5idWZmZXIuYnVmX2Jhc2VfYV9sbywKKysJCQkgICAg JmJ1Zl90eXBlLmJ1ZmZlci5idWZfYmFzZV9hX2hpKTsKKysJYnVmX3R5cGUuYnVmZmVyLmJ1Zl9z aXplX2EgPSBJU1A0U0RfTUVUQV9CVUZfU0laRTsKKysKKysJaWYgKGlzcDRpZl9zZW5kX2NvbW1h bmQoaXNwaWYsIElTUDRGV19DTURfSURfU0VORF9CVUZGRVIsCisrCQkJCSZidWZfdHlwZSwgc2l6 ZW9mKGJ1Zl90eXBlKSkpCisrCQlkZXZfZXJyKGRldiwgImZhaWwgc2VuZCBtZXRhX2luZm8gMHgl bGx4XG4iLAorKwkJCW1ldGFfaW5mb19tYyk7CisrCWVsc2UKKysJCWRldl9kYmcoZGV2LCAicmVz ZW5kIG1ldGFfaW5mbyAweCVsbHhcbiIsIG1ldGFfaW5mb19tYyk7CisrfQorKworK3N0YXRpYyB2 b2lkIGlzcDRzZF9md19yZXNwX2ZyYW1lX2RvbmUoc3RydWN0IGlzcDRfc3ViZGV2ICppc3Bfc3Vi ZGV2LAorKwkJCQkgICAgICBlbnVtIGlzcDRpZl9zdHJlYW1faWQgc3RyZWFtX2lkLAorKwkJCQkg ICAgICBzdHJ1Y3QgaXNwNGZ3X3Jlc3BfcGFyYW1fcGFja2FnZSAqcGFyYSkKKyt7CisrCXN0cnVj dCBpc3A0X2ludGVyZmFjZSAqaXNwaWYgPSAmaXNwX3N1YmRldi0+aXNwaWY7CisrCXN0cnVjdCBk ZXZpY2UgKmRldiA9IGlzcF9zdWJkZXYtPmRldjsKKysJc3RydWN0IGlzcDRpZl9pbWdfYnVmX25v ZGUgKnByZXY7CisrCXN0cnVjdCBpc3A0ZndfbWV0YV9pbmZvICptZXRhOworKwl1NjQgbWM7Cisr CisrCW1jID0gaXNwNGlmX2pvaW5fYWRkcjY0KHBhcmEtPnBhY2thZ2VfYWRkcl9sbywgcGFyYS0+ cGFja2FnZV9hZGRyX2hpKTsKKysJbWV0YSA9IGlzcDRzZF9nZXRfbWV0YV9ieV9tYyhpc3Bfc3Vi ZGV2LCBtYyk7CisrCWlmICghbWV0YSkgeworKwkJZGV2X2VycihkZXYsICJmYWlsIHRvIGdldCBt ZXRhIGZyb20gbWMgJWxseFxuIiwgbWMpOworKwkJcmV0dXJuOworKwl9CisrCisrCWRldl9kYmco ZGV2LCAidHM6JWxsdSxzdHJlYW1JZDolZCxwb2M6JXUscHJldmlld19lbjoldSxzdGF0dXM6JXMo JWkpXG4iLAorKwkJa3RpbWVfZ2V0X25zKCksIHN0cmVhbV9pZCwgbWV0YS0+cG9jLCBtZXRhLT5w cmV2aWV3LmVuYWJsZWQsCisrCQlpc3A0ZGJnX2dldF9idWZfZG9uZV9zdHIobWV0YS0+cHJldmll dy5zdGF0dXMpLAorKwkJbWV0YS0+cHJldmlldy5zdGF0dXMpOworKworKwlpZiAobWV0YS0+cHJl dmlldy5lbmFibGVkICYmCisrCSAgICAobWV0YS0+cHJldmlldy5zdGF0dXMgPT0gSVNQNEZXX0JV RkZFUl9TVEFUVVNfU0tJUFBFRCB8fAorKwkgICAgIG1ldGEtPnByZXZpZXcuc3RhdHVzID09IElT UDRGV19CVUZGRVJfU1RBVFVTX0RPTkUgfHwKKysJICAgICBtZXRhLT5wcmV2aWV3LnN0YXR1cyA9 PSBJU1A0RldfQlVGRkVSX1NUQVRVU19ESVJUWSkpIHsKKysJCXByZXYgPSBpc3A0aWZfZGVxdWV1 ZV9idWZmZXIoaXNwaWYpOworKwkJaWYgKHByZXYpIHsKKysJCQlpc3A0ZGJnX3Nob3dfYnVmbWV0 YV9pbmZvKGRldiwgInByZXYiLCAmbWV0YS0+cHJldmlldywKKysJCQkJCQkgICZwcmV2LT5idWZf aW5mbyk7CisrCQkJaXNwNHZpZF9oYW5kbGVfZnJhbWVfZG9uZSgmaXNwX3N1YmRldi0+aXNwX3Zk ZXYsCisrCQkJCQkJICAmcHJldi0+YnVmX2luZm8pOworKwkJCWlzcDRpZl9kZWFsbG9jX2J1ZmZl cl9ub2RlKHByZXYpOworKwkJfSBlbHNlIHsKKysJCQlkZXZfZXJyKGRldiwgImZhaWwgbnVsbCBw cmV2IGJ1ZlxuIik7CisrCQl9CisrCX0gZWxzZSBpZiAobWV0YS0+cHJldmlldy5lbmFibGVkKSB7 CisrCQlkZXZfZXJyKGRldiwgImZhaWwgYmFkIHByZXZpZXcgc3RhdHVzICV1KCVzKVxuIiwKKysJ CQltZXRhLT5wcmV2aWV3LnN0YXR1cywKKysJCQlpc3A0ZGJnX2dldF9idWZfZG9uZV9zdHIobWV0 YS0+cHJldmlldy5zdGF0dXMpKTsKKysJfQorKworKwlpZiAoaXNwX3N1YmRldi0+c2Vuc29yX2lu Zm8uc3RhdHVzID09IElTUDRTRF9TVEFSVF9TVEFUVVNfU1RBUlRFRCkKKysJCWlzcDRzZF9zZW5k X21ldGFfaW5mbyhpc3Bfc3ViZGV2LCBtYyk7CisrCisrCWRldl9kYmcoZGV2LCAic3RyZWFtX2lk OiVkLCBzdGF0dXM6JWRcbiIsIHN0cmVhbV9pZCwKKysJCWlzcF9zdWJkZXYtPnNlbnNvcl9pbmZv LnN0YXR1cyk7CisrfQorKworK3N0YXRpYyB2b2lkIGlzcDRzZF9md19yZXNwX2Z1bmMoc3RydWN0 IGlzcDRfc3ViZGV2ICppc3Bfc3ViZGV2LAorKwkJCQllbnVtIGlzcDRpZl9zdHJlYW1faWQgc3Ry ZWFtX2lkKQorK3sKKysJc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiA9ICZpc3Bfc3ViZGV2 LT5pc3BpZjsKKysJc3RydWN0IGRldmljZSAqZGV2ID0gaXNwX3N1YmRldi0+ZGV2OworKwlzdHJ1 Y3QgaXNwNGZ3X3Jlc3AgcmVzcDsKKysKKysJaWYgKHN0cmVhbV9pZCA9PSBJU1A0SUZfU1RSRUFN X0lEXzEpCisrCQlpc3BfZndfbG9nX3ByaW50KGlzcF9zdWJkZXYpOworKworKwl3aGlsZSAodHJ1 ZSkgeworKwkJaWYgKGlzcDRpZl9mMmhfcmVzcChpc3BpZiwgc3RyZWFtX2lkLCAmcmVzcCkpIHsK KysJCQkvKiBSZS1lbmFibGUgdGhlIGludGVycnVwdCAqLworKwkJCWlzcDRfaW50cl9lbmFibGUo aXNwX3N1YmRldiwgc3RyZWFtX2lkLCB0cnVlKTsKKysJCQkvKgorKwkJCSAqIFJlY2hlY2sgdG8g c2VlIGlmIHRoZXJlIGlzIGEgbmV3IHJlc3BvbnNlLgorKwkJCSAqIFRvIGVuc3VyZSB0aGF0IGFu IGluLWZsaWdodCBpbnRlcnJ1cHQgaXMgbm90IGxvc3QsCisrCQkJICogZW5hYmxpbmcgdGhlIGlu dGVycnVwdCBtdXN0IG9jY3VyIF9iZWZvcmVfIGNoZWNraW5nCisrCQkJICogZm9yIGEgbmV3IHJl c3BvbnNlLCBoZW5jZSBhIG1lbW9yeSBiYXJyaWVyIGlzIG5lZWRlZC4KKysJCQkgKiBEaXNhYmxl IHRoZSBpbnRlcnJ1cHQgYWdhaW4gaWYgdGhlcmUgd2FzIGEgbmV3CisrCQkJICogcmVzcG9uc2Uu CisrCQkJICovCisrCQkJbWIoKTsKKysJCQlpZiAobGlrZWx5KGlzcDRpZl9mMmhfcmVzcChpc3Bp Ziwgc3RyZWFtX2lkLCAmcmVzcCkpKQorKwkJCQlicmVhazsKKysKKysJCQlpc3A0X2ludHJfZW5h YmxlKGlzcF9zdWJkZXYsIHN0cmVhbV9pZCwgZmFsc2UpOworKwkJfQorKworKwkJc3dpdGNoIChy ZXNwLnJlc3BfaWQpIHsKKysJCWNhc2UgSVNQNEZXX1JFU1BfSURfQ01EX0RPTkU6CisrCQkJaXNw NHNkX2Z3X3Jlc3BfY21kX2RvbmUoaXNwX3N1YmRldiwgc3RyZWFtX2lkLAorKwkJCQkJCSZyZXNw LnBhcmFtLmNtZF9kb25lKTsKKysJCQlicmVhazsKKysJCWNhc2UgSVNQNEZXX1JFU1BfSURfTk9U SV9GUkFNRV9ET05FOgorKwkJCWlzcDRzZF9md19yZXNwX2ZyYW1lX2RvbmUoaXNwX3N1YmRldiwg c3RyZWFtX2lkLAorKwkJCQkJCSAgJnJlc3AucGFyYW0uZnJhbWVfZG9uZSk7CisrCQkJYnJlYWs7 CisrCQlkZWZhdWx0OgorKwkJCWRldl9lcnIoZGV2LCAiLT48LSBmYWlsIHJlc3BpZCAlcygweCV4 KVxuIiwKKysJCQkJaXNwNGRiZ19nZXRfcmVzcF9zdHIocmVzcC5yZXNwX2lkKSwKKysJCQkJcmVz cC5yZXNwX2lkKTsKKysJCQlicmVhazsKKysJCX0KKysJfQorK30KKysKKytzdGF0aWMgczMyIGlz cDRzZF9md19yZXNwX3RocmVhZCh2b2lkICpjb250ZXh0KQorK3sKKysJc3RydWN0IGlzcDRfc3Vi ZGV2X3RocmVhZF9wYXJhbSAqcGFyYSA9IGNvbnRleHQ7CisrCXN0cnVjdCBpc3A0X3N1YmRldiAq aXNwX3N1YmRldiA9IHBhcmEtPmlzcF9zdWJkZXY7CisrCXN0cnVjdCBpc3A0c2RfdGhyZWFkX2hh bmRsZXIgKnRocmVhZF9jdHggPQorKwkJCSZpc3Bfc3ViZGV2LT5md19yZXNwX3RocmVhZFtwYXJh LT5pZHhdOworKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpc3Bfc3ViZGV2LT5kZXY7CisrCisrCWRl dl9kYmcoZGV2LCAiWyV1XSBmdyByZXNwIHRocmVhZCBzdGFydGVkXG4iLCBwYXJhLT5pZHgpOwor Kwl3aGlsZSAodHJ1ZSkgeworKwkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKHRocmVhZF9jdHgt PndhaXRxLAorKwkJCQkJIHRocmVhZF9jdHgtPnJlc3BfcmVhZHkpOworKwkJdGhyZWFkX2N0eC0+ cmVzcF9yZWFkeSA9IGZhbHNlOworKworKwkJaWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSkgewor KwkJCWRldl9kYmcoZGV2LCAiWyV1XSBmdyByZXNwIHRocmVhZCBxdWl0XG4iLCBwYXJhLT5pZHgp OworKwkJCWJyZWFrOworKwkJfQorKworKwkJaXNwNHNkX2Z3X3Jlc3BfZnVuYyhpc3Bfc3ViZGV2 LCBwYXJhLT5pZHgpOworKwl9CisrCisrCXJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50IGlz cDRzZF9zdG9wX3Jlc3BfcHJvY190aHJlYWRzKHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRl dikKKyt7CisrCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSVNQNFNEX01BWF9GV19SRVNQ X1NUUkVBTV9OVU07IGkrKykgeworKwkJc3RydWN0IGlzcDRzZF90aHJlYWRfaGFuZGxlciAqdGhy ZWFkX2N0eCA9CisrCQkJCSZpc3Bfc3ViZGV2LT5md19yZXNwX3RocmVhZFtpXTsKKysKKysJCWlm ICh0aHJlYWRfY3R4LT50aHJlYWQpIHsKKysJCQlrdGhyZWFkX3N0b3AodGhyZWFkX2N0eC0+dGhy ZWFkKTsKKysJCQl0aHJlYWRfY3R4LT50aHJlYWQgPSBOVUxMOworKwkJfQorKwl9CisrCisrCXJl dHVybiAwOworK30KKysKKytzdGF0aWMgaW50IGlzcDRzZF9zdGFydF9yZXNwX3Byb2NfdGhyZWFk cyhzdHJ1Y3QgaXNwNF9zdWJkZXYgKmlzcF9zdWJkZXYpCisreworKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBpc3Bfc3ViZGV2LT5kZXY7CisrCisrCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg SVNQNFNEX01BWF9GV19SRVNQX1NUUkVBTV9OVU07IGkrKykgeworKwkJc3RydWN0IGlzcDRzZF90 aHJlYWRfaGFuZGxlciAqdGhyZWFkX2N0eCA9CisrCQkJCSZpc3Bfc3ViZGV2LT5md19yZXNwX3Ro cmVhZFtpXTsKKysKKysJCWlzcF9zdWJkZXYtPmlzcF9yZXNwX3BhcmFbaV0uaWR4ID0gaTsKKysJ CWlzcF9zdWJkZXYtPmlzcF9yZXNwX3BhcmFbaV0uaXNwX3N1YmRldiA9IGlzcF9zdWJkZXY7Cisr CQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ0aHJlYWRfY3R4LT53YWl0cSk7CisrCQl0aHJlYWRfY3R4 LT5yZXNwX3JlYWR5ID0gZmFsc2U7CisrCisrCQl0aHJlYWRfY3R4LT50aHJlYWQgPSBrdGhyZWFk X3J1bihpc3A0c2RfZndfcmVzcF90aHJlYWQsCisrCQkJCQkJICZpc3Bfc3ViZGV2LT5pc3BfcmVz cF9wYXJhW2ldLAorKwkJCQkJCSBpc3A0c2RfdGhyZWFkX25hbWVbaV0pOworKwkJaWYgKElTX0VS Uih0aHJlYWRfY3R4LT50aHJlYWQpKSB7CisrCQkJZGV2X2VycihkZXYsICJjcmVhdGUgdGhyZWFk IFslZF0gZmFpbFxuIiwgaSk7CisrCQkJdGhyZWFkX2N0eC0+dGhyZWFkID0gTlVMTDsKKysJCQlp c3A0c2Rfc3RvcF9yZXNwX3Byb2NfdGhyZWFkcyhpc3Bfc3ViZGV2KTsKKysJCQlyZXR1cm4gLUVJ TlZBTDsKKysJCX0KKysJfQorKworKwlyZXR1cm4gMDsKKyt9CisrCisraW50IGlzcDRzZF9wd3Jv ZmZfYW5kX2RlaW5pdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQorK3sKKysJc3RydWN0IGlzcDRf c3ViZGV2ICppc3Bfc3ViZGV2ID0gdG9faXNwNF9zdWJkZXYoc2QpOworKwlzdHJ1Y3QgaXNwNHNk X3NlbnNvcl9pbmZvICpzZW5zb3JfaW5mbyA9ICZpc3Bfc3ViZGV2LT5zZW5zb3JfaW5mbzsKKysJ dW5zaWduZWQgaW50IHBlcmZfc3RhdGUgPSBJU1A0U0RfUEVSRk9STUFOQ0VfU1RBVEVfTE9XOwor KwlzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmID0gJmlzcF9zdWJkZXYtPmlzcGlmOworKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSBpc3Bfc3ViZGV2LT5kZXY7CisrCWludCByZXQ7CisrCisrCWd1 YXJkKG11dGV4KSgmaXNwX3N1YmRldi0+b3BzX211dGV4KTsKKysJaWYgKHNlbnNvcl9pbmZvLT5z dGF0dXMgPT0gSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVEVEKSB7CisrCQlkZXZfZXJyKGRldiwg ImZhaWwgZm9yIHN0cmVhbSBzdGlsbCBydW5uaW5nXG4iKTsKKysJCXJldHVybiAtRUlOVkFMOwor Kwl9CisrCisrCXNlbnNvcl9pbmZvLT5zdGF0dXMgPSBJU1A0U0RfU1RBUlRfU1RBVFVTX09GRjsK KysKKysJaWYgKGlzcF9zdWJkZXYtPmlycV9lbmFibGVkKSB7CisrCQlmb3IgKHVuc2lnbmVkIGlu dCBpID0gMDsgaSA8IElTUDRTRF9NQVhfRldfUkVTUF9TVFJFQU1fTlVNOyBpKyspCisrCQkJZGlz YWJsZV9pcnEoaXNwX3N1YmRldi0+aXJxW2ldKTsKKysJCWlzcF9zdWJkZXYtPmlycV9lbmFibGVk ID0gZmFsc2U7CisrCX0KKysKKysJaXNwNHNkX3N0b3BfcmVzcF9wcm9jX3RocmVhZHMoaXNwX3N1 YmRldik7CisrCWRldl9kYmcoZGV2LCAiaXNwX3N1YmRldiBzdG9wIHJlc3AgcHJvYyB0aHJlYWRz IHN1Y1xuIik7CisrCisrCWlzcDRpZl9zdG9wKGlzcGlmKTsKKysKKysJcmV0ID0gZGV2X3BtX2dl bnBkX3NldF9wZXJmb3JtYW5jZV9zdGF0ZShkZXYsIHBlcmZfc3RhdGUpOworKwlpZiAocmV0KQor KwkJZGV2X2VycihkZXYsCisrCQkJImZhaWwgdG8gc2V0IGlzcF9zdWJkZXYgcGVyZm9ybWFuY2Ug c3RhdGUgJXUscmV0ICVkXG4iLAorKwkJCXBlcmZfc3RhdGUsIHJldCk7CisrCisrCS8qIGhvbGQg Y2NwdSByZXNldCAqLworKwlpc3A0aHdfd3JlZyhpc3Bfc3ViZGV2LT5tbWlvLCBJU1BfU09GVF9S RVNFVCwgMCk7CisrCWlzcDRod193cmVnKGlzcF9zdWJkZXYtPm1taW8sIElTUF9QT1dFUl9TVEFU VVMsIDApOworKwlyZXQgPSBwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7CisrCWlmIChyZXQpCisr CQlkZXZfZXJyKGRldiwgInBvd2VyIG9mZiBpc3Bfc3ViZGV2IGZhaWwgJWRcbiIsIHJldCk7Cisr CWVsc2UKKysJCWRldl9kYmcoZGV2LCAicG93ZXIgb2ZmIGlzcF9zdWJkZXYgc3VjXG4iKTsKKysK KysJaXNwaWYtPnN0YXR1cyA9IElTUDRJRl9TVEFUVVNfUFdSX09GRjsKKysJaXNwNGlmX2NsZWFy X2NtZHEoaXNwaWYpOworKwlpc3A0c2RfbW9kdWxlX2VuYWJsZShpc3Bfc3ViZGV2LCBmYWxzZSk7 CisrCisrCS8qCisrCSAqIFdoZW4gb3BlbmluZyB0aGUgY2FtZXJhLCBpc3A0c2RfbW9kdWxlX2Vu YWJsZShpc3Bfc3ViZGV2LCB0cnVlKSBpcworKwkgKiBjYWxsZWQuIEhhcmR3YXJlIHJlcXVpcmVz IGF0IGxlYXN0IGEgMjBtcyBkZWxheSBiZXR3ZWVuIGRpc2FibGluZworKwkgKiBhbmQgZW5hYmxp bmcgdGhlIG1vZHVsZSwgc28gYSBzbGVlcCBpcyBhZGRlZCB0byBlbnN1cmUgSVNQIHN0YWJpbGl0 eQorKwkgKiBkdXJpbmcgcXVpY2sgcmVvcGVuIHNjZW5hcmlvcy4KKysJICovCisrCW1zbGVlcCgy MCk7CisrCisrCXJldHVybiAwOworK30KKysKKytpbnQgaXNwNHNkX3B3cm9uX2FuZF9pbml0KHN0 cnVjdCB2NGwyX3N1YmRldiAqc2QpCisreworKwlzdHJ1Y3QgaXNwNF9zdWJkZXYgKmlzcF9zdWJk ZXYgPSB0b19pc3A0X3N1YmRldihzZCk7CisrCXN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYg PSAmaXNwX3N1YmRldi0+aXNwaWY7CisrCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlzcF9zdWJkZXYt PmRldjsKKysJaW50IHJldDsKKysKKysJZ3VhcmQobXV0ZXgpKCZpc3Bfc3ViZGV2LT5vcHNfbXV0 ZXgpOworKwlpZiAoaXNwaWYtPnN0YXR1cyA9PSBJU1A0SUZfU1RBVFVTX0ZXX1JVTk5JTkcpIHsK KysJCWRldl9kYmcoZGV2LCAiY2FtZXJhIGFscmVhZHkgb3BlbmVkLCBkbyBub3RoaW5nXG4iKTsK KysJCXJldHVybiAwOworKwl9CisrCisrCWlzcDRzZF9tb2R1bGVfZW5hYmxlKGlzcF9zdWJkZXYs IHRydWUpOworKworKwlpZiAoaXNwaWYtPnN0YXR1cyA8IElTUDRJRl9TVEFUVVNfUFdSX09OKSB7 CisrCQl1bnNpZ25lZCBpbnQgcGVyZl9zdGF0ZSA9IElTUDRTRF9QRVJGT1JNQU5DRV9TVEFURV9I SUdIOworKworKwkJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChkZXYpOworKwkJaWYg KHJldCkgeworKwkJCWRldl9lcnIoZGV2LCAiZmFpbCB0byBwb3dlciBvbiBpc3Bfc3ViZGV2IHJl dCAlZFxuIiwKKysJCQkJcmV0KTsKKysJCQlnb3RvIGVycl9kZWluaXQ7CisrCQl9CisrCisrCQkv KiBJU1BQRyBJU1AgUG93ZXIgU3RhdHVzICovCisrCQlpc3A0aHdfd3JlZyhpc3Bfc3ViZGV2LT5t bWlvLCBJU1BfUE9XRVJfU1RBVFVTLCAweDdGRik7CisrCQlyZXQgPSBkZXZfcG1fZ2VucGRfc2V0 X3BlcmZvcm1hbmNlX3N0YXRlKGRldiwgcGVyZl9zdGF0ZSk7CisrCQlpZiAocmV0KSB7CisrCQkJ ZGV2X2VycihkZXYsCisrCQkJCSJmYWlsIHRvIHNldCBwZXJmb3JtYW5jZSBzdGF0ZSAldSwgcmV0 ICVkXG4iLAorKwkJCQlwZXJmX3N0YXRlLCByZXQpOworKwkJCWdvdG8gZXJyX2RlaW5pdDsKKysJ CX0KKysKKysJCWlzcGlmLT5zdGF0dXMgPSBJU1A0SUZfU1RBVFVTX1BXUl9PTjsKKysJfQorKwor Kwlpc3Bfc3ViZGV2LT5zZW5zb3JfaW5mby5zdGFydF9zdHJlYW1fY21kX3NlbnQgPSBmYWxzZTsK KysJaXNwX3N1YmRldi0+c2Vuc29yX2luZm8uYnVmX3NlbnRfY250ID0gMDsKKysKKysJcmV0ID0g aXNwNGlmX3N0YXJ0KGlzcGlmKTsKKysJaWYgKHJldCkgeworKwkJZGV2X2VycihkZXYsICJmYWls IHRvIHN0YXJ0IGlzcF9zdWJkZXYgaW50ZXJmYWNlXG4iKTsKKysJCWdvdG8gZXJyX2RlaW5pdDsK KysJfQorKworKwlpZiAoaXNwNHNkX3N0YXJ0X3Jlc3BfcHJvY190aHJlYWRzKGlzcF9zdWJkZXYp KSB7CisrCQlkZXZfZXJyKGRldiwgImlzcF9zdGFydF9yZXNwX3Byb2NfdGhyZWFkcyBmYWlsXG4i KTsKKysJCWdvdG8gZXJyX2RlaW5pdDsKKysJfQorKworKwlkZXZfZGJnKGRldiwgImNyZWF0ZSBy ZXNwIHRocmVhZHMgb2tcbiIpOworKworKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IElT UDRTRF9NQVhfRldfUkVTUF9TVFJFQU1fTlVNOyBpKyspCisrCQllbmFibGVfaXJxKGlzcF9zdWJk ZXYtPmlycVtpXSk7CisrCWlzcF9zdWJkZXYtPmlycV9lbmFibGVkID0gdHJ1ZTsKKysKKysJcmV0 dXJuIDA7CisrZXJyX2RlaW5pdDoKKysJaXNwNHNkX3B3cm9mZl9hbmRfZGVpbml0KHNkKTsKKysJ cmV0dXJuIC1FSU5WQUw7CisrfQorKworK3N0YXRpYyBpbnQgaXNwNHNkX3N0b3Bfc3RyZWFtKHN0 cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwKKysJCQkgICAgICBzdHJ1Y3QgdjRsMl9zdWJk ZXZfc3RhdGUgKnN0YXRlLCB1MzIgcGFkKQorK3sKKysJc3RydWN0IGlzcDRzZF9zZW5zb3JfaW5m byAqc2Vuc29yX2luZm8gPSAmaXNwX3N1YmRldi0+c2Vuc29yX2luZm87CisrCXN0cnVjdCBpc3A0 c2Rfb3V0cHV0X2luZm8gKm91dHB1dF9pbmZvID0gJnNlbnNvcl9pbmZvLT5vdXRwdXRfaW5mbzsK KysJc3RydWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiA9ICZpc3Bfc3ViZGV2LT5pc3BpZjsKKysJ c3RydWN0IGRldmljZSAqZGV2ID0gaXNwX3N1YmRldi0+ZGV2OworKworKwlndWFyZChtdXRleCko JmlzcF9zdWJkZXYtPm9wc19tdXRleCk7CisrCWRldl9kYmcoZGV2LCAic3RhdHVzICVpXG4iLCBv dXRwdXRfaW5mby0+c3RhcnRfc3RhdHVzKTsKKysKKysJaWYgKG91dHB1dF9pbmZvLT5zdGFydF9z dGF0dXMgPT0gSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVEVEKSB7CisrCQlzdHJ1Y3QgaXNwNGZ3 X2NtZF9lbmFibGVfb3V0X2NoIGNtZF9jaF9kaXNhYmxlOworKwkJaW50IHJldDsKKysKKysJCS8q CisrCQkgKiBUaGUgc3RydWN0IHdpbGwgYmUgc2hhcmVkIHdpdGggSVNQIEZXLCB1c2UgbWVtc2V0 KCkgdG8KKysJCSAqIGd1YXJhbnRlZSBwYWRkaW5nIGJpdHMgYXJlIHplcm9lZCwgc2luY2UgdGhp cyBpcyBub3QKKysJCSAqIGd1YXJhbnRlZWQgb24gYWxsIGNvbXBpbGVycy4KKysJCSAqLworKwkJ bWVtc2V0KCZjbWRfY2hfZGlzYWJsZSwgMCwgc2l6ZW9mKGNtZF9jaF9kaXNhYmxlKSk7CisrCQlj bWRfY2hfZGlzYWJsZS5jaCA9IElTUDRGV19JU1BfUElQRV9PVVRfQ0hfUFJFVklFVzsKKysJCS8q IGBjbWRfY2hfZGlzYWJsZS5pc19lbmFibGVgIGlzIGFscmVhZHkgZmFsc2UgKi8KKysJCXJldCA9 IGlzcDRpZl9zZW5kX2NvbW1hbmRfc3luYyhpc3BpZiwKKysJCQkJCSAgICAgICBJU1A0RldfQ01E X0lEX0VOQUJMRV9PVVRfQ0hBTiwKKysJCQkJCSAgICAgICAmY21kX2NoX2Rpc2FibGUsCisrCQkJ CQkgICAgICAgc2l6ZW9mKGNtZF9jaF9kaXNhYmxlKSk7CisrCQlpZiAocmV0KQorKwkJCWRldl9l cnIoZGV2LCAiZmFpbCB0byBkaXNhYmxlIHN0cmVhbVxuIik7CisrCQllbHNlCisrCQkJZGV2X2Ri ZyhkZXYsICJ3YWl0IGRpc2FibGUgc3RyZWFtIHN1Y1xuIik7CisrCisrCQlyZXQgPSBpc3A0aWZf c2VuZF9jb21tYW5kX3N5bmMoaXNwaWYsIElTUDRGV19DTURfSURfU1RPUF9TVFJFQU0sCisrCQkJ CQkgICAgICAgTlVMTCwgMCk7CisrCQlpZiAocmV0KQorKwkJCWRldl9lcnIoZGV2LCAiZmFpbCB0 byBzdG9wIHN0cmVhbVxuIik7CisrCQllbHNlCisrCQkJZGV2X2RiZyhkZXYsICJ3YWl0IHN0b3Ag c3RyZWFtIHN1Y1xuIik7CisrCX0KKysKKysJaXNwNHNkX3VuaW5pdF9zdHJlYW0oaXNwX3N1YmRl diwgc3RhdGUsIHBhZCk7CisrCisrCS8qCisrCSAqIFJldHVybiBzdWNjZXNzIHRvIGVuc3VyZSB0 aGUgc3RvcCBwcm9jZXNzIHByb2NlZWRzLAorKwkgKiBhbmQgZGlzcmVnYXJkIGFueSBlcnJvcnMg c2luY2UgdGhleSBhcmUgbm90IGZhdGFsLgorKwkgKi8KKysJcmV0dXJuIDA7CisrfQorKworK3N0 YXRpYyBpbnQgaXNwNHNkX3N0YXJ0X3N0cmVhbShzdHJ1Y3QgaXNwNF9zdWJkZXYgKmlzcF9zdWJk ZXYsCisrCQkJICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGUsIHUzMiBwYWQp CisreworKwlzdHJ1Y3QgaXNwNHNkX291dHB1dF9pbmZvICpvdXRwdXRfaW5mbyA9CisrCQkJJmlz cF9zdWJkZXYtPnNlbnNvcl9pbmZvLm91dHB1dF9pbmZvOworKwlzdHJ1Y3QgaXNwNF9pbnRlcmZh Y2UgKmlzcGlmID0gJmlzcF9zdWJkZXYtPmlzcGlmOworKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBp c3Bfc3ViZGV2LT5kZXY7CisrCWludCByZXQ7CisrCisrCWd1YXJkKG11dGV4KSgmaXNwX3N1YmRl di0+b3BzX211dGV4KTsKKysKKysJaWYgKGlzcGlmLT5zdGF0dXMgIT0gSVNQNElGX1NUQVRVU19G V19SVU5OSU5HKSB7CisrCQlkZXZfZXJyKGRldiwgImZhaWwsIGJhZCBmc20gJWRcbiIsIGlzcGlm LT5zdGF0dXMpOworKwkJcmV0dXJuIC1FSU5WQUw7CisrCX0KKysKKysJc3dpdGNoIChvdXRwdXRf aW5mby0+c3RhcnRfc3RhdHVzKSB7CisrCWNhc2UgSVNQNFNEX1NUQVJUX1NUQVRVU19PRkY6Cisr CQlicmVhazsKKysJY2FzZSBJU1A0U0RfU1RBUlRfU1RBVFVTX1NUQVJURUQ6CisrCQlkZXZfZGJn KGRldiwgInN0cmVhbSBhbHJlYWR5IHN0YXJ0ZWQsIGRvIG5vdGhpbmdcbiIpOworKwkJcmV0dXJu IDA7CisrCWNhc2UgSVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVF9GQUlMOgorKwkJZGV2X2Vycihk ZXYsICJzdHJlYW0gcHJldmlvdXNseSBmYWlsZWQgdG8gc3RhcnRcbiIpOworKwkJcmV0dXJuIC1F SU5WQUw7CisrCX0KKysKKysJcmV0ID0gaXNwNHNkX2luaXRfc3RyZWFtKGlzcF9zdWJkZXYpOwor KwlpZiAocmV0KSB7CisrCQlkZXZfZXJyKGRldiwgImZhaWwgdG8gaW5pdCBpc3Bfc3ViZGV2IHN0 cmVhbVxuIik7CisrCQlnb3RvIGVycl9zdG9wX3N0cmVhbTsKKysJfQorKworKwlyZXQgPSBpc3A0 c2Rfc2V0dXBfb3V0cHV0KGlzcF9zdWJkZXYsIHN0YXRlLCBwYWQpOworKwlpZiAocmV0KSB7Cisr CQlkZXZfZXJyKGRldiwgImZhaWwgdG8gc2V0dXAgb3V0cHV0XG4iKTsKKysJCWdvdG8gZXJyX3N0 b3Bfc3RyZWFtOworKwl9CisrCisrCXJldHVybiAwOworKworK2Vycl9zdG9wX3N0cmVhbToKKysJ aXNwNHNkX3N0b3Bfc3RyZWFtKGlzcF9zdWJkZXYsIHN0YXRlLCBwYWQpOworKwlyZXR1cm4gcmV0 OworK30KKysKKytpbnQgaXNwNHNkX2lvY19zZW5kX2ltZ19idWYoc3RydWN0IHY0bDJfc3ViZGV2 ICpzZCwKKysJCQkgICAgc3RydWN0IGlzcDRpZl9pbWdfYnVmX2luZm8gKmJ1Zl9pbmZvKQorK3sK KysJc3RydWN0IGlzcDRfc3ViZGV2ICppc3Bfc3ViZGV2ID0gdG9faXNwNF9zdWJkZXYoc2QpOwor KwlzdHJ1Y3QgaXNwNF9pbnRlcmZhY2UgKmlzcGlmID0gJmlzcF9zdWJkZXYtPmlzcGlmOworKwlz dHJ1Y3QgaXNwNGlmX2ltZ19idWZfbm9kZSAqYnVmX25vZGU7CisrCXN0cnVjdCBkZXZpY2UgKmRl diA9IGlzcF9zdWJkZXYtPmRldjsKKysJaW50IHJldDsKKysKKysJZ3VhcmQobXV0ZXgpKCZpc3Bf c3ViZGV2LT5vcHNfbXV0ZXgpOworKworKwlpZiAoaXNwaWYtPnN0YXR1cyAhPSBJU1A0SUZfU1RB VFVTX0ZXX1JVTk5JTkcpIHsKKysJCWRldl9lcnIoZGV2LCAiZmFpbCBzZW5kIGltZyBidWYgZm9y IGJhZCBmc20gJWRcbiIsCisrCQkJaXNwaWYtPnN0YXR1cyk7CisrCQlyZXR1cm4gLUVJTlZBTDsK KysJfQorKworKwlidWZfbm9kZSA9IGlzcDRpZl9hbGxvY19idWZmZXJfbm9kZShidWZfaW5mbyk7 CisrCWlmICghYnVmX25vZGUpIHsKKysJCWRldl9lcnIoZGV2LCAiZmFpbCBhbGxvYyBzeXMgaW1n IGJ1ZiBpbmZvIG5vZGVcbiIpOworKwkJcmV0dXJuIC1FTk9NRU07CisrCX0KKysKKysJcmV0ID0g aXNwNGlmX3F1ZXVlX2J1ZmZlcihpc3BpZiwgYnVmX25vZGUpOworKwlpZiAocmV0KSB7CisrCQlk ZXZfZXJyKGRldiwgImZhaWwgdG8gcXVldWUgaW1hZ2UgYnVmLCAlZFxuIiwgcmV0KTsKKysJCWdv dG8gZXJyb3JfcmVsZWFzZV9idWZfbm9kZTsKKysJfQorKworKwlpZiAoIWlzcF9zdWJkZXYtPnNl bnNvcl9pbmZvLnN0YXJ0X3N0cmVhbV9jbWRfc2VudCkgeworKwkJaXNwX3N1YmRldi0+c2Vuc29y X2luZm8uYnVmX3NlbnRfY250Kys7CisrCisrCQlpZiAoaXNwX3N1YmRldi0+c2Vuc29yX2luZm8u YnVmX3NlbnRfY250ID49CisrCQkgICAgSVNQNFNEX01JTl9CVUZfQ05UX0JFRl9TVEFSVF9TVFJF QU0pIHsKKysJCQlyZXQgPSBpc3A0aWZfc2VuZF9jb21tYW5kKGlzcGlmLAorKwkJCQkJCSAgSVNQ NEZXX0NNRF9JRF9TVEFSVF9TVFJFQU0sCisrCQkJCQkJICBOVUxMLCAwKTsKKysJCQlpZiAocmV0 KSB7CisrCQkJCWRldl9lcnIoZGV2LCAiZmFpbCB0byBTVEFSVF9TVFJFQU0iKTsKKysJCQkJZ290 byBlcnJvcl9yZWxlYXNlX2J1Zl9ub2RlOworKwkJCX0KKysJCQlpc3Bfc3ViZGV2LT5zZW5zb3Jf aW5mby5zdGFydF9zdHJlYW1fY21kX3NlbnQgPSB0cnVlOworKwkJCWlzcF9zdWJkZXYtPnNlbnNv cl9pbmZvLm91dHB1dF9pbmZvLnN0YXJ0X3N0YXR1cyA9CisrCQkJCUlTUDRTRF9TVEFSVF9TVEFU VVNfU1RBUlRFRDsKKysJCQlpc3Bfc3ViZGV2LT5zZW5zb3JfaW5mby5zdGF0dXMgPQorKwkJCQlJ U1A0U0RfU1RBUlRfU1RBVFVTX1NUQVJURUQ7CisrCQl9IGVsc2UgeworKwkJCWRldl9kYmcoZGV2 LAorKwkJCQkibm8gc2VuZCBzdGFydCwgcmVxdWlyZWQgJXUsIGJ1ZiBzZW50ICV1XG4iLAorKwkJ CQlJU1A0U0RfTUlOX0JVRl9DTlRfQkVGX1NUQVJUX1NUUkVBTSwKKysJCQkJaXNwX3N1YmRldi0+ c2Vuc29yX2luZm8uYnVmX3NlbnRfY250KTsKKysJCX0KKysJfQorKworKwlyZXR1cm4gMDsKKysK KytlcnJvcl9yZWxlYXNlX2J1Zl9ub2RlOgorKwlpc3A0aWZfZGVhbGxvY19idWZmZXJfbm9kZShi dWZfbm9kZSk7CisrCXJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRs Ml9zdWJkZXZfdmlkZW9fb3BzIGlzcDRzZF92aWRlb19vcHMgPSB7CisrCS5zX3N0cmVhbSA9IHY0 bDJfc3ViZGV2X3Nfc3RyZWFtX2hlbHBlciwKKyt9OworKworK3N0YXRpYyBpbnQgaXNwNHNkX3Nl dF9wYWRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsCisrCQkJCSBzdHJ1Y3QgdjRsMl9z dWJkZXZfc3RhdGUgKnNkX3N0YXRlLAorKwkJCQkgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAq Zm9ybWF0KQorK3sKKysJc3RydWN0IGlzcDRzZF9vdXRwdXRfaW5mbyAqc3RyZWFtX2luZm8gPQor KwkJJih0b19pc3A0X3N1YmRldihzZCktPnNlbnNvcl9pbmZvLm91dHB1dF9pbmZvKTsKKysJc3Ry dWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqZm10OworKworKwlmbXQgPSB2NGwyX3N1YmRldl9zdGF0 ZV9nZXRfZm9ybWF0KHNkX3N0YXRlLCBmb3JtYXQtPnBhZCk7CisrCisrCWlmICghZm10KSB7Cisr CQlkZXZfZXJyKHNkLT5kZXYsICJmYWlsIHRvIGdldCBzdGF0ZSBmb3JtYXRcbiIpOworKwkJcmV0 dXJuIC1FSU5WQUw7CisrCX0KKysKKysJKmZtdCA9IGZvcm1hdC0+Zm9ybWF0OworKwlzd2l0Y2gg KGZtdC0+Y29kZSkgeworKwljYXNlIE1FRElBX0JVU19GTVRfWVVZVjhfMVgxNjoKKysJCXN0cmVh bV9pbmZvLT5pbWFnZV9zaXplID0gZm10LT53aWR0aCAqIGZtdC0+aGVpZ2h0ICogMjsKKysJCWJy ZWFrOworKwljYXNlIE1FRElBX0JVU19GTVRfWVVZVjhfMV81WDg6CisrCWRlZmF1bHQ6CisrCQlz dHJlYW1faW5mby0+aW1hZ2Vfc2l6ZSA9IGZtdC0+d2lkdGggKiBmbXQtPmhlaWdodCAqIDMgLyAy OworKwkJYnJlYWs7CisrCX0KKysKKysJaWYgKCFzdHJlYW1faW5mby0+aW1hZ2Vfc2l6ZSkgewor KwkJZGV2X2VycihzZC0+ZGV2LAorKwkJCSJmYWlsIHNldCBwYWQgZm9ybWF0LGNvZGUgMHgleCx3 aWR0aCAldSwgaGVpZ2h0ICV1XG4iLAorKwkJCWZtdC0+Y29kZSwgZm10LT53aWR0aCwgZm10LT5o ZWlnaHQpOworKwkJcmV0dXJuIC1FSU5WQUw7CisrCX0KKysKKysJZGV2X2RiZyhzZC0+ZGV2LCAi c2V0IHBhZCBmb3JtYXQgc3VjLCBjb2RlOiV4IHc6JXUgaDoldSBzaXplOiV1XG4iLAorKwkJZm10 LT5jb2RlLCBmbXQtPndpZHRoLCBmbXQtPmhlaWdodCwKKysJCXN0cmVhbV9pbmZvLT5pbWFnZV9z aXplKTsKKysKKysJcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgaXNwNHNkX2VuYWJsZV9z dHJlYW1zKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsCisrCQkJCSBzdHJ1Y3QgdjRsMl9zdWJkZXZf c3RhdGUgKnN0YXRlLCB1MzIgcGFkLAorKwkJCQkgdTY0IHN0cmVhbXNfbWFzaykKKyt7CisrCXN0 cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiA9IHRvX2lzcDRfc3ViZGV2KHNkKTsKKysKKysJ cmV0dXJuIGlzcDRzZF9zdGFydF9zdHJlYW0oaXNwX3N1YmRldiwgc3RhdGUsIHBhZCk7CisrfQor KworK3N0YXRpYyBpbnQgaXNwNHNkX2Rpc2FibGVfc3RyZWFtcyhzdHJ1Y3QgdjRsMl9zdWJkZXYg KnNkLAorKwkJCQkgIHN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGUsIHUzMiBwYWQsCisr CQkJCSAgdTY0IHN0cmVhbXNfbWFzaykKKyt7CisrCXN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1 YmRldiA9IHRvX2lzcDRfc3ViZGV2KHNkKTsKKysKKysJcmV0dXJuIGlzcDRzZF9zdG9wX3N0cmVh bShpc3Bfc3ViZGV2LCBzdGF0ZSwgcGFkKTsKKyt9CisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCB2 NGwyX3N1YmRldl9wYWRfb3BzIGlzcDRzZF9wYWRfb3BzID0geworKwkuZ2V0X2ZtdCA9IHY0bDJf c3ViZGV2X2dldF9mbXQsCisrCS5zZXRfZm10ID0gaXNwNHNkX3NldF9wYWRfZm9ybWF0LAorKwku ZW5hYmxlX3N0cmVhbXMgPSBpc3A0c2RfZW5hYmxlX3N0cmVhbXMsCisrCS5kaXNhYmxlX3N0cmVh bXMgPSBpc3A0c2RfZGlzYWJsZV9zdHJlYW1zLAorK307CisrCisrc3RhdGljIGNvbnN0IHN0cnVj dCB2NGwyX3N1YmRldl9vcHMgaXNwNHNkX3N1YmRldl9vcHMgPSB7CisrCS52aWRlbyA9ICZpc3A0 c2RfdmlkZW9fb3BzLAorKwkucGFkID0gJmlzcDRzZF9wYWRfb3BzLAorK307CisrCisraW50IGlz cDRzZF9pbml0KHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwgc3RydWN0IHY0bDJfZGV2 aWNlICp2NGwyX2RldiwKKysJCWludCBpcnFbSVNQNFNEX01BWF9GV19SRVNQX1NUUkVBTV9OVU1d KQorK3sKKysJc3RydWN0IGlzcDRzZF9zZW5zb3JfaW5mbyAqc2Vuc29yX2luZm8gPSAmaXNwX3N1 YmRldi0+c2Vuc29yX2luZm87CisrCXN0cnVjdCBpc3A0X2ludGVyZmFjZSAqaXNwaWYgPSAmaXNw X3N1YmRldi0+aXNwaWY7CisrCXN0cnVjdCBkZXZpY2UgKmRldiA9IHY0bDJfZGV2LT5kZXY7Cisr CWludCByZXQ7CisrCisrCWlzcF9zdWJkZXYtPmRldiA9IGRldjsKKysJdjRsMl9zdWJkZXZfaW5p dCgmaXNwX3N1YmRldi0+c2RldiwgJmlzcDRzZF9zdWJkZXZfb3BzKTsKKysJaXNwX3N1YmRldi0+ c2Rldi5vd25lciA9IFRISVNfTU9EVUxFOworKwlpc3Bfc3ViZGV2LT5zZGV2LmRldiA9IGRldjsK KysJc25wcmludGYoaXNwX3N1YmRldi0+c2Rldi5uYW1lLCBzaXplb2YoaXNwX3N1YmRldi0+c2Rl di5uYW1lKSwgIiVzIiwKKysJCSBkZXZfbmFtZShkZXYpKTsKKysKKysJaXNwX3N1YmRldi0+c2Rl di5lbnRpdHkubmFtZSA9IGlzcDRzZF9lbnRpdHlfbmFtZTsKKysJaXNwX3N1YmRldi0+c2Rldi5l bnRpdHkuZnVuY3Rpb24gPSBNRURJQV9FTlRfRl9QUk9DX1ZJREVPX0lTUDsKKysJaXNwX3N1YmRl di0+c2Rldl9wYWQuZmxhZ3MgPSBNRURJQV9QQURfRkxfU09VUkNFOworKwlyZXQgPSBtZWRpYV9l bnRpdHlfcGFkc19pbml0KCZpc3Bfc3ViZGV2LT5zZGV2LmVudGl0eSwgMSwKKysJCQkJICAgICAm aXNwX3N1YmRldi0+c2Rldl9wYWQpOworKwlpZiAocmV0KSB7CisrCQlkZXZfZXJyKGRldiwgImZh aWwgdG8gaW5pdCBpc3A0IHN1YmRldiBlbnRpdHkgcGFkICVkXG4iLCByZXQpOworKwkJcmV0dXJu IHJldDsKKysJfQorKworKwlyZXQgPSB2NGwyX3N1YmRldl9pbml0X2ZpbmFsaXplKCZpc3Bfc3Vi ZGV2LT5zZGV2KTsKKysJaWYgKHJldCA8IDApIHsKKysJCWRldl9lcnIoZGV2LCAiZmFpbCB0byBp bml0IGZpbmFsaXplIGlzcDQgc3ViZGV2ICVkXG4iLAorKwkJCXJldCk7CisrCQlyZXR1cm4gcmV0 OworKwl9CisrCisrCXJldCA9IHY0bDJfZGV2aWNlX3JlZ2lzdGVyX3N1YmRldih2NGwyX2Rldiwg JmlzcF9zdWJkZXYtPnNkZXYpOworKwlpZiAocmV0KSB7CisrCQlkZXZfZXJyKGRldiwgImZhaWwg dG8gcmVnaXN0ZXIgaXNwNCBzdWJkZXYgdG8gVjRMMiBkZXZpY2UgJWRcbiIsCisrCQkJcmV0KTsK KysJCWdvdG8gZXJyX21lZGlhX2NsZWFuX3VwOworKwl9CisrCisrCWlzcDRpZl9pbml0KGlzcGlm LCBkZXYsIGlzcF9zdWJkZXYtPm1taW8pOworKworKwltdXRleF9pbml0KCZpc3Bfc3ViZGV2LT5v cHNfbXV0ZXgpOworKwlzZW5zb3JfaW5mby0+c3RhdHVzID0gSVNQNFNEX1NUQVJUX1NUQVRVU19P RkY7CisrCisrCS8qIGNyZWF0ZSBJU1AgZW5hYmxlIGdwaW8gY29udHJvbCAqLworKwlpc3Bfc3Vi ZGV2LT5lbmFibGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGlzcF9zdWJkZXYtPmRldiwKKysJCQkJ CQkgImVuYWJsZV9pc3AiLAorKwkJCQkJCSBHUElPRF9PVVRfTE9XKTsKKysJaWYgKElTX0VSUihp c3Bfc3ViZGV2LT5lbmFibGVfZ3BpbykpIHsKKysJCXJldCA9IFBUUl9FUlIoaXNwX3N1YmRldi0+ ZW5hYmxlX2dwaW8pOworKwkJZGV2X2VycihkZXYsICJmYWlsIHRvIGdldCBncGlvZCAlZFxuIiwg cmV0KTsKKysJCWdvdG8gZXJyX3N1YmRldl91bnJlZzsKKysJfQorKworKwlmb3IgKHVuc2lnbmVk IGludCBpID0gMDsgaSA8IElTUDRTRF9NQVhfRldfUkVTUF9TVFJFQU1fTlVNOyBpKyspCisrCQlp c3Bfc3ViZGV2LT5pcnFbaV0gPSBpcnFbaV07CisrCisrCWlzcF9zdWJkZXYtPmhvc3QyZndfc2Vx X251bSA9IDE7CisrCWlzcGlmLT5zdGF0dXMgPSBJU1A0SUZfU1RBVFVTX1BXUl9PRkY7CisrCisr CXJldCA9IGlzcDR2aWRfZGV2X2luaXQoJmlzcF9zdWJkZXYtPmlzcF92ZGV2LCAmaXNwX3N1YmRl di0+c2Rldik7CisrCWlmIChyZXQpCisrCQlnb3RvIGVycl9zdWJkZXZfdW5yZWc7CisrCisrCXJl dHVybiAwOworKworK2Vycl9zdWJkZXZfdW5yZWc6CisrCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXJf c3ViZGV2KCZpc3Bfc3ViZGV2LT5zZGV2KTsKKytlcnJfbWVkaWFfY2xlYW5fdXA6CisrCXY0bDJf c3ViZGV2X2NsZWFudXAoJmlzcF9zdWJkZXYtPnNkZXYpOworKwltZWRpYV9lbnRpdHlfY2xlYW51 cCgmaXNwX3N1YmRldi0+c2Rldi5lbnRpdHkpOworKwlyZXR1cm4gcmV0OworK30KKysKKyt2b2lk IGlzcDRzZF9kZWluaXQoc3RydWN0IGlzcDRfc3ViZGV2ICppc3Bfc3ViZGV2KQorK3sKKysJc3Ry dWN0IGlzcDRfaW50ZXJmYWNlICppc3BpZiA9ICZpc3Bfc3ViZGV2LT5pc3BpZjsKKysKKysJaXNw NHZpZF9kZXZfZGVpbml0KCZpc3Bfc3ViZGV2LT5pc3BfdmRldik7CisrCXY0bDJfZGV2aWNlX3Vu cmVnaXN0ZXJfc3ViZGV2KCZpc3Bfc3ViZGV2LT5zZGV2KTsKKysJbWVkaWFfZW50aXR5X2NsZWFu dXAoJmlzcF9zdWJkZXYtPnNkZXYuZW50aXR5KTsKKysJaXNwNGlmX2RlaW5pdChpc3BpZik7Cisr CWlzcDRzZF9tb2R1bGVfZW5hYmxlKGlzcF9zdWJkZXYsIGZhbHNlKTsKKysKKysJaXNwaWYtPnN0 YXR1cyA9IElTUDRJRl9TVEFUVVNfUFdSX09GRjsKKyt9CitkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X3N1YmRldi5oIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hbWQvaXNwNC9pc3A0X3N1YmRldi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwMDAwLi4yMGVhMDhhODMwYWYKKy0tLSAvZGV2L251bGwKKysrKyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF9zdWJkZXYuaAorQEAgLTAsMCArMSwxMjcgQEAK KysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KKysvKgorKyAqIENvcHly aWdodCAoQykgMjAyNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisrICovCisrCisrI2lm bmRlZiBfSVNQNF9TVUJERVZfSF8KKysjZGVmaW5lIF9JU1A0X1NVQkRFVl9IXworKworKyNpbmNs dWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CisrI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisrI2luY2x1 ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisrI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKysj aW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorKyNp bmNsdWRlIDxtZWRpYS92NGwyLWRldmljZS5oPgorKworKyNpbmNsdWRlICJpc3A0X2Z3X2NtZF9y ZXNwLmgiCisrI2luY2x1ZGUgImlzcDRfaHdfcmVnLmgiCisrI2luY2x1ZGUgImlzcDRfaW50ZXJm YWNlLmgiCisrI2luY2x1ZGUgImlzcDRfdmlkZW8uaCIKKysKKysvKgorKyAqIE9uZSBpcyBmb3Ig bm9uZSBzZW5zb3Igc3BlY2lmaWMgcmVzcG9uc2Ugd2hpY2ggaXMgbm90IHVzZWQgbm93LgorKyAq IEFub3RoZXIgaXMgZm9yIHNlbnNvciBzcGVjaWZpYyByZXNwb25zZQorKyAqLworKyNkZWZpbmUg SVNQNFNEX01BWF9GV19SRVNQX1NUUkVBTV9OVU0gMgorKworKy8qIEluZGljYXRlcyB0aGUgSVNQ IHN0YXR1cyAqLworK2VudW0gaXNwNHNkX3N0YXR1cyB7CisrCUlTUDRTRF9TVEFUVVNfUFdSX09G RiwKKysJSVNQNFNEX1NUQVRVU19QV1JfT04sCisrCUlTUDRTRF9TVEFUVVNfRldfUlVOTklORywK KysJSVNQNFNEX1NUQVRVU19NQVgKKyt9OworKworKy8qIEluZGljYXRlcyBzZW5zb3IgYW5kIG91 dHB1dCBzdHJlYW0gc3RhdHVzICovCisrZW51bSBpc3A0c2Rfc3RhcnRfc3RhdHVzIHsKKysJSVNQ NFNEX1NUQVJUX1NUQVRVU19PRkYsCisrCUlTUDRTRF9TVEFSVF9TVEFUVVNfU1RBUlRFRCwKKysJ SVNQNFNEX1NUQVJUX1NUQVRVU19TVEFSVF9GQUlMLAorK307CisrCisrc3RydWN0IGlzcDRzZF9p bWdfYnVmX25vZGUgeworKwlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CisrCXN0cnVjdCBpc3A0aWZf aW1nX2J1Zl9pbmZvIGJ1Zl9pbmZvOworK307CisrCisrLyogVGhpcyBpcyBJU1Agb3V0cHV0IGFm dGVyIHByb2Nlc3NpbmcgQmF5ZXIgcmF3IHNlbnNvciBpbnB1dCAqLworK3N0cnVjdCBpc3A0c2Rf b3V0cHV0X2luZm8geworKwllbnVtIGlzcDRzZF9zdGFydF9zdGF0dXMgc3RhcnRfc3RhdHVzOwor Kwl1MzIgaW1hZ2Vfc2l6ZTsKKyt9OworKworKy8qCisrICogU3RydWN0IGZvciBzZW5zb3IgaW5m byB1c2VkIGFzIElTUCBpbnB1dCBvciBzb3VyY2UuCisrICogc3RhdHVzOiBzZW5zb3Igc3RhdHVz LgorKyAqIG91dHB1dF9pbmZvOiBJU1Agb3V0cHV0IGFmdGVyIHByb2Nlc3NpbmcgdGhlIHNlbnNv ciBpbnB1dC4KKysgKiBzdGFydF9zdHJlYW1fY21kX3NlbnQ6IGluZGljYXRlcyBpZiBJU1A0Rldf Q01EX0lEX1NUQVJUX1NUUkVBTSB3YXMgc2VudAorKyAqIHRvIGZpcm13YXJlLgorKyAqIGJ1Zl9z ZW50X2NudDogbnVtYmVyIG9mIGJ1ZmZlcnMgc2VudCB0byByZWNlaXZlIGltYWdlcy4KKysgKi8K KytzdHJ1Y3QgaXNwNHNkX3NlbnNvcl9pbmZvIHsKKysJc3RydWN0IGlzcDRzZF9vdXRwdXRfaW5m byBvdXRwdXRfaW5mbzsKKysJZW51bSBpc3A0c2Rfc3RhcnRfc3RhdHVzIHN0YXR1czsKKysJYm9v bCBzdGFydF9zdHJlYW1fY21kX3NlbnQ7CisrCXUzMiBidWZfc2VudF9jbnQ7CisrfTsKKysKKysv KgorKyAqIFRoZSB0aHJlYWQgaXMgY3JlYXRlZCBieSB0aGUgZHJpdmVyIHRvIGhhbmRsZSBmaXJt d2FyZSByZXNwb25zZXMgd2hpY2ggd2lsbAorKyAqIGJlIHdha2VuIHVwIHdoZW4gYSBmaXJtd2Fy ZS10by1kcml2ZXIgcmVzcG9uc2UgaW50ZXJydXB0IG9jY3Vycy4KKysgKi8KKytzdHJ1Y3QgaXNw NHNkX3RocmVhZF9oYW5kbGVyIHsKKysJc3RydWN0IHRhc2tfc3RydWN0ICp0aHJlYWQ7CisrCXdh aXRfcXVldWVfaGVhZF90IHdhaXRxOworKwlib29sIHJlc3BfcmVhZHk7CisrfTsKKysKKytzdHJ1 Y3QgaXNwNF9zdWJkZXZfdGhyZWFkX3BhcmFtIHsKKysJdTMyIGlkeDsKKysJc3RydWN0IGlzcDRf c3ViZGV2ICppc3Bfc3ViZGV2OworK307CisrCisrc3RydWN0IGlzcDRfc3ViZGV2IHsKKysJc3Ry dWN0IHY0bDJfc3ViZGV2IHNkZXY7CisrCXN0cnVjdCBpc3A0X2ludGVyZmFjZSBpc3BpZjsKKysJ c3RydWN0IGlzcDR2aWRfZGV2IGlzcF92ZGV2OworKworKwlzdHJ1Y3QgbWVkaWFfcGFkIHNkZXZf cGFkOworKworKwllbnVtIGlzcDRzZF9zdGF0dXMgaXNwX3N0YXR1czsKKysJLyogbXV0ZXggdXNl ZCB0byBzeW5jaHJvbml6ZSB0aGUgb3BlcmF0aW9uIHdpdGggZmlybXdhcmUgKi8KKysJc3RydWN0 IG11dGV4IG9wc19tdXRleDsKKysKKysJc3RydWN0IGlzcDRzZF90aHJlYWRfaGFuZGxlcgorKwkJ ZndfcmVzcF90aHJlYWRbSVNQNFNEX01BWF9GV19SRVNQX1NUUkVBTV9OVU1dOworKworKwl1MzIg aG9zdDJmd19zZXFfbnVtOworKworKwlzdHJ1Y3QgaXNwNHNkX3NlbnNvcl9pbmZvIHNlbnNvcl9p bmZvOworKworKwkvKiBncGlvIGRlc2NyaXB0b3IgKi8KKysJc3RydWN0IGdwaW9fZGVzYyAqZW5h YmxlX2dwaW87CisrCXN0cnVjdCBkZXZpY2UgKmRldjsKKysJdm9pZCBfX2lvbWVtICptbWlvOwor KwlzdHJ1Y3QgaXNwNF9zdWJkZXZfdGhyZWFkX3BhcmFtCisrCQlpc3BfcmVzcF9wYXJhW0lTUDRT RF9NQVhfRldfUkVTUF9TVFJFQU1fTlVNXTsKKysJaW50IGlycVtJU1A0U0RfTUFYX0ZXX1JFU1Bf U1RSRUFNX05VTV07CisrCWJvb2wgaXJxX2VuYWJsZWQ7CisrCS8qIHNwaW4gbG9jayB0byBhY2Nl c3MgSVNQX1NZU19JTlQwX0VOIGV4Y2x1c2l2ZWx5ICovCisrCXNwaW5sb2NrX3QgaXJxX2xvY2s7 CisrI2lmZGVmIENPTkZJR19ERUJVR19GUworKwlib29sIGVuYWJsZV9md19sb2c7CisrCXN0cnVj dCBkZW50cnkgKmRlYnVnZnNfZGlyOworKwljaGFyICpmd19sb2dfb3V0cHV0OworKyNlbmRpZgor K307CisrCisraW50IGlzcDRzZF9pbml0KHN0cnVjdCBpc3A0X3N1YmRldiAqaXNwX3N1YmRldiwg c3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2RldiwKKysJCWludCBpcnFbSVNQNFNEX01BWF9GV19S RVNQX1NUUkVBTV9OVU1dKTsKKyt2b2lkIGlzcDRzZF9kZWluaXQoc3RydWN0IGlzcDRfc3ViZGV2 ICppc3Bfc3ViZGV2KTsKKytpbnQgaXNwNHNkX2lvY19zZW5kX2ltZ19idWYoc3RydWN0IHY0bDJf c3ViZGV2ICpzZCwKKysJCQkgICAgc3RydWN0IGlzcDRpZl9pbWdfYnVmX2luZm8gKmJ1Zl9pbmZv KTsKKytpbnQgaXNwNHNkX3B3cm9uX2FuZF9pbml0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QpOwor K2ludCBpc3A0c2RfcHdyb2ZmX2FuZF9kZWluaXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCk7Cisr CisrI2VuZGlmIC8qIF9JU1A0X1NVQkRFVl9IXyAqLworZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF92aWRlby5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9hbWQvaXNwNC9pc3A0X3ZpZGVvLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAwMDAuLjBjZWJiMzlmOThlMQorLS0tIC9kZXYvbnVsbAorKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9hbWQvaXNwNC9pc3A0X3ZpZGVvLmMKK0BAIC0wLDAgKzEsNzk3IEBACisrLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCisrLyoKKysgKiBDb3B5cmlnaHQgKEMp IDIwMjUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorKyAqLworKworKyNpbmNsdWRlIDxt ZWRpYS92NGwyLWlvY3RsLmg+CisrI2luY2x1ZGUgPG1lZGlhL3Y0bDItbWMuaD4KKysjaW5jbHVk ZSA8bWVkaWEvdmlkZW9idWYyLXZtYWxsb2MuaD4KKysKKysjaW5jbHVkZSAiaXNwNF9pbnRlcmZh Y2UuaCIKKysjaW5jbHVkZSAiaXNwNF9zdWJkZXYuaCIKKysjaW5jbHVkZSAiaXNwNF92aWRlby5o IgorKworKyNkZWZpbmUgSVNQNFZJRF9JU1BfRFJWX05BTUUgImFtZF9pc3BfY2FwdHVyZSIKKysj ZGVmaW5lIElTUDRWSURfTUFYX1BSRVZJRVdfRlBTIDMwCisrI2RlZmluZSBJU1A0VklEX0RFRkFV TFRfRk1UIFY0TDJfUElYX0ZNVF9OVjEyCisrCisrI2RlZmluZSBJU1A0VklEX1BBRF9WSURFT19P VVRQVVQgMAorKworKy8qIHRpbWUgcGVyZnJhbWUgZGVmYXVsdCAqLworKyNkZWZpbmUgSVNQNFZJ RF9JU1BfVFBGX0RFRkFVTFQgaXNwNHZpZF90cGZzWzBdCisrCisrc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IGlzcDR2aWRfdmlkZW9fZGV2X25hbWUgPSAiUHJldmlldyI7CisrCisrLyogU2l6ZXMg bXVzdCBiZSBpbiBpbmNyZWFzaW5nIG9yZGVyICovCisrc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwy X2ZybXNpemVfZGlzY3JldGUgaXNwNHZpZF9mcm1zaXplW10gPSB7CisrCXs2NDAsIDM2MH0sCisr CXs2NDAsIDQ4MH0sCisrCXsxMjgwLCA3MjB9LAorKwl7MTI4MCwgOTYwfSwKKysJezE5MjAsIDEw ODB9LAorKwl7MTkyMCwgMTQ0MH0sCisrCXsyNTYwLCAxNDQwfSwKKysJezI4ODAsIDE2MjB9LAor Kwl7Mjg4MCwgMTYyNH0sCisrCXsyODg4LCAxODA4fSwKKyt9OworKworK3N0YXRpYyBjb25zdCB1 MzIgaXNwNHZpZF9mb3JtYXRzW10gPSB7CisrCVY0TDJfUElYX0ZNVF9OVjEyLAorKwlWNEwyX1BJ WF9GTVRfWVVZVgorK307CisrCisrLyogdGltZSBwZXJmcmFtZSBsaXN0ICovCisrc3RhdGljIGNv bnN0IHN0cnVjdCB2NGwyX2ZyYWN0IGlzcDR2aWRfdHBmc1tdID0geworKwl7IDEsIElTUDRWSURf TUFYX1BSRVZJRVdfRlBTIH0KKyt9OworKworK3ZvaWQgaXNwNHZpZF9oYW5kbGVfZnJhbWVfZG9u ZShzdHJ1Y3QgaXNwNHZpZF9kZXYgKmlzcF92ZGV2LAorKwkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg aXNwNGlmX2ltZ19idWZfaW5mbyAqaW1nX2J1ZikKKyt7CisrCXN0cnVjdCBpc3A0dmlkX2NhcHR1 cmVfYnVmZmVyICppc3A0dmlkX2J1ZjsKKysJdm9pZCAqdmJ1ZjsKKysKKysJc2NvcGVkX2d1YXJk KG11dGV4LCAmaXNwX3ZkZXYtPmJ1Zl9saXN0X2xvY2spIHsKKysJCWlzcDR2aWRfYnVmID0gbGlz dF9maXJzdF9lbnRyeV9vcl9udWxsKCZpc3BfdmRldi0+YnVmX2xpc3QsCisrCQkJCQkJICAgICAg IHR5cGVvZigqaXNwNHZpZF9idWYpLAorKwkJCQkJCSAgICAgICBsaXN0KTsKKysJCWlmICghaXNw NHZpZF9idWYpCisrCQkJcmV0dXJuOworKworKwkJdmJ1ZiA9IHZiMl9wbGFuZV92YWRkcigmaXNw NHZpZF9idWYtPnZiMi52YjJfYnVmLCAwKTsKKysKKysJCWlmICh2YnVmICE9IGltZ19idWYtPnBs YW5lc1swXS5zeXNfYWRkcikgeworKwkJCWRldl9lcnIoaXNwX3ZkZXYtPmRldiwgIkludmFsaWQg dmJ1ZlxuIik7CisrCQkJcmV0dXJuOworKwkJfQorKworKwkJbGlzdF9kZWwoJmlzcDR2aWRfYnVm LT5saXN0KTsKKysJfQorKworKwkvKiBGaWxsIHRoZSBidWZmZXIgKi8KKysJaXNwNHZpZF9idWYt PnZiMi52YjJfYnVmLnRpbWVzdGFtcCA9IGt0aW1lX2dldF9ucygpOworKwlpc3A0dmlkX2J1Zi0+ dmIyLnNlcXVlbmNlID0gaXNwX3ZkZXYtPnNlcXVlbmNlKys7CisrCWlzcDR2aWRfYnVmLT52YjIu ZmllbGQgPSBWNEwyX0ZJRUxEX0FOWTsKKysKKysJdmIyX3NldF9wbGFuZV9wYXlsb2FkKCZpc3A0 dmlkX2J1Zi0+dmIyLnZiMl9idWYsCisrCQkJICAgICAgMCwgaXNwX3ZkZXYtPmZvcm1hdC5zaXpl aW1hZ2UpOworKworKwl2YjJfYnVmZmVyX2RvbmUoJmlzcDR2aWRfYnVmLT52YjIudmIyX2J1Ziwg VkIyX0JVRl9TVEFURV9ET05FKTsKKysKKysJZGV2X2RiZyhpc3BfdmRldi0+ZGV2LCAiY2FsbCB2 YjJfYnVmZmVyX2RvbmUoc2l6ZT0ldSlcbiIsCisrCQlpc3BfdmRldi0+Zm9ybWF0LnNpemVpbWFn ZSk7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0IGlzcDR2aWRf Zm10X2RlZmF1bHQgPSB7CisrCS53aWR0aCA9IDE5MjAsCisrCS5oZWlnaHQgPSAxMDgwLAorKwku cGl4ZWxmb3JtYXQgPSBJU1A0VklEX0RFRkFVTFRfRk1ULAorKwkuZmllbGQgPSBWNEwyX0ZJRUxE X05PTkUsCisrCS5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX1NSR0IsCisrfTsKKysKKytz dGF0aWMgdm9pZCBpc3A0dmlkX2NhcHR1cmVfcmV0dXJuX2FsbF9idWZmZXJzKHN0cnVjdCBpc3A0 dmlkX2RldiAqaXNwX3ZkZXYsCisrCQkJCQkgICAgICAgZW51bSB2YjJfYnVmZmVyX3N0YXRlIHN0 YXRlKQorK3sKKysJc3RydWN0IGlzcDR2aWRfY2FwdHVyZV9idWZmZXIgKnZidWYsICpub2RlOwor KworKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZpc3BfdmRldi0+YnVmX2xpc3RfbG9jaykgeworKwkJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZidWYsIG5vZGUsICZpc3BfdmRldi0+YnVmX2xpc3Qs IGxpc3QpCisrCQkJdmIyX2J1ZmZlcl9kb25lKCZ2YnVmLT52YjIudmIyX2J1Ziwgc3RhdGUpOwor KwkJSU5JVF9MSVNUX0hFQUQoJmlzcF92ZGV2LT5idWZfbGlzdCk7CisrCX0KKysKKysJZGV2X2Ri Zyhpc3BfdmRldi0+ZGV2LCAiY2FsbCB2YjJfYnVmZmVyX2RvbmUoJWQpXG4iLCBzdGF0ZSk7Cisr fQorKworK3N0YXRpYyBpbnQgaXNwNHZpZF92ZGV2X2xpbmtfdmFsaWRhdGUoc3RydWN0IG1lZGlh X2xpbmsgKmxpbmspCisreworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGNvbnN0IHN0cnVj dCBtZWRpYV9lbnRpdHlfb3BlcmF0aW9ucyBpc3A0dmlkX3ZkZXZfZW50X29wcyA9IHsKKysJLmxp bmtfdmFsaWRhdGUgPSBpc3A0dmlkX3ZkZXZfbGlua192YWxpZGF0ZSwKKyt9OworKworK3N0YXRp YyBjb25zdCBzdHJ1Y3QgdjRsMl9maWxlX29wZXJhdGlvbnMgaXNwNHZpZF92ZGV2X2ZvcHMgPSB7 CisrCS5vd25lciA9IFRISVNfTU9EVUxFLAorKwkub3BlbiA9IHY0bDJfZmhfb3BlbiwKKysJLnJl bGVhc2UgPSB2YjJfZm9wX3JlbGVhc2UsCisrCS5yZWFkID0gdmIyX2ZvcF9yZWFkLAorKwkucG9s bCA9IHZiMl9mb3BfcG9sbCwKKysJLnVubG9ja2VkX2lvY3RsID0gdmlkZW9faW9jdGwyLAorKwku bW1hcCA9IHZiMl9mb3BfbW1hcCwKKyt9OworKworK3N0YXRpYyBpbnQgaXNwNHZpZF9pb2N0bF9x dWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisrCQkJCSAgc3RydWN0IHY0bDJf Y2FwYWJpbGl0eSAqY2FwKQorK3sKKysJc3RydWN0IGlzcDR2aWRfZGV2ICppc3BfdmRldiA9IHZp ZGVvX2RydmRhdGEoZmlsZSk7CisrCisrCXN0cnNjcHkoY2FwLT5kcml2ZXIsIElTUDRWSURfSVNQ X0RSVl9OQU1FLCBzaXplb2YoY2FwLT5kcml2ZXIpKTsKKysJc25wcmludGYoY2FwLT5jYXJkLCBz aXplb2YoY2FwLT5jYXJkKSwgIiVzIiwgSVNQNFZJRF9JU1BfRFJWX05BTUUpOworKwljYXAtPmNh cGFiaWxpdGllcyB8PSBWNEwyX0NBUF9TVFJFQU1JTkcgfCBWNEwyX0NBUF9WSURFT19DQVBUVVJF OworKworKwlkZXZfZGJnKGlzcF92ZGV2LT5kZXYsICIlc3xjYXBhYmlsaXRpZXM9MHglWFxuIiwg aXNwX3ZkZXYtPnZkZXYubmFtZSwKKysJCWNhcC0+Y2FwYWJpbGl0aWVzKTsKKysKKysJcmV0dXJu IDA7CisrfQorKworK3N0YXRpYyBpbnQgaXNwNHZpZF9nX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpwcml2LAorKwkJCQkgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQorK3sKKysJ c3RydWN0IGlzcDR2aWRfZGV2ICppc3BfdmRldiA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisrCisr CWYtPmZtdC5waXggPSBpc3BfdmRldi0+Zm9ybWF0OworKworKwlyZXR1cm4gMDsKKyt9CisrCisr c3RhdGljIGludCBpc3A0dmlkX2ZpbGxfYnVmZmVyX3NpemUoc3RydWN0IHY0bDJfcGl4X2Zvcm1h dCAqZm10KQorK3sKKysJaW50IHJldCA9IDA7CisrCisrCXN3aXRjaCAoZm10LT5waXhlbGZvcm1h dCkgeworKwljYXNlIFY0TDJfUElYX0ZNVF9OVjEyOgorKwkJZm10LT5ieXRlc3BlcmxpbmUgPSBm bXQtPndpZHRoOworKwkJZm10LT5zaXplaW1hZ2UgPSBmbXQtPmJ5dGVzcGVybGluZSAqIGZtdC0+ aGVpZ2h0ICogMyAvIDI7CisrCQlicmVhazsKKysJY2FzZSBWNEwyX1BJWF9GTVRfWVVZVjoKKysJ CWZtdC0+Ynl0ZXNwZXJsaW5lID0gZm10LT53aWR0aCAqIDI7CisrCQlmbXQtPnNpemVpbWFnZSA9 IGZtdC0+Ynl0ZXNwZXJsaW5lICogZm10LT5oZWlnaHQ7CisrCQlicmVhazsKKysJZGVmYXVsdDoK KysJCXJldCA9IC1FSU5WQUw7CisrCQlicmVhazsKKysJfQorKworKwlyZXR1cm4gcmV0OworK30K KysKKytzdGF0aWMgaW50IGlzcDR2aWRfdHJ5X2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpwcml2LAorKwkJCQkgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCisreworKwlzdHJ1 Y3QgaXNwNHZpZF9kZXYgKmlzcF92ZGV2ID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKysJc3RydWN0 IHY0bDJfcGl4X2Zvcm1hdCAqZm9ybWF0ID0gJmYtPmZtdC5waXg7CisrCWNvbnN0IHN0cnVjdCB2 NGwyX2ZybXNpemVfZGlzY3JldGUgKmZzejsKKysJc2l6ZV90IGk7CisrCisrCS8qCisrCSAqIENo ZWNrIGlmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGUgcmVxdWVzdGVkIGZvcm1hdCwgdXNlIHRo ZSBkZWZhdWx0CisrCSAqIGZvcm1hdCBvdGhlcndpc2UuCisrCSAqLworKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShpc3A0dmlkX2Zvcm1hdHMpOyBpKyspCisrCQlpZiAoaXNwNHZpZF9mb3Jt YXRzW2ldID09IGZvcm1hdC0+cGl4ZWxmb3JtYXQpCisrCQkJYnJlYWs7CisrCisrCWlmIChpID09 IEFSUkFZX1NJWkUoaXNwNHZpZF9mb3JtYXRzKSkKKysJCWZvcm1hdC0+cGl4ZWxmb3JtYXQgPSBJ U1A0VklEX0RFRkFVTFRfRk1UOworKworKwlzd2l0Y2ggKGZvcm1hdC0+cGl4ZWxmb3JtYXQpIHsK KysJY2FzZSBWNEwyX1BJWF9GTVRfTlYxMjoKKysJY2FzZSBWNEwyX1BJWF9GTVRfWVVZVjoKKysJ CWZzeiA9IHY0bDJfZmluZF9uZWFyZXN0X3NpemUoaXNwNHZpZF9mcm1zaXplLAorKwkJCQkJICAg ICBBUlJBWV9TSVpFKGlzcDR2aWRfZnJtc2l6ZSksCisrCQkJCQkgICAgIHdpZHRoLCBoZWlnaHQs IGZvcm1hdC0+d2lkdGgsCisrCQkJCQkgICAgIGZvcm1hdC0+aGVpZ2h0KTsKKysJCWZvcm1hdC0+ d2lkdGggPSBmc3otPndpZHRoOworKwkJZm9ybWF0LT5oZWlnaHQgPSBmc3otPmhlaWdodDsKKysJ CWJyZWFrOworKwlkZWZhdWx0OgorKwkJZGV2X2Vycihpc3BfdmRldi0+ZGV2LCAiJXN8dW5zdXBw b3J0ZWQgZm10PSV1XG4iLAorKwkJCWlzcF92ZGV2LT52ZGV2Lm5hbWUsCisrCQkJZm9ybWF0LT5w aXhlbGZvcm1hdCk7CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwkvKgorKwkgKiBUaGVy ZSBpcyBubyBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUsIGFzIGZhaWx1cmUgd2lsbCBu ZXZlcgorKwkgKiBoYXBwZW4gaGVyZQorKwkgKi8KKysJaXNwNHZpZF9maWxsX2J1ZmZlcl9zaXpl KGZvcm1hdCk7CisrCisrCWlmIChmb3JtYXQtPmZpZWxkID09IFY0TDJfRklFTERfQU5ZKQorKwkJ Zm9ybWF0LT5maWVsZCA9IGlzcDR2aWRfZm10X2RlZmF1bHQuZmllbGQ7CisrCisrCWlmIChmb3Jt YXQtPmNvbG9yc3BhY2UgPT0gVjRMMl9DT0xPUlNQQUNFX0RFRkFVTFQpCisrCQlmb3JtYXQtPmNv bG9yc3BhY2UgPSBpc3A0dmlkX2ZtdF9kZWZhdWx0LmNvbG9yc3BhY2U7CisrCisrCXJldHVybiAw OworK30KKysKKytzdGF0aWMgaW50IGlzcDR2aWRfc2V0X2ZtdF8yX2lzcChzdHJ1Y3QgdjRsMl9z dWJkZXYgKnNkZXYsCisrCQkJCSBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXhfZm10KQorK3sK KysJc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCBmbXQgPSB7fTsKKysKKysJc3dpdGNoIChwaXhf Zm10LT5waXhlbGZvcm1hdCkgeworKwljYXNlIFY0TDJfUElYX0ZNVF9OVjEyOgorKwkJZm10LmZv cm1hdC5jb2RlID0gTUVESUFfQlVTX0ZNVF9ZVVlWOF8xXzVYODsKKysJCWJyZWFrOworKwljYXNl IFY0TDJfUElYX0ZNVF9ZVVlWOgorKwkJZm10LmZvcm1hdC5jb2RlID0gTUVESUFfQlVTX0ZNVF9Z VVlWOF8xWDE2OworKwkJYnJlYWs7CisrCWRlZmF1bHQ6CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJ fQorKwlmbXQud2hpY2ggPSBWNEwyX1NVQkRFVl9GT1JNQVRfQUNUSVZFOworKwlmbXQucGFkID0g SVNQNFZJRF9QQURfVklERU9fT1VUUFVUOworKwlmbXQuZm9ybWF0LndpZHRoID0gcGl4X2ZtdC0+ d2lkdGg7CisrCWZtdC5mb3JtYXQuaGVpZ2h0ID0gcGl4X2ZtdC0+aGVpZ2h0OworKwlyZXR1cm4g djRsMl9zdWJkZXZfY2FsbChzZGV2LCBwYWQsIHNldF9mbXQsIE5VTEwsICZmbXQpOworK30KKysK KytzdGF0aWMgaW50IGlzcDR2aWRfc19mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p ZCAqcHJpdiwKKysJCQkJIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKKyt7CisrCXN0cnVjdCBpc3A0 dmlkX2RldiAqaXNwX3ZkZXYgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworKwlpbnQgcmV0OworKwor KwkvKiBEbyBub3QgY2hhbmdlIHRoZSBmb3JtYXQgd2hpbGUgc3RyZWFtIGlzIG9uICovCisrCWlm ICh2YjJfaXNfYnVzeSgmaXNwX3ZkZXYtPnZicSkpCisrCQlyZXR1cm4gLUVCVVNZOworKworKwly ZXQgPSBpc3A0dmlkX3RyeV9mbXRfdmlkX2NhcChmaWxlLCBwcml2LCBmKTsKKysJaWYgKHJldCkK KysJCXJldHVybiByZXQ7CisrCisrCWRldl9kYmcoaXNwX3ZkZXYtPmRldiwgIiVzfHdpZHRoIGhl aWdodDoldXgldS0+JXV4JXVcbiIsCisrCQlpc3BfdmRldi0+dmRldi5uYW1lLAorKwkJaXNwX3Zk ZXYtPmZvcm1hdC53aWR0aCwgaXNwX3ZkZXYtPmZvcm1hdC5oZWlnaHQsCisrCQlmLT5mbXQucGl4 LndpZHRoLCBmLT5mbXQucGl4LmhlaWdodCk7CisrCWRldl9kYmcoaXNwX3ZkZXYtPmRldiwgIiVz fHBpeGVsZm9ybWF0OjB4JXgtMHgleFxuIiwKKysJCWlzcF92ZGV2LT52ZGV2Lm5hbWUsIGlzcF92 ZGV2LT5mb3JtYXQucGl4ZWxmb3JtYXQsCisrCQlmLT5mbXQucGl4LnBpeGVsZm9ybWF0KTsKKysJ ZGV2X2RiZyhpc3BfdmRldi0+ZGV2LCAiJXN8Ynl0ZXNwZXJsaW5lOiV1LT4ldVxuIiwKKysJCWlz cF92ZGV2LT52ZGV2Lm5hbWUsIGlzcF92ZGV2LT5mb3JtYXQuYnl0ZXNwZXJsaW5lLAorKwkJZi0+ Zm10LnBpeC5ieXRlc3BlcmxpbmUpOworKwlkZXZfZGJnKGlzcF92ZGV2LT5kZXYsICIlc3xzaXpl aW1hZ2U6JXUtPiV1XG4iLAorKwkJaXNwX3ZkZXYtPnZkZXYubmFtZSwgaXNwX3ZkZXYtPmZvcm1h dC5zaXplaW1hZ2UsCisrCQlmLT5mbXQucGl4LnNpemVpbWFnZSk7CisrCisrCWlzcF92ZGV2LT5m b3JtYXQgPSBmLT5mbXQucGl4OworKwlyZXQgPSBpc3A0dmlkX3NldF9mbXRfMl9pc3AoaXNwX3Zk ZXYtPmlzcF9zZGV2LCAmaXNwX3ZkZXYtPmZvcm1hdCk7CisrCisrCXJldHVybiByZXQ7CisrfQor KworK3N0YXRpYyBpbnQgaXNwNHZpZF9lbnVtX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpwcml2LAorKwkJCQkgICAgc3RydWN0IHY0bDJfZm10ZGVzYyAqZikKKyt7CisrCXN0 cnVjdCBpc3A0dmlkX2RldiAqaXNwX3ZkZXYgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworKworKwlz d2l0Y2ggKGYtPmluZGV4KSB7CisrCWNhc2UgMDoKKysJCWYtPnBpeGVsZm9ybWF0ID0gVjRMMl9Q SVhfRk1UX05WMTI7CisrCQlicmVhazsKKysJY2FzZSAxOgorKwkJZi0+cGl4ZWxmb3JtYXQgPSBW NEwyX1BJWF9GTVRfWVVZVjsKKysJCWJyZWFrOworKwlkZWZhdWx0OgorKwkJcmV0dXJuIC1FSU5W QUw7CisrCX0KKysKKysJZGV2X2RiZyhpc3BfdmRldi0+ZGV2LCAiJXN8aW5kZXg9JWQsIHBpeGVs Zm9ybWF0PTB4JVhcbiIsCisrCQlpc3BfdmRldi0+dmRldi5uYW1lLCBmLT5pbmRleCwgZi0+cGl4 ZWxmb3JtYXQpOworKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBpc3A0dmlkX2Vu dW1fZnJhbWVzaXplcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisrCQkJCSAgIHN0cnVj dCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSkKKyt7CisrCXN0cnVjdCBpc3A0dmlkX2RldiAqaXNw X3ZkZXYgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworKwl1bnNpZ25lZCBpbnQgaTsKKysKKysJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaXNwNHZpZF9mb3JtYXRzKTsgaSsrKSB7CisrCQlpZiAo aXNwNHZpZF9mb3JtYXRzW2ldID09IGZzaXplLT5waXhlbF9mb3JtYXQpCisrCQkJYnJlYWs7Cisr CX0KKysKKysJaWYgKGkgPT0gQVJSQVlfU0laRShpc3A0dmlkX2Zvcm1hdHMpKQorKwkJcmV0dXJu IC1FSU5WQUw7CisrCisrCWlmIChmc2l6ZS0+aW5kZXggPCBBUlJBWV9TSVpFKGlzcDR2aWRfZnJt c2l6ZSkpIHsKKysJCWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfRElTQ1JFVEU7Cisr CQlmc2l6ZS0+ZGlzY3JldGUgPSBpc3A0dmlkX2ZybXNpemVbZnNpemUtPmluZGV4XTsKKysJCWRl dl9kYmcoaXNwX3ZkZXYtPmRldiwgIiVzfHNpemVbJWRdPSVkeCVkXG4iLAorKwkJCWlzcF92ZGV2 LT52ZGV2Lm5hbWUsIGZzaXplLT5pbmRleCwKKysJCQlmc2l6ZS0+ZGlzY3JldGUud2lkdGgsIGZz aXplLT5kaXNjcmV0ZS5oZWlnaHQpOworKwl9IGVsc2UgeworKwkJcmV0dXJuIC1FSU5WQUw7Cisr CX0KKysKKysJcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgaXNwNHZpZF9pb2N0bF9lbnVt X2ZyYW1laW50ZXJ2YWxzKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorKwkJCQkJICAg ICBzdHJ1Y3QgdjRsMl9mcm1pdmFsZW51bSAqZml2YWwpCisreworKwlzdHJ1Y3QgaXNwNHZpZF9k ZXYgKmlzcF92ZGV2ID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKysJc2l6ZV90IGk7CisrCisrCWlm IChmaXZhbC0+aW5kZXggPj0gQVJSQVlfU0laRShpc3A0dmlkX3RwZnMpKQorKwkJcmV0dXJuIC1F SU5WQUw7CisrCisrCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGlzcDR2aWRfZm9ybWF0cyk7 IGkrKykKKysJCWlmIChpc3A0dmlkX2Zvcm1hdHNbaV0gPT0gZml2YWwtPnBpeGVsX2Zvcm1hdCkK KysJCQlicmVhazsKKysKKysJaWYgKGkgPT0gQVJSQVlfU0laRShpc3A0dmlkX2Zvcm1hdHMpKQor KwkJcmV0dXJuIC1FSU5WQUw7CisrCisrCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGlzcDR2 aWRfZnJtc2l6ZSk7IGkrKykKKysJCWlmIChpc3A0dmlkX2ZybXNpemVbaV0ud2lkdGggPT0gZml2 YWwtPndpZHRoICYmCisrCQkgICAgaXNwNHZpZF9mcm1zaXplW2ldLmhlaWdodCA9PSBmaXZhbC0+ aGVpZ2h0KQorKwkJCWJyZWFrOworKworKwlpZiAoaSA9PSBBUlJBWV9TSVpFKGlzcDR2aWRfZnJt c2l6ZSkpCisrCQlyZXR1cm4gLUVJTlZBTDsKKysKKysJZml2YWwtPnR5cGUgPSBWNEwyX0ZSTUlW QUxfVFlQRV9ESVNDUkVURTsKKysJZml2YWwtPmRpc2NyZXRlID0gaXNwNHZpZF90cGZzW2ZpdmFs LT5pbmRleF07CisrCXY0bDJfc2ltcGxpZnlfZnJhY3Rpb24oJmZpdmFsLT5kaXNjcmV0ZS5udW1l cmF0b3IsCisrCQkJICAgICAgICZmaXZhbC0+ZGlzY3JldGUuZGVub21pbmF0b3IsIDgsIDMzMyk7 CisrCisrCWRldl9kYmcoaXNwX3ZkZXYtPmRldiwgIiVzfGludGVydmFsWyVkXT0lZC8lZFxuIiwK KysJCWlzcF92ZGV2LT52ZGV2Lm5hbWUsIGZpdmFsLT5pbmRleCwKKysJCWZpdmFsLT5kaXNjcmV0 ZS5udW1lcmF0b3IsCisrCQlmaXZhbC0+ZGlzY3JldGUuZGVub21pbmF0b3IpOworKworKwlyZXR1 cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBpc3A0dmlkX2lvY3RsX2dfcGFyYW0oc3RydWN0IGZp bGUgKmZpbGUsIHZvaWQgKnByaXYsCisrCQkJCSBzdHJ1Y3QgdjRsMl9zdHJlYW1wYXJtICpwYXJh bSkKKyt7CisrCXN0cnVjdCB2NGwyX2NhcHR1cmVwYXJtICpjYXB0dXJlID0gJnBhcmFtLT5wYXJt LmNhcHR1cmU7CisrCXN0cnVjdCBpc3A0dmlkX2RldiAqaXNwX3ZkZXYgPSB2aWRlb19kcnZkYXRh KGZpbGUpOworKworKwlpZiAocGFyYW0tPnR5cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBU VVJFKQorKwkJcmV0dXJuIC1FSU5WQUw7CisrCisrCWNhcHR1cmUtPmNhcGFiaWxpdHkgICA9IFY0 TDJfQ0FQX1RJTUVQRVJGUkFNRTsKKysJY2FwdHVyZS0+dGltZXBlcmZyYW1lID0gaXNwX3ZkZXYt PnRpbWVwZXJmcmFtZTsKKysJY2FwdHVyZS0+cmVhZGJ1ZmZlcnMgID0gMDsKKysKKysJZGV2X2Ri Zyhpc3BfdmRldi0+ZGV2LCAiJXN8dGltZXBlcmZyYW1lPSVkLyVkXG4iLCBpc3BfdmRldi0+dmRl di5uYW1lLAorKwkJY2FwdHVyZS0+dGltZXBlcmZyYW1lLm51bWVyYXRvciwKKysJCWNhcHR1cmUt PnRpbWVwZXJmcmFtZS5kZW5vbWluYXRvcik7CisrCisrCXJldHVybiAwOworK30KKysKKytzdGF0 aWMgY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIGlzcDR2aWRfdmRldl9pb2N0bF9vcHMgPSB7 CisrCS52aWRpb2NfcXVlcnljYXAgICAgICAgICAgICA9IGlzcDR2aWRfaW9jdGxfcXVlcnljYXAs CisrCS52aWRpb2NfZW51bV9mbXRfdmlkX2NhcCAgICA9IGlzcDR2aWRfZW51bV9mbXRfdmlkX2Nh cCwKKysJLnZpZGlvY19nX2ZtdF92aWRfY2FwICAgICAgID0gaXNwNHZpZF9nX2ZtdF92aWRfY2Fw LAorKwkudmlkaW9jX3NfZm10X3ZpZF9jYXAgICAgICAgPSBpc3A0dmlkX3NfZm10X3ZpZF9jYXAs CisrCS52aWRpb2NfdHJ5X2ZtdF92aWRfY2FwICAgICA9IGlzcDR2aWRfdHJ5X2ZtdF92aWRfY2Fw LAorKwkudmlkaW9jX3JlcWJ1ZnMgICAgICAgICAgICAgPSB2YjJfaW9jdGxfcmVxYnVmcywKKysJ LnZpZGlvY19xdWVyeWJ1ZiAgICAgICAgICAgID0gdmIyX2lvY3RsX3F1ZXJ5YnVmLAorKwkudmlk aW9jX3FidWYgICAgICAgICAgICAgICAgPSB2YjJfaW9jdGxfcWJ1ZiwKKysJLnZpZGlvY19leHBi dWYgICAgICAgICAgICAgID0gdmIyX2lvY3RsX2V4cGJ1ZiwKKysJLnZpZGlvY19kcWJ1ZiAgICAg ICAgICAgICAgID0gdmIyX2lvY3RsX2RxYnVmLAorKwkudmlkaW9jX2NyZWF0ZV9idWZzICAgICAg ICAgPSB2YjJfaW9jdGxfY3JlYXRlX2J1ZnMsCisrCS52aWRpb2NfcHJlcGFyZV9idWYgICAgICAg ICA9IHZiMl9pb2N0bF9wcmVwYXJlX2J1ZiwKKysJLnZpZGlvY19zdHJlYW1vbiAgICAgICAgICAg ID0gdmIyX2lvY3RsX3N0cmVhbW9uLAorKwkudmlkaW9jX3N0cmVhbW9mZiAgICAgICAgICAgPSB2 YjJfaW9jdGxfc3RyZWFtb2ZmLAorKwkudmlkaW9jX2dfcGFybSAgICAgICAgICAgICAgPSBpc3A0 dmlkX2lvY3RsX2dfcGFyYW0sCisrCS52aWRpb2Nfc19wYXJtICAgICAgICAgICAgICA9IGlzcDR2 aWRfaW9jdGxfZ19wYXJhbSwKKysJLnZpZGlvY19lbnVtX2ZyYW1lc2l6ZXMgICAgID0gaXNwNHZp ZF9lbnVtX2ZyYW1lc2l6ZXMsCisrCS52aWRpb2NfZW51bV9mcmFtZWludGVydmFscyA9IGlzcDR2 aWRfaW9jdGxfZW51bV9mcmFtZWludGVydmFscywKKyt9OworKworK3N0YXRpYyB1bnNpZ25lZCBp bnQgaXNwNHZpZF9nZXRfaW1hZ2Vfc2l6ZShzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpmbXQpCisr eworKwlzd2l0Y2ggKGZtdC0+cGl4ZWxmb3JtYXQpIHsKKysJY2FzZSBWNEwyX1BJWF9GTVRfTlYx MjoKKysJCXJldHVybiBmbXQtPndpZHRoICogZm10LT5oZWlnaHQgKiAzIC8gMjsKKysJY2FzZSBW NEwyX1BJWF9GTVRfWVVZVjoKKysJCXJldHVybiBmbXQtPndpZHRoICogZm10LT5oZWlnaHQgKiAy OworKwlkZWZhdWx0OgorKwkJcmV0dXJuIDA7CisrCX0KKyt9CisrCisrc3RhdGljIGludCBpc3A0 dmlkX3FvcHNfcXVldWVfc2V0dXAoc3RydWN0IHZiMl9xdWV1ZSAqdnEsCisrCQkJCSAgICB1bnNp Z25lZCBpbnQgKm5idWZmZXJzLAorKwkJCQkgICAgdW5zaWduZWQgaW50ICpucGxhbmVzLCB1bnNp Z25lZCBpbnQgc2l6ZXNbXSwKKysJCQkJICAgIHN0cnVjdCBkZXZpY2UgKmFsbG9jX2RldnNbXSkK Kyt7CisrCXN0cnVjdCBpc3A0dmlkX2RldiAqaXNwX3ZkZXYgPSB2YjJfZ2V0X2Rydl9wcml2KHZx KTsKKysJdW5zaWduZWQgaW50IHFfbnVtX2J1ZnMgPSB2YjJfZ2V0X251bV9idWZmZXJzKHZxKTsK KysKKysJaWYgKCpucGxhbmVzID4gMSkgeworKwkJZGV2X2Vycihpc3BfdmRldi0+ZGV2LAorKwkJ CSJmYWlsIHRvIHNldHVwIHF1ZXVlLCBubyBtcGxhbmUgc3VwcG9ydGVkICV1XG4iLAorKwkJCSpu cGxhbmVzKTsKKysJCXJldHVybiAtRUlOVkFMOworKwl9CisrCisrCWlmICgqbnBsYW5lcyA9PSAx KSB7CisrCQl1bnNpZ25lZCBpbnQgc2l6ZTsKKysKKysJCXNpemUgPSBpc3A0dmlkX2dldF9pbWFn ZV9zaXplKCZpc3BfdmRldi0+Zm9ybWF0KTsKKysJCWlmIChzaXplc1swXSA8IHNpemUpIHsKKysJ CQlkZXZfZXJyKGlzcF92ZGV2LT5kZXYsCisrCQkJCSJmYWlsIGZvciBzbWFsbCBwbGFuZSBzaXpl ICV1LCAldSBleHBlY3RlZFxuIiwKKysJCQkJc2l6ZXNbMF0sIHNpemUpOworKwkJCXJldHVybiAt RUlOVkFMOworKwkJfQorKwl9CisrCisrCWlmIChxX251bV9idWZzICsgKm5idWZmZXJzIDwgSVNQ NElGX01BWF9TVFJFQU1fQlVGX0NPVU5UKQorKwkJKm5idWZmZXJzID0gSVNQNElGX01BWF9TVFJF QU1fQlVGX0NPVU5UIC0gcV9udW1fYnVmczsKKysKKysJc3dpdGNoIChpc3BfdmRldi0+Zm9ybWF0 LnBpeGVsZm9ybWF0KSB7CisrCWNhc2UgVjRMMl9QSVhfRk1UX05WMTI6CisrCWNhc2UgVjRMMl9Q SVhfRk1UX1lVWVY6IHsKKysJCSpucGxhbmVzID0gMTsKKysJCXNpemVzWzBdID0gbWF4KHNpemVz WzBdLCBpc3BfdmRldi0+Zm9ybWF0LnNpemVpbWFnZSk7CisrCQlpc3BfdmRldi0+Zm9ybWF0LnNp emVpbWFnZSA9IHNpemVzWzBdOworKwl9CisrCWJyZWFrOworKwlkZWZhdWx0OgorKwkJZGV2X2Vy cihpc3BfdmRldi0+ZGV2LCAiJXN8dW5zdXBwb3J0ZWQgZm10PSV1XG4iLAorKwkJCWlzcF92ZGV2 LT52ZGV2Lm5hbWUsIGlzcF92ZGV2LT5mb3JtYXQucGl4ZWxmb3JtYXQpOworKwkJcmV0dXJuIC1F SU5WQUw7CisrCX0KKysKKysJZGV2X2RiZyhpc3BfdmRldi0+ZGV2LCAiJXN8Km5idWZmZXJzPSV1 ICpucGxhbmVzPSV1IHNpemVzWzBdPSV1XG4iLAorKwkJaXNwX3ZkZXYtPnZkZXYubmFtZSwKKysJ CSpuYnVmZmVycywgKm5wbGFuZXMsIHNpemVzWzBdKTsKKysKKysJcmV0dXJuIDA7CisrfQorKwor K3N0YXRpYyB2b2lkIGlzcDR2aWRfcW9wc19idWZmZXJfcXVldWUoc3RydWN0IHZiMl9idWZmZXIg KnZiKQorK3sKKysJc3RydWN0IGlzcDR2aWRfY2FwdHVyZV9idWZmZXIgKmJ1ZiA9CisrCQljb250 YWluZXJfb2YodmIsIHN0cnVjdCBpc3A0dmlkX2NhcHR1cmVfYnVmZmVyLCB2YjIudmIyX2J1Zik7 CisrCXN0cnVjdCBpc3A0dmlkX2RldiAqaXNwX3ZkZXYgPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52 YjJfcXVldWUpOworKwlzdHJ1Y3QgaXNwNGlmX2ltZ19idWZfaW5mbyAqaW1nX2J1ZiA9ICZidWYt PmltZ19idWY7CisrCXZvaWQgKnZhZGRyID0gdmIyX3BsYW5lX3ZhZGRyKHZiLCAwKTsKKysKKysJ ZGV2X2RiZyhpc3BfdmRldi0+ZGV2LCAicXVldWUgYnVmLCB2YWRkciAlcCwgZ3B1dmEgMHglbGx4 LCBzaXplICV1XG4iLAorKwkJdmFkZHIsIGJ1Zi0+Z3B1X2FkZHIsIHZiLT5wbGFuZXNbMF0ubGVu Z3RoKTsKKysKKysJc3dpdGNoIChpc3BfdmRldi0+Zm9ybWF0LnBpeGVsZm9ybWF0KSB7CisrCWNh c2UgVjRMMl9QSVhfRk1UX05WMTI6IHsKKysJCXUzMiB5X3NpemUgPSBpc3BfdmRldi0+Zm9ybWF0 LnNpemVpbWFnZSAvIDMgKiAyOworKwkJdTMyIHV2X3NpemUgPSBpc3BfdmRldi0+Zm9ybWF0LnNp emVpbWFnZSAvIDM7CisrCisrCQlpbWdfYnVmLT5wbGFuZXNbMF0ubGVuID0geV9zaXplOworKwkJ aW1nX2J1Zi0+cGxhbmVzWzBdLnN5c19hZGRyID0gdmFkZHI7CisrCQlpbWdfYnVmLT5wbGFuZXNb MF0ubWNfYWRkciA9IGJ1Zi0+Z3B1X2FkZHI7CisrCisrCQlkZXZfZGJnKGlzcF92ZGV2LT5kZXYs ICJpbWdfYnVmWzBdOiBtYz0weCVsbHggc2l6ZT0ldVxuIiwKKysJCQlpbWdfYnVmLT5wbGFuZXNb MF0ubWNfYWRkciwKKysJCQlpbWdfYnVmLT5wbGFuZXNbMF0ubGVuKTsKKysKKysJCWltZ19idWYt PnBsYW5lc1sxXS5sZW4gPSB1dl9zaXplOworKwkJaW1nX2J1Zi0+cGxhbmVzWzFdLnN5c19hZGRy ID0gdmFkZHIgKyB5X3NpemU7CisrCQlpbWdfYnVmLT5wbGFuZXNbMV0ubWNfYWRkciA9IGJ1Zi0+ Z3B1X2FkZHIgKyB5X3NpemU7CisrCisrCQlkZXZfZGJnKGlzcF92ZGV2LT5kZXYsICJpbWdfYnVm WzFdOiBtYz0weCVsbHggc2l6ZT0ldVxuIiwKKysJCQlpbWdfYnVmLT5wbGFuZXNbMV0ubWNfYWRk ciwKKysJCQlpbWdfYnVmLT5wbGFuZXNbMV0ubGVuKTsKKysKKysJCWltZ19idWYtPnBsYW5lc1sy XS5sZW4gPSAwOworKwl9CisrCWJyZWFrOworKwljYXNlIFY0TDJfUElYX0ZNVF9ZVVlWOiB7Cisr CQlpbWdfYnVmLT5wbGFuZXNbMF0ubGVuID0gaXNwX3ZkZXYtPmZvcm1hdC5zaXplaW1hZ2U7Cisr CQlpbWdfYnVmLT5wbGFuZXNbMF0uc3lzX2FkZHIgPSB2YWRkcjsKKysJCWltZ19idWYtPnBsYW5l c1swXS5tY19hZGRyID0gYnVmLT5ncHVfYWRkcjsKKysKKysJCWRldl9kYmcoaXNwX3ZkZXYtPmRl diwgImltZ19idWZbMF06IG1jPTB4JWxseCBzaXplPSV1XG4iLAorKwkJCWltZ19idWYtPnBsYW5l c1swXS5tY19hZGRyLAorKwkJCWltZ19idWYtPnBsYW5lc1swXS5sZW4pOworKworKwkJaW1nX2J1 Zi0+cGxhbmVzWzFdLmxlbiA9IDA7CisrCQlpbWdfYnVmLT5wbGFuZXNbMl0ubGVuID0gMDsKKysJ fQorKwlicmVhazsKKysJZGVmYXVsdDoKKysJCWRldl9lcnIoaXNwX3ZkZXYtPmRldiwgIiVzfHVu c3VwcG9ydGVkIGZtdD0ldVxuIiwKKysJCQlpc3BfdmRldi0+dmRldi5uYW1lLCBpc3BfdmRldi0+ Zm9ybWF0LnBpeGVsZm9ybWF0KTsKKysJCXJldHVybjsKKysJfQorKworKwlpZiAoaXNwX3ZkZXYt PnN0cmVhbV9zdGFydGVkKQorKwkJaXNwNHNkX2lvY19zZW5kX2ltZ19idWYoaXNwX3ZkZXYtPmlz cF9zZGV2LCBpbWdfYnVmKTsKKysKKysJc2NvcGVkX2d1YXJkKG11dGV4LCAmaXNwX3ZkZXYtPmJ1 Zl9saXN0X2xvY2spCisrCQlsaXN0X2FkZF90YWlsKCZidWYtPmxpc3QsICZpc3BfdmRldi0+YnVm X2xpc3QpOworK30KKysKKytzdGF0aWMgaW50IGlzcDR2aWRfcW9wc19zdGFydF9zdHJlYW1pbmco c3RydWN0IHZiMl9xdWV1ZSAqdnEsCisrCQkJCQl1bnNpZ25lZCBpbnQgY291bnQpCisreworKwlz dHJ1Y3QgaXNwNHZpZF9kZXYgKmlzcF92ZGV2ID0gdmIyX2dldF9kcnZfcHJpdih2cSk7CisrCXN0 cnVjdCBpc3A0dmlkX2NhcHR1cmVfYnVmZmVyICppc3A0dmlkX2J1ZjsKKysJc3RydWN0IG1lZGlh X2VudGl0eSAqZW50aXR5OworKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRldjsKKysJc3RydWN0 IG1lZGlhX3BhZCAqcGFkOworKwlpbnQgcmV0ID0gMDsKKysKKysJaXNwX3ZkZXYtPnNlcXVlbmNl ID0gMDsKKysKKysJcmV0ID0gaXNwNHNkX3B3cm9uX2FuZF9pbml0KGlzcF92ZGV2LT5pc3Bfc2Rl dik7CisrCWlmIChyZXQpIHsKKysJCWRldl9lcnIoaXNwX3ZkZXYtPmRldiwgInBvd2VyIHVwIGlz cCBmYWlsICVkXG4iLCByZXQpOworKwkJZ290byByZWxlYXNlX2J1ZmZlcnM7CisrCX0KKysKKysJ ZW50aXR5ID0gJmlzcF92ZGV2LT52ZGV2LmVudGl0eTsKKysJd2hpbGUgKDEpIHsKKysJCXBhZCA9 ICZlbnRpdHktPnBhZHNbMF07CisrCQlpZiAoIShwYWQtPmZsYWdzICYgTUVESUFfUEFEX0ZMX1NJ TkspKQorKwkJCWJyZWFrOworKworKwkJcGFkID0gbWVkaWFfcGFkX3JlbW90ZV9wYWRfZmlyc3Qo cGFkKTsKKysJCWlmICghcGFkIHx8ICFpc19tZWRpYV9lbnRpdHlfdjRsMl9zdWJkZXYocGFkLT5l bnRpdHkpKQorKwkJCWJyZWFrOworKworKwkJZW50aXR5ID0gcGFkLT5lbnRpdHk7CisrCQlzdWJk ZXYgPSBtZWRpYV9lbnRpdHlfdG9fdjRsMl9zdWJkZXYoZW50aXR5KTsKKysKKysJCXJldCA9IHY0 bDJfc3ViZGV2X2NhbGwoc3ViZGV2LCB2aWRlbywgc19zdHJlYW0sIDEpOworKwkJaWYgKHJldCA8 IDAgJiYgcmV0ICE9IC1FTk9JT0NUTENNRCkgeworKwkJCWRldl9kYmcoaXNwX3ZkZXYtPmRldiwg ImZhaWwgc3RhcnQgc3RyZWFtaW5nOiAlcyAlZFxuIiwKKysJCQkJc3ViZGV2LT5uYW1lLCByZXQp OworKwkJCWdvdG8gcmVsZWFzZV9idWZmZXJzOworKwkJfQorKwl9CisrCisrCWxpc3RfZm9yX2Vh Y2hfZW50cnkoaXNwNHZpZF9idWYsICZpc3BfdmRldi0+YnVmX2xpc3QsIGxpc3QpCisrCQlpc3A0 c2RfaW9jX3NlbmRfaW1nX2J1Zihpc3BfdmRldi0+aXNwX3NkZXYsCisrCQkJCQkmaXNwNHZpZF9i dWYtPmltZ19idWYpOworKworKwlpc3BfdmRldi0+c3RyZWFtX3N0YXJ0ZWQgPSB0cnVlOworKwor KwlyZXR1cm4gMDsKKysKKytyZWxlYXNlX2J1ZmZlcnM6CisrCWlzcDR2aWRfY2FwdHVyZV9yZXR1 cm5fYWxsX2J1ZmZlcnMoaXNwX3ZkZXYsIFZCMl9CVUZfU1RBVEVfUVVFVUVEKTsKKysJcmV0dXJu IHJldDsKKyt9CisrCisrc3RhdGljIHZvaWQgaXNwNHZpZF9xb3BzX3N0b3Bfc3RyZWFtaW5nKHN0 cnVjdCB2YjJfcXVldWUgKnZxKQorK3sKKysJc3RydWN0IGlzcDR2aWRfZGV2ICppc3BfdmRldiA9 IHZiMl9nZXRfZHJ2X3ByaXYodnEpOworKwlzdHJ1Y3QgbWVkaWFfZW50aXR5ICplbnRpdHk7Cisr CXN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2OworKwlzdHJ1Y3QgbWVkaWFfcGFkICpwYWQ7Cisr CWludCByZXQ7CisrCisrCWVudGl0eSA9ICZpc3BfdmRldi0+dmRldi5lbnRpdHk7CisrCXdoaWxl ICgxKSB7CisrCQlwYWQgPSAmZW50aXR5LT5wYWRzWzBdOworKwkJaWYgKCEocGFkLT5mbGFncyAm IE1FRElBX1BBRF9GTF9TSU5LKSkKKysJCQlicmVhazsKKysKKysJCXBhZCA9IG1lZGlhX3BhZF9y ZW1vdGVfcGFkX2ZpcnN0KHBhZCk7CisrCQlpZiAoIXBhZCB8fCAhaXNfbWVkaWFfZW50aXR5X3Y0 bDJfc3ViZGV2KHBhZC0+ZW50aXR5KSkKKysJCQlicmVhazsKKysKKysJCWVudGl0eSA9IHBhZC0+ ZW50aXR5OworKwkJc3ViZGV2ID0gbWVkaWFfZW50aXR5X3RvX3Y0bDJfc3ViZGV2KGVudGl0eSk7 CisrCisrCQlyZXQgPSB2NGwyX3N1YmRldl9jYWxsKHN1YmRldiwgdmlkZW8sIHNfc3RyZWFtLCAw KTsKKysKKysJCWlmIChyZXQgPCAwICYmIHJldCAhPSAtRU5PSU9DVExDTUQpCisrCQkJZGV2X2Ri Zyhpc3BfdmRldi0+ZGV2LCAiZmFpbCBzdG9wIHN0cmVhbWluZzogJXMgJWRcbiIsCisrCQkJCXN1 YmRldi0+bmFtZSwgcmV0KTsKKysJfQorKworKwlpc3BfdmRldi0+c3RyZWFtX3N0YXJ0ZWQgPSBm YWxzZTsKKysJaXNwNHNkX3B3cm9mZl9hbmRfZGVpbml0KGlzcF92ZGV2LT5pc3Bfc2Rldik7Cisr CisrCS8qIFJlbGVhc2UgYWxsIGFjdGl2ZSBidWZmZXJzICovCisrCWlzcDR2aWRfY2FwdHVyZV9y ZXR1cm5fYWxsX2J1ZmZlcnMoaXNwX3ZkZXYsIFZCMl9CVUZfU1RBVEVfRVJST1IpOworK30KKysK KytzdGF0aWMgaW50IGlzcDR2aWRfcW9wc19idWZfaW5pdChzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIp CisreworKwlzdHJ1Y3QgaXNwNHZpZF9jYXB0dXJlX2J1ZmZlciAqYnVmID0KKysJCWNvbnRhaW5l cl9vZih2Yiwgc3RydWN0IGlzcDR2aWRfY2FwdHVyZV9idWZmZXIsIHZiMi52YjJfYnVmKTsKKysJ c3RydWN0IGlzcDR2aWRfZGV2ICppc3BfdmRldiA9IHZiMl9nZXRfZHJ2X3ByaXYodmItPnZiMl9x dWV1ZSk7CisrCXZvaWQgKm1lbV9wcml2ID0gdmItPnBsYW5lc1swXS5tZW1fcHJpdjsKKysJc3Ry dWN0IGRldmljZSAqZGV2ID0gaXNwX3ZkZXYtPmRldjsKKysJdTY0IGdwdV9hZGRyOworKwl2b2lk ICpibzsKKysJaW50IHJldDsKKysKKysJaWYgKHZiLT5wbGFuZXNbMF0uZGJ1ZikgeworKwkJYnVm LT5kYnVmID0gdmItPnBsYW5lc1swXS5kYnVmOworKwl9IGVsc2UgeworKwkJLyoKKysJCSAqIEhB U19ETUEgaXMgYSBLY29uZmlnIGRlcGVuZGVuY3kgc28gQ09ORklHX0hBU19ETUEgaXMgYWx3YXlz CisrCQkgKiBkZWZpbmVkIHdoZW4gdGhpcyBkcml2ZXIgaXMgY29tcGlsZWQuIFRoZSAjZWxzZSBi cmFuY2ggaXMKKysJCSAqIGtlcHQgYXMgYSBzYWZlZ3VhcmQgaW4gY2FzZSB0aGUgZGVwZW5kZW5j eSBpcyBldmVyIHJlbW92ZWQuCisrCQkgKi8KKysjaWZkZWYgQ09ORklHX0hBU19ETUEKKysJCWJ1 Zi0+ZGJ1ZiA9IHZiMl92bWFsbG9jX21lbW9wcy5nZXRfZG1hYnVmKHZiLCBtZW1fcHJpdiwgMCk7 CisrCQlpZiAoSVNfRVJSX09SX05VTEwoYnVmLT5kYnVmKSkgeworKwkJCWRldl9lcnIoZGV2LCAi ZmFpbCB0byBnZXQgZG1hIGJ1ZlxuIik7CisrCQkJcmV0dXJuIC1FSU5WQUw7CisrCQl9CisrI2Vs c2UKKysJCWRldl9lcnIoZGV2LCAiZ2V0IGRtYWJ1ZiBmYWlsIC0tIENPTkZJR19IQVNfRE1BIG5v dCBkZWZpbmVkXG4iKTsKKysJCWJ1Zi0+ZGJ1ZiA9IE5VTEw7CisrCQlyZXR1cm4gLUVJTlZBTDsK KysjZW5kaWYKKysJfQorKworKwkvKiBjcmVhdGUgaXNwIHVzZXIgQk8gYW5kIG9idGFpbiBncHVf YWRkciAqLworKwlyZXQgPSBpc3BfdXNlcl9idWZmZXJfYWxsb2MoZGV2LCBidWYtPmRidWYsICZi bywgJmdwdV9hZGRyKTsKKysJaWYgKHJldCkgeworKwkJZGV2X2VycihkZXYsICJmYWlsIHRvIGNy ZWF0ZSBpc3AgdXNlciBCT1xuIik7CisrCQlpZiAoIXZiLT5wbGFuZXNbMF0uZGJ1ZikgeworKwkJ CWRtYV9idWZfcHV0KGJ1Zi0+ZGJ1Zik7CisrCQkJYnVmLT5kYnVmID0gTlVMTDsKKysJCX0KKysK KysJCXJldHVybiByZXQ7CisrCX0KKysKKysJYnVmLT5ibyA9IGJvOworKwlidWYtPmdwdV9hZGRy ID0gZ3B1X2FkZHI7CisrCXJldHVybiAwOworK30KKysKKytzdGF0aWMgdm9pZCBpc3A0dmlkX3Fv cHNfYnVmX2NsZWFudXAoc3RydWN0IHZiMl9idWZmZXIgKnZiKQorK3sKKysJc3RydWN0IGlzcDR2 aWRfY2FwdHVyZV9idWZmZXIgKmJ1ZiA9CisrCQljb250YWluZXJfb2YodmIsIHN0cnVjdCBpc3A0 dmlkX2NhcHR1cmVfYnVmZmVyLCB2YjIudmIyX2J1Zik7CisrCisrCWlmIChidWYtPmJvKSB7Cisr CQlpc3BfdXNlcl9idWZmZXJfZnJlZShidWYtPmJvKTsKKysJCWJ1Zi0+Ym8gPSBOVUxMOworKwl9 CisrCisrCS8qCisrCSAqIE9ubHkgcHV0IGRtYWJ1ZnMgd2Ugb2J0YWluZWQgb3Vyc2VsdmVzIHZp YSBnZXRfZG1hYnVmLCBub3Qgb25lcworKwkgKiBwcm92aWRlZCBieSB0aGUgZnJhbWV3b3JrIGZv ciBETUFCVUYgaW1wb3J0CisrCSAqLworKwlpZiAoYnVmLT5kYnVmICYmIGJ1Zi0+ZGJ1ZiAhPSB2 Yi0+cGxhbmVzWzBdLmRidWYpCisrCQlkbWFfYnVmX3B1dChidWYtPmRidWYpOworKworKwlidWYt PmRidWYgPSBOVUxMOworK30KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHZiMl9vcHMgaXNwNHZp ZF9xb3BzID0geworKwkucXVldWVfc2V0dXAgPSBpc3A0dmlkX3FvcHNfcXVldWVfc2V0dXAsCisr CS5idWZfaW5pdCA9IGlzcDR2aWRfcW9wc19idWZfaW5pdCwKKysJLmJ1Zl9jbGVhbnVwID0gaXNw NHZpZF9xb3BzX2J1Zl9jbGVhbnVwLAorKwkuc3RhcnRfc3RyZWFtaW5nID0gaXNwNHZpZF9xb3Bz X3N0YXJ0X3N0cmVhbWluZywKKysJLnN0b3Bfc3RyZWFtaW5nID0gaXNwNHZpZF9xb3BzX3N0b3Bf c3RyZWFtaW5nLAorKwkuYnVmX3F1ZXVlID0gaXNwNHZpZF9xb3BzX2J1ZmZlcl9xdWV1ZSwKKyt9 OworKworK2ludCBpc3A0dmlkX2Rldl9pbml0KHN0cnVjdCBpc3A0dmlkX2RldiAqaXNwX3ZkZXYs IHN0cnVjdCB2NGwyX3N1YmRldiAqaXNwX3NkKQorK3sKKysJY29uc3QgY2hhciAqdmRldl9uYW1l ID0gaXNwNHZpZF92aWRlb19kZXZfbmFtZTsKKysJc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2Rl djsKKysJc3RydWN0IHZpZGVvX2RldmljZSAqdmRldjsKKysJc3RydWN0IHZiMl9xdWV1ZSAqcTsK KysJaW50IHJldDsKKysKKysJaWYgKCFpc3BfdmRldiB8fCAhaXNwX3NkIHx8ICFpc3Bfc2QtPnY0 bDJfZGV2KQorKwkJcmV0dXJuIC1FSU5WQUw7CisrCisrCXY0bDJfZGV2ID0gaXNwX3NkLT52NGwy X2RldjsKKysJdmRldiA9ICZpc3BfdmRldi0+dmRldjsKKysKKysJaXNwX3ZkZXYtPmlzcF9zZGV2 ID0gaXNwX3NkOworKwlpc3BfdmRldi0+ZGV2ID0gdjRsMl9kZXYtPmRldjsKKysKKysJLyogSW5p dGlhbGl6ZSB0aGUgdmIyX3F1ZXVlIHN0cnVjdCAqLworKwltdXRleF9pbml0KCZpc3BfdmRldi0+ dmJxX2xvY2spOworKwlxID0gJmlzcF92ZGV2LT52YnE7CisrCXEtPnR5cGUgPSBWNEwyX0JVRl9U WVBFX1ZJREVPX0NBUFRVUkU7CisrCXEtPmlvX21vZGVzID0gVkIyX01NQVAgfCBWQjJfRE1BQlVG OworKwlxLT50aW1lc3RhbXBfZmxhZ3MgPSBWNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9NT05PVE9O SUM7CisrCXEtPmJ1Zl9zdHJ1Y3Rfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXNwNHZpZF9jYXB0dXJl X2J1ZmZlcik7CisrCXEtPm1pbl9xdWV1ZWRfYnVmZmVycyA9IDI7CisrCXEtPm9wcyA9ICZpc3A0 dmlkX3FvcHM7CisrCXEtPmRydl9wcml2ID0gaXNwX3ZkZXY7CisrCXEtPm1lbV9vcHMgPSAmdmIy X3ZtYWxsb2NfbWVtb3BzOworKwlxLT5sb2NrID0gJmlzcF92ZGV2LT52YnFfbG9jazsKKysJcS0+ ZGV2ID0gdjRsMl9kZXYtPmRldjsKKysJcmV0ID0gdmIyX3F1ZXVlX2luaXQocSk7CisrCWlmIChy ZXQpIHsKKysJCWRldl9lcnIodjRsMl9kZXYtPmRldiwgInZiMl9xdWV1ZV9pbml0IGVycm9yOiVk XG4iLCByZXQpOworKwkJcmV0dXJuIHJldDsKKysJfQorKworKwkvKiBJbml0aWFsaXplIGJ1ZmZl ciBsaXN0IGFuZCBpdHMgbG9jayAqLworKwltdXRleF9pbml0KCZpc3BfdmRldi0+YnVmX2xpc3Rf bG9jayk7CisrCUlOSVRfTElTVF9IRUFEKCZpc3BfdmRldi0+YnVmX2xpc3QpOworKworKwkvKiBT ZXQgZGVmYXVsdCBmcmFtZSBmb3JtYXQgKi8KKysJaXNwX3ZkZXYtPmZvcm1hdCA9IGlzcDR2aWRf Zm10X2RlZmF1bHQ7CisrCWlzcF92ZGV2LT50aW1lcGVyZnJhbWUgPSBJU1A0VklEX0lTUF9UUEZf REVGQVVMVDsKKysJdjRsMl9zaW1wbGlmeV9mcmFjdGlvbigmaXNwX3ZkZXYtPnRpbWVwZXJmcmFt ZS5udW1lcmF0b3IsCisrCQkJICAgICAgICZpc3BfdmRldi0+dGltZXBlcmZyYW1lLmRlbm9taW5h dG9yLCA4LCAzMzMpOworKworKwlyZXQgPSBpc3A0dmlkX2ZpbGxfYnVmZmVyX3NpemUoJmlzcF92 ZGV2LT5mb3JtYXQpOworKwlpZiAocmV0KSB7CisrCQlkZXZfZXJyKHY0bDJfZGV2LT5kZXYsICJm YWlsIHRvIGZpbGwgYnVmZmVyIHNpemU6ICVkXG4iLCByZXQpOworKwkJZ290byBlcnJfcmVsZWFz ZV92YjJfcXVldWU7CisrCX0KKysKKysJcmV0ID0gaXNwNHZpZF9zZXRfZm10XzJfaXNwKGlzcF9z ZCwgJmlzcF92ZGV2LT5mb3JtYXQpOworKwlpZiAocmV0KSB7CisrCQlkZXZfZXJyKHY0bDJfZGV2 LT5kZXYsICJmYWlsIGluaXQgZm9ybWF0IDolZFxuIiwgcmV0KTsKKysJCWdvdG8gZXJyX3JlbGVh c2VfdmIyX3F1ZXVlOworKwl9CisrCisrCS8qIEluaXRpYWxpemUgdGhlIHZpZGVvX2RldmljZSBz dHJ1Y3QgKi8KKysJaXNwX3ZkZXYtPnZkZXYuZW50aXR5Lm5hbWUgPSB2ZGV2X25hbWU7CisrCWlz cF92ZGV2LT52ZGV2LmVudGl0eS5mdW5jdGlvbiA9IE1FRElBX0VOVF9GX0lPX1Y0TDsKKysJaXNw X3ZkZXYtPnZkZXZfcGFkLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NJTks7CisrCXJldCA9IG1lZGlh X2VudGl0eV9wYWRzX2luaXQoJmlzcF92ZGV2LT52ZGV2LmVudGl0eSwgMSwKKysJCQkJICAgICAm aXNwX3ZkZXYtPnZkZXZfcGFkKTsKKysKKysJaWYgKHJldCkgeworKwkJZGV2X2Vycih2NGwyX2Rl di0+ZGV2LCAiaW5pdCBtZWRpYSBlbnRpdHkgcGFkIGZhaWw6JWRcbiIsIHJldCk7CisrCQlnb3Rv IGVycl9yZWxlYXNlX3ZiMl9xdWV1ZTsKKysJfQorKworKwl2ZGV2LT5kZXZpY2VfY2FwcyA9IFY0 TDJfQ0FQX1ZJREVPX0NBUFRVUkUgfAorKwkJCSAgICBWNEwyX0NBUF9TVFJFQU1JTkcgfCBWNEwy X0NBUF9JT19NQzsKKysJdmRldi0+ZW50aXR5Lm9wcyA9ICZpc3A0dmlkX3ZkZXZfZW50X29wczsK KysJdmRldi0+cmVsZWFzZSA9IHZpZGVvX2RldmljZV9yZWxlYXNlX2VtcHR5OworKwl2ZGV2LT5m b3BzID0gJmlzcDR2aWRfdmRldl9mb3BzOworKwl2ZGV2LT5pb2N0bF9vcHMgPSAmaXNwNHZpZF92 ZGV2X2lvY3RsX29wczsKKysJdmRldi0+bG9jayA9IE5VTEw7CisrCXZkZXYtPnF1ZXVlID0gcTsK KysJdmRldi0+djRsMl9kZXYgPSB2NGwyX2RldjsKKysJdmRldi0+dmZsX2RpciA9IFZGTF9ESVJf Ulg7CisrCXN0cnNjcHkodmRldi0+bmFtZSwgdmRldl9uYW1lLCBzaXplb2YodmRldi0+bmFtZSkp OworKwl2aWRlb19zZXRfZHJ2ZGF0YSh2ZGV2LCBpc3BfdmRldik7CisrCisrCXJldCA9IHZpZGVv X3JlZ2lzdGVyX2RldmljZSh2ZGV2LCBWRkxfVFlQRV9WSURFTywgLTEpOworKwlpZiAocmV0KSB7 CisrCQlkZXZfZXJyKHY0bDJfZGV2LT5kZXYsICJyZWdpc3RlciB2aWRlbyBkZXZpY2UgZmFpbDol ZFxuIiwgcmV0KTsKKysJCWdvdG8gZXJyX2VudGl0eV9jbGVhbnVwOworKwl9CisrCisrCXJldHVy biAwOworKworK2Vycl9lbnRpdHlfY2xlYW51cDoKKysJbWVkaWFfZW50aXR5X2NsZWFudXAoJmlz cF92ZGV2LT52ZGV2LmVudGl0eSk7CisrZXJyX3JlbGVhc2VfdmIyX3F1ZXVlOgorKwl2YjJfcXVl dWVfcmVsZWFzZShxKTsKKysJcmV0dXJuIHJldDsKKyt9CisrCisrdm9pZCBpc3A0dmlkX2Rldl9k ZWluaXQoc3RydWN0IGlzcDR2aWRfZGV2ICppc3BfdmRldikKKyt7CisrCXZiMl92aWRlb191bnJl Z2lzdGVyX2RldmljZSgmaXNwX3ZkZXYtPnZkZXYpOworK30KK2RpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL2FtZC9pc3A0L2lzcDRfdmlkZW8uaCBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vYW1kL2lzcDQvaXNwNF92aWRlby5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwMDAwLi5jNjY0NTFlMjYxNjYKKy0tLSAvZGV2L251bGwKKysrKyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYW1kL2lzcDQvaXNwNF92aWRlby5oCitAQCAtMCwwICsxLDU3IEBACisr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArICovCisrLyoKKysgKiBDb3B5cmln aHQgKEMpIDIwMjUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorKyAqLworKworKyNpZm5k ZWYgX0lTUDRfVklERU9fSF8KKysjZGVmaW5lIF9JU1A0X1ZJREVPX0hfCisrCisrI2luY2x1ZGUg PG1lZGlhL3Y0bDItZGV2Lmg+CisrI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1tZW1vcHMuaD4K KysKKysjaW5jbHVkZSAiaXNwNF9pbnRlcmZhY2UuaCIKKysKKytzdHJ1Y3QgaXNwNHZpZF9jYXB0 dXJlX2J1ZmZlciB7CisrCS8qCisrCSAqIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgbXVzdCBiZSB0 aGUgZmlyc3QgZWxlbWVudAorKwkgKiB0aGUgdmlkZW9idWYyIGZyYW1ld29yayB3aWxsIGFsbG9j YXRlIHRoaXMgc3RydWN0IGJhc2VkIG9uCisrCSAqIGJ1Zl9zdHJ1Y3Rfc2l6ZSBhbmQgdXNlIHRo ZSBmaXJzdCBzaXplb2Yoc3RydWN0IHZiMl9idWZmZXIpIGJ5dGVzIG9mCisrCSAqIG1lbW9yeSBh cyBhIHZiMl9idWZmZXIKKysJICovCisrCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgdmIyOworKwlz dHJ1Y3QgaXNwNGlmX2ltZ19idWZfaW5mbyBpbWdfYnVmOworKwlzdHJ1Y3QgbGlzdF9oZWFkIGxp c3Q7CisrCXN0cnVjdCBkbWFfYnVmICpkYnVmOworKwl2b2lkICpibzsKKysJdTY0IGdwdV9hZGRy OworK307CisrCisrc3RydWN0IGlzcDR2aWRfZGV2IHsKKysJc3RydWN0IHZpZGVvX2RldmljZSB2 ZGV2OworKwlzdHJ1Y3QgbWVkaWFfcGFkIHZkZXZfcGFkOworKwlzdHJ1Y3QgdjRsMl9waXhfZm9y bWF0IGZvcm1hdDsKKysKKysJLyogbXV0ZXggdGhhdCBwcm90ZWN0cyB2YnEgKi8KKysJc3RydWN0 IG11dGV4IHZicV9sb2NrOworKwlzdHJ1Y3QgdmIyX3F1ZXVlIHZicTsKKysKKysJLyogbXV0ZXgg dGhhdCBwcm90ZWN0cyBidWZfbGlzdCAqLworKwlzdHJ1Y3QgbXV0ZXggYnVmX2xpc3RfbG9jazsK KysJc3RydWN0IGxpc3RfaGVhZCBidWZfbGlzdDsKKysKKysJdTMyIHNlcXVlbmNlOworKwlib29s IHN0cmVhbV9zdGFydGVkOworKworKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisrCXN0cnVjdCB2NGwy X3N1YmRldiAqaXNwX3NkZXY7CisrCXN0cnVjdCB2NGwyX2ZyYWN0IHRpbWVwZXJmcmFtZTsKKyt9 OworKworK2ludCBpc3A0dmlkX2Rldl9pbml0KHN0cnVjdCBpc3A0dmlkX2RldiAqaXNwX3ZkZXYs IHN0cnVjdCB2NGwyX3N1YmRldiAqaXNwX3NkKTsKKysKKyt2b2lkIGlzcDR2aWRfZGV2X2RlaW5p dChzdHJ1Y3QgaXNwNHZpZF9kZXYgKmlzcF92ZGV2KTsKKysKKyt2b2lkIGlzcDR2aWRfaGFuZGxl X2ZyYW1lX2RvbmUoc3RydWN0IGlzcDR2aWRfZGV2ICppc3BfdmRldiwKKysJCQkgICAgICAgY29u c3Qgc3RydWN0IGlzcDRpZl9pbWdfYnVmX2luZm8gKmltZ19idWYpOworKworKyNlbmRpZiAvKiBf SVNQNF9WSURFT19IXyAqLworZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3F1aXJrcy5jIGIvZHJp dmVycy9wY2kvcXVpcmtzLmMKK2luZGV4IGRkMDAyNWQzOTE0ZS4uZTU3ZDEwZGM4NDNjIDEwMDY0 NAorLS0tIGEvZHJpdmVycy9wY2kvcXVpcmtzLmMKKysrKyBiL2RyaXZlcnMvcGNpL3F1aXJrcy5j CitAQCAtNDQ5MSw2ICs0NDkxLDMwIEBAIHN0YXRpYyB2b2lkIHF1aXJrX2FzcGVlZF9wY2lfYnJp ZGdlX25vX2FsaWFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQorIH0KKyBERUNMQVJFX1BDSV9GSVhV UF9IRUFERVIoUENJX1ZFTkRPUl9JRF9BU1BFRUQsIDB4MTE1MCwgcXVpcmtfYXNwZWVkX3BjaV9i cmlkZ2Vfbm9fYWxpYXMpOworIAorKy8qCisrICogUENJIEJBUiA1IGlzIG5vdCBzZXR1cCBjb3Jy ZWN0bHkgZm9yIHRoZSBvbi1ib2FyZCBBSENJIGNvbnRyb2xsZXIKKysgKiBvbiBCcm9hZGNvbSdz IFZ1bGNhbiBwcm9jZXNzb3IuIEFkZGVkIGEgcXVpcmsgdG8gZml4IEJBUiA1IGJ5CisrICogdXNp bmcgQkFSIDQncyByZXNvdXJjZXMgd2hpY2ggYXJlIHBvcHVsYXRlZCBjb3JyZWN0bHkgYW5kIE5P VAorKyAqIGFjdHVhbGx5IHVzZWQgYnkgdGhlIEFIQ0kgY29udHJvbGxlci4KKysgKi8KKytzdGF0 aWMgdm9pZCBxdWlya19maXhfdnVsY2FuX2FoY2lfYmFycyhzdHJ1Y3QgcGNpX2RldiAqZGV2KQor K3sKKysJc3RydWN0IHJlc291cmNlICpyID0gICZkZXYtPnJlc291cmNlWzRdOworKworKwlpZiAo IShyLT5mbGFncyAmIElPUkVTT1VSQ0VfTUVNKSB8fCAoci0+c3RhcnQgPT0gMCkpCisrCQlyZXR1 cm47CisrCisrCS8qIFNldCBCQVI1IHJlc291cmNlIHRvIEJBUjQgKi8KKysJZGV2LT5yZXNvdXJj ZVs1XSA9ICpyOworKworKwkvKiBVcGRhdGUgQkFSNSBpbiBwY2kgY29uZmlnIHNwYWNlICovCisr CXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBQQ0lfQkFTRV9BRERSRVNTXzUsIHItPnN0YXJ0 KTsKKysKKysJLyogQ2xlYXIgQkFSNCdzIHJlc291cmNlICovCisrCW1lbXNldChyLCAwLCBzaXpl b2YoKnIpKTsKKyt9CisrREVDTEFSRV9QQ0lfRklYVVBfSEVBREVSKFBDSV9WRU5ET1JfSURfQlJP QURDT00sIDB4OTAyNywgcXVpcmtfZml4X3Z1bGNhbl9haGNpX2JhcnMpOworKworIC8qCisgICog SW50ZXJzaWwvVGVjaHdlbGwgVFc2ODZbNDU4OV0tYmFzZWQgdmlkZW8gY2FwdHVyZSBjYXJkcyBo YXZlIGFuIGVtcHR5ICh6ZXJvKQorICAqIGNsYXNzIGNvZGUuICBGaXggaXQuCitkaWZmIC0tZ2l0 IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaW50MzQ3Mi9kaXNjcmV0ZS5jIGIvZHJpdmVy cy9wbGF0Zm9ybS94ODYvaW50ZWwvaW50MzQ3Mi9kaXNjcmV0ZS5jCitpbmRleCAxMTViYjM3NTc3 YTEuLmFkZmY1NjRiZjNmZCAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVs L2ludDM0NzIvZGlzY3JldGUuYworKysrIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaW50 MzQ3Mi9kaXNjcmV0ZS5jCitAQCAtMTY0LDYgKzE2NCwyNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGludDM0NzJfZ3Bpb19tYXAgaW50MzQ3Ml9ncGlvX21hcFtdID0geworIAkJLmNvbl9pZCA9ICJk dmRkIiwKKyAJCS5lbmFibGVfdGltZV91cyA9IDQ1ICogVVNFQ19QRVJfTVNFQywKKyAJfSwKKysJ ewkvKiBpbXg0NzEgZXhwZWN0cyAidmFuYSIgYXMgY29uX2lkIGZvciBwb3dlciBlbmFibGUgKi8K KysJCS5oaWQgPSAiU09OWTQ3MUEiLAorKwkJLnR5cGVfZnJvbSA9IElOVDM0NzJfR1BJT19UWVBF X1BPV0VSX0VOQUJMRSwKKysJCS50eXBlX3RvID0gSU5UMzQ3Ml9HUElPX1RZUEVfUE9XRVJfRU5B QkxFLAorKwkJLmNvbl9pZCA9ICJ2YW5hIiwKKysJCS5lbmFibGVfdGltZV91cyA9IEdQSU9fUkVH VUxBVE9SX0VOQUJMRV9USU1FLAorKwl9LAorKwl7CisrCQkvKgorKwkJICogaW14NDcxIChvbiBM ZW5vdm8gVGhpbmtQYWRzIFgxIEcxNCkgZXhwZWN0cyAidmFuYSIgYXMgY29uX2lkCisrCQkgKiBm b3IgcG93ZXIgZW5hYmxlCisrCQkgKi8KKysJCS5oaWQgPSAiVEJFMjBBMCIsCisrCQkudHlwZV9m cm9tID0gSU5UMzQ3Ml9HUElPX1RZUEVfUE9XRVJfRU5BQkxFLAorKwkJLnR5cGVfdG8gPSBJTlQz NDcyX0dQSU9fVFlQRV9QT1dFUl9FTkFCTEUsCisrCQkuY29uX2lkID0gInZhbmEiLAorKwkJLmVu YWJsZV90aW1lX3VzID0gR1BJT19SRUdVTEFUT1JfRU5BQkxFX1RJTUUsCisrCX0sCisgfTsKKyAK KyBzdGF0aWMgdm9pZCBpbnQzNDcyX2dldF9jb25faWRfYW5kX3BvbGFyaXR5KHN0cnVjdCBpbnQz NDcyX2Rpc2NyZXRlX2RldmljZSAqaW50MzQ3MiwgdTggKnR5cGUsCitkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKK2luZGV4IDI0OTYw YmE5Y2FhOS4uMzI1OTdjZGI3MmVmIDEwMDY0NAorLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIu YworKysrIGIvZHJpdmVycy91c2IvY29yZS9odWIuYworQEAgLTU4OTQsNiArNTg5NCwxMyBAQCBz dGF0aWMgdm9pZCBodWJfZXZlbnQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQorIAkJCSh1MTYp IGh1Yi0+Y2hhbmdlX2JpdHNbMF0sCisgCQkJKHUxNikgaHViLT5ldmVudF9iaXRzWzBdKTsKKyAK KysJLyogRG9uJ3QgZGlzY29ubmVjdCBVU0ItU0FUQSBvbiBUcmltU2xpY2UgKi8KKysJaWYgKHN0 cmNtcChkZXZfbmFtZShoZGV2LT5idXMtPmNvbnRyb2xsZXIpLCAidGVncmEtZWhjaS4wIikgPT0g MCkgeworKwkJaWYgKChoZGV2LT5zdGF0ZSA9PSA3KSAmJiAoaHViLT5jaGFuZ2VfYml0c1swXSA9 PSAwKSAmJgorKwkJCQkoaHViLT5ldmVudF9iaXRzWzBdID09IDB4MikpCisrCQkJaHViLT5ldmVu dF9iaXRzWzBdID0gMDsKKysJfQorKworIAkvKiBMb2NrIHRoZSBkZXZpY2UsIHRoZW4gY2hlY2sg dG8gc2VlIGlmIHdlIHdlcmUKKyAJICogZGlzY29ubmVjdGVkIHdoaWxlIHdhaXRpbmcgZm9yIHRo ZSBsb2NrIHRvIHN1Y2NlZWQuICovCisgCXVzYl9sb2NrX2RldmljZShoZGV2KTsKK2RpZmYgLS1n aXQgYS9mcy94ZnMvbGlieGZzL3hmc19leGNobWFwcy5jIGIvZnMveGZzL2xpYnhmcy94ZnNfZXhj aG1hcHMuYworaW5kZXggNTQxZTMzZjMzMTY3Li43ZmIyOGM4YWZlZjggMTAwNjQ0CistLS0gYS9m cy94ZnMvbGlieGZzL3hmc19leGNobWFwcy5jCisrKysgYi9mcy94ZnMvbGlieGZzL3hmc19leGNo bWFwcy5jCitAQCAtOTU5LDYgKzk1OSwxNiBAQCB4bWlfY2FuX2V4Y2hhbmdlX3JlZmxpbmtfZmxh Z3MoCisgeworIAlzdHJ1Y3QgeGZzX21vdW50CQkqbXAgPSByZXEtPmlwMS0+aV9tb3VudDsKKyAK KysJLyoKKysJICogVGhlIElOTzFfV1JJVFRFTiBvcHRpbWl6YXRpb24gY2FuIHNraXAgZXhjaGFu Z2luZyBob2xlIGFuZAorKwkgKiB1bndyaXR0ZW4gbWFwcGluZ3MsIHdoaWNoIG1lYW5zIHdlIGNh bm5vdCBndWFyYW50ZWUgdGhhdCBhbGwKKysJICogc2hhcmVkIGV4dGVudHMgYWN0dWFsbHkgbW92 ZWQgdG8gdGhlIG90aGVyIGZpbGUuICBDbGVhcmluZyB0aGUKKysJICogcmVmbGluayBmbGFnIG9m IGFuIGlub2RlIHRoYXQgc3RpbGwgaG9sZHMgc2hhcmVkIGV4dGVudHMgYnJlYWtzCisrCSAqIHRo ZSBDb1cgd3JpdGUgcGF0aCwgc28gcmVmdXNlIHRvIGV4Y2hhbmdlIHRoZSBmbGFncyBpbiB0aGF0 IGNhc2UuCisrCSAqLworKwlpZiAocmVxLT5mbGFncyAmIFhGU19FWENITUFQU19JTk8xX1dSSVRU RU4pCisrCQlyZXR1cm4gZmFsc2U7CisrCisgCWlmIChod2VpZ2h0MzIocmVmbGlua19zdGF0ZSkg IT0gMSkKKyAJCXJldHVybiBmYWxzZTsKKyAJaWYgKHJlcS0+c3RhcnRvZmYxICE9IDAgfHwgcmVx LT5zdGFydG9mZjIgIT0gMCkKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NyeXB0by5oIGIv aW5jbHVkZS9saW51eC9jcnlwdG8uaAoraW5kZXggYTIxMzdlMTliZTdkLi43OWNjYjZmYWJjMTAg MTAwNjQ0CistLS0gYS9pbmNsdWRlL2xpbnV4L2NyeXB0by5oCisrKysgYi9pbmNsdWRlL2xpbnV4 L2NyeXB0by5oCitAQCAtMTUyLDYgKzE1Miw4IEBACisgI2RlZmluZSBDUllQVE9fVEZNX1JFUV9N QVlfQkFDS0xPRwkweDAwMDAwNDAwCisgI2RlZmluZSBDUllQVE9fVEZNX1JFUV9PTl9TVEFDSwkJ MHgwMDAwMDgwMAorIAorKyNkZWZpbmUgQ1JZUFRPX1RGTV9GSVBTX0NPTVBMSUFOQ0UJMHg4MDAw MDAwMAorKworIC8qCisgICogTWlzY2VsbGFuZW91cyBzdHVmZi4KKyAgKi8KK2RpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2VmaS5oIGIvaW5jbHVkZS9saW51eC9lZmkuaAoraW5kZXggY2NiYzM1 NDc5Njg0Li44ZWI5YTEyNzZiYTcgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xpbnV4L2VmaS5oCisr KysgYi9pbmNsdWRlL2xpbnV4L2VmaS5oCitAQCAtNDUsNiArNDUsOCBAQCBzdHJ1Y3Qgc2NyZWVu X2luZm87CisgI2RlZmluZSBFRklfQUJPUlRFRAkJKDIxIHwgKDFVTCA8PCAoQklUU19QRVJfTE9O Ry0xKSkpCisgI2RlZmluZSBFRklfU0VDVVJJVFlfVklPTEFUSU9OCSgyNiB8ICgxVUwgPDwgKEJJ VFNfUEVSX0xPTkctMSkpKQorIAorKyNkZWZpbmUgRUZJX0lTX0VSUk9SKHgpCQkoKHgpICYgKDFV TCA8PCAoQklUU19QRVJfTE9ORy0xKSkpCisrCisgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGVmaV9z dGF0dXNfdDsKKyB0eXBlZGVmIHU4IGVmaV9ib29sX3Q7CisgdHlwZWRlZiB1MTYgZWZpX2NoYXIx Nl90OwkJLyogVU5JQ09ERSBjaGFyYWN0ZXIgKi8KK0BAIC04NDcsNiArODQ5LDE0IEBAIGV4dGVy biBpbnQgX19pbml0IHBhcnNlX2VmaV9zaWduYXR1cmVfbGlzdCgKKyAjZGVmaW5lIEVGSV9NRU1f QVRUUgkJOQkvKiBEaWQgZmlybXdhcmUgcHVibGlzaCBhbiBFRklfTUVNT1JZX0FUVFJJQlVURVMg dGFibGU/ICovCisgI2RlZmluZSBFRklfTUVNX05PX1NPRlRfUkVTRVJWRQkxMAkvKiBJcyB0aGUg a2VybmVsIGNvbmZpZ3VyZWQgdG8gaWdub3JlIHNvZnQgcmVzZXJ2YXRpb25zPyAqLworICNkZWZp bmUgRUZJX1BSRVNFUlZFX0JTX1JFR0lPTlMJMTEJLyogQXJlIEVGSSBib290LXNlcnZpY2VzIG1l bW9yeSBzZWdtZW50cyBhdmFpbGFibGU/ICovCisrI2RlZmluZSBFRklfU0VDVVJFX0JPT1QJCTEy CS8qIEFyZSB3ZSBpbiBTZWN1cmUgQm9vdCBtb2RlPyAqLworKworK2VudW0gZWZpX3NlY3VyZWJv b3RfbW9kZSB7CisrCWVmaV9zZWN1cmVib290X21vZGVfdW5zZXQsCisrCWVmaV9zZWN1cmVib290 X21vZGVfdW5rbm93biwKKysJZWZpX3NlY3VyZWJvb3RfbW9kZV9kaXNhYmxlZCwKICsJZWZpX3Nl Y3VyZWJvb3RfbW9kZV9lbmFibGVkLAogK307CiAgCkBAIC0yNzkzLDE1OSArNjc1Niw2IEBAIGlu ZGV4IDU5MGJhMjljODVhYi4uMDIxNTNkODU3NTMxIDEwMDY0NAogIH0KICAKICBpbnQgbW9kdWxl X3NpZ19jaGVjayhzdHJ1Y3QgbG9hZF9pbmZvICppbmZvLCBpbnQgZmxhZ3MpCi1kaWZmIC0tZ2l0 IGEva2VybmVsL3NjaGVkL2V4dC5jIGIva2VybmVsL3NjaGVkL2V4dC5jCi1pbmRleCA1ZDJkMTk0 NzNhODIuLjQ2ZjdiMzNiNTY1YiAxMDA2NDQKLS0tLSBhL2tlcm5lbC9zY2hlZC9leHQuYwotKysr IGIva2VybmVsL3NjaGVkL2V4dC5jCi1AQCAtMjk4NSwyNCArMjk4NSwzOCBAQCBzdGF0aWMgdm9p ZCBzZXRfbmV4dF90YXNrX3NjeChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAs IGJvb2wgZmlyc3QpCi0gCi0gCS8qCi0gCSAqIEBwIGlzIGdldHRpbmcgbmV3bHkgc2NoZWR1bGVk IG9yIGdvdCBraWNrZWQgYWZ0ZXIgc29tZW9uZSB1cGRhdGVkIGl0cwotLQkgKiBzbGljZS4gUmVm cmVzaCB3aGV0aGVyIHRpY2sgY2FuIGJlIHN0b3BwZWQuIFNlZSBzY3hfY2FuX3N0b3BfdGljaygp LgotKwkgKiBzbGljZS4gVXBkYXRlIFNDWF9SUV9DQU5fU1RPUF9USUNLIHRvIHJlZmxlY3Qgd2hl dGhlciB0aGUgdGljayBjYW4gYmUKLSsJICogc3RvcHBlZC4gU2VlIHNjeF9jYW5fc3RvcF90aWNr KCkuCi0rCSAqCi0rCSAqIE1vcmVvdmVyLCByZWZyZXNoIHRoZSBsb2FkX2F2Z3MganVzdCB3aGVu IHRyYW5zaXRpb25pbmcgaW4gYW5kIG91dCBvZgotKwkgKiBub2h6LiBJbiB0aGUgZnV0dXJlLCB3 ZSBtaWdodCB3YW50IHRvIGFkZCBhIG1lY2hhbmlzbSB0byB1cGRhdGUKLSsJICogbG9hZF9hdmdz IHBlcmlvZGljYWxseSBvbiB0aWNrLXN0b3BwZWQgQ1BVcy4KLSAJICovCi0tCWlmICgocC0+c2N4 LnNsaWNlID09IFNDWF9TTElDRV9JTkYpICE9Ci0tCSAgICAoYm9vbCkocnEtPnNjeC5mbGFncyAm IFNDWF9SUV9DQU5fU1RPUF9USUNLKSkgewotLQkJaWYgKHAtPnNjeC5zbGljZSA9PSBTQ1hfU0xJ Q0VfSU5GKQotKwlpZiAocC0+c2N4LnNsaWNlID09IFNDWF9TTElDRV9JTkYpIHsKLSsJCWlmICgh KHJxLT5zY3guZmxhZ3MgJiBTQ1hfUlFfQ0FOX1NUT1BfVElDSykpIHsKLSsJCQkvKgotKwkJCSAq IEJ5cGFzcyBtb2RlIGFsd2F5cyBhc3NpZ25zIGZpbml0ZSBzbGljZXMsIHNvIEBwCi0rCQkJICog Y2FuJ3QgaGF2ZSBhbiBpbmZpbml0ZSBzbGljZSB3aGlsZSBieXBhc3NpbmcuCi0rCQkJICogVGhl cmVmb3JlLCBzY2hlZF91cGRhdGVfdGlja19kZXBlbmRlbmN5KCkgY2FuIHNhZmVseQotKwkJCSAq IGV2YWx1YXRlIHRoZSBvdXRnb2luZyB0YXNrLgotKwkJCSAqLwotIAkJCXJxLT5zY3guZmxhZ3Mg fD0gU0NYX1JRX0NBTl9TVE9QX1RJQ0s7Ci0tCQllbHNlCi0tCQkJcnEtPnNjeC5mbGFncyAmPSB+ U0NYX1JRX0NBTl9TVE9QX1RJQ0s7Ci0rCQkJc2NoZWRfdXBkYXRlX3RpY2tfZGVwZW5kZW5jeShy cSk7Ci0gCi0tCQlzY2hlZF91cGRhdGVfdGlja19kZXBlbmRlbmN5KHJxKTsKLSsJCQl1cGRhdGVf b3RoZXJfbG9hZF9hdmdzKHJxKTsKLSsJCX0KLSsJfSBlbHNlIHsKLSsJCWlmIChycS0+c2N4LmZs YWdzICYgU0NYX1JRX0NBTl9TVE9QX1RJQ0spIHsKLSsJCQlycS0+c2N4LmZsYWdzICY9IH5TQ1hf UlFfQ0FOX1NUT1BfVElDSzsKLSsJCQl1cGRhdGVfb3RoZXJfbG9hZF9hdmdzKHJxKTsKLSsJCX0K LSAKLSAJCS8qCi0tCQkgKiBGb3Igbm93LCBsZXQncyByZWZyZXNoIHRoZSBsb2FkX2F2Z3MganVz dCB3aGVuIHRyYW5zaXRpb25pbmcKLS0JCSAqIGluIGFuZCBvdXQgb2Ygbm9oei4gSW4gdGhlIGZ1 dHVyZSwgd2UgbWlnaHQgd2FudCB0byBhZGQgYQotLQkJICogbWVjaGFuaXNtIHdoaWNoIGNhbGxz IHRoZSBmb2xsb3dpbmcgcGVyaW9kaWNhbGx5IG9uCi0tCQkgKiB0aWNrLXN0b3BwZWQgQ1BVcy4K LSsJCSAqIEBycSBzdGlsbCByZWZlcmVuY2VzIHRoZSBvdXRnb2luZyBzY2hlZHVsaW5nIGNvbnRl eHQuIEEgZmluaXRlCi0rCQkgKiBzbGljZSBpcyBzdWZmaWNpZW50IGJ5IGl0c2VsZiB0byByZXF1 aXJlIHRoZSB0aWNrLgotIAkJICovCi0tCQl1cGRhdGVfb3RoZXJfbG9hZF9hdmdzKHJxKTsKLSsJ CWlmICh0aWNrX25vaHpfZnVsbF9jcHUoY3B1X29mKHJxKSkpCi0rCQkJdGlja19ub2h6X2RlcF9z ZXRfY3B1KGNwdV9vZihycSksIFRJQ0tfREVQX0JJVF9TQ0hFRCk7Ci0gCX0KLSB9Ci0gCi1AQCAt MzA5Nyw5ICszMTExLDE0IEBAIHN0YXRpYyB2b2lkIHB1dF9wcmV2X3Rhc2tfc2N4KHN0cnVjdCBy cSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwKLSAJCSAqIHNjaGVkX2NsYXNzLCAlU0NYX09Q U19FTlFfTEFTVCBtdXN0IGJlIHNldC4gVGVsbAotIAkJICogb3BzLmVucXVldWUoKSB0aGF0IEBw IGlzIHRoZSBvbmx5IG9uZSBhdmFpbGFibGUgZm9yIHRoaXMgY3B1LAotIAkJICogd2hpY2ggc2hv dWxkIHRyaWdnZXIgYW4gZXhwbGljaXQgZm9sbG93LXVwIHNjaGVkdWxpbmcgZXZlbnQuCi0rCQkg KgotKwkJICogQ29yZSBzY2hlZHVsaW5nIGNhbiBmb3JjZSB0aGlzIENQVSBpZGxlIHdoaWxlIEBw IHN0YXlzCi0rCQkgKiBydW5uYWJsZS4gQHAncyBjb29raWUgdGhlbiB3b24ndCBtYXRjaCB0aGUg Y29yZSdzLCBzbyBza2lwCi0rCQkgKiB0aGUgd2FybmluZyBpbiB0aGF0IGNhc2UuCi0gCQkgKi8K LSAJCWlmIChuZXh0ICYmIHNjaGVkX2NsYXNzX2Fib3ZlKCZleHRfc2NoZWRfY2xhc3MsIG5leHQt PnNjaGVkX2NsYXNzKSkgewotLQkJCVdBUk5fT05fT05DRSghKHNjaC0+b3BzLmZsYWdzICYgU0NY X09QU19FTlFfTEFTVCkpOwotKwkJCVdBUk5fT05fT05DRShzY2hlZF9jcHVfY29va2llX21hdGNo KHJxLCBwKSAmJgotKwkJCQkgICAgICEoc2NoLT5vcHMuZmxhZ3MgJiBTQ1hfT1BTX0VOUV9MQVNU KSk7Ci0gCQkJZG9fZW5xdWV1ZV90YXNrKHJxLCBwLCBTQ1hfRU5RX0xBU1QsIC0xKTsKLSAJCX0g ZWxzZSB7Ci0gCQkJZG9fZW5xdWV1ZV90YXNrKHJxLCBwLCAwLCAtMSk7Ci1AQCAtMzkwNCw2ICsz OTIzLDE3IEBAIHN0YXRpYyB2b2lkIHJld2VpZ2h0X3Rhc2tfc2N4KHN0cnVjdCBycSAqcnEsIHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCwKLSAJaWYgKHRhc2tfZGVhZF9hbmRfZG9uZShwKSkKLSAJCXJl dHVybjsKLSAKLSsJLyoKLSsJICogV2hlbiBzd2l0Y2hpbmcgc2NoZWRfY2xhc3MgYXdheSBmcm9t IFNDWCwgcmV3ZWlnaHRfdGFza19zY3goKQotKwkgKiBpcyBjYWxsZWQgX2FmdGVyXyBzY3hfZGlz YWJsZV90YXNrKCkuIFNraXAgY2FsbGluZyBvcHMuc2V0X3dlaWdodCgpCi0rCSAqIHNpbmNlIHRo ZSBCUEYgc2NoZWR1bGVyIG1heSBoYXZlIGFscmVhZHkgZm9yZ290dGVuIHRoZSB0YXNrIGluCi0r CSAqIG9wcy5kaXNhYmxlKCkuCi0rCSAqIHAtPnNjeC53ZWlnaHQgd2lsbCBiZSByZWNhbGN1bGF0 ZWQgaW4gc2N4X2VuYWJsZV90YXNrKCkgaWYgdGhlIHRhc2sKLSsJICogZXZlciByZXR1cm5zIHRv IFNDWCBjbGFzcy4KLSsJICovCi0rCWlmIChzY3hfZ2V0X3Rhc2tfc3RhdGUocCkgIT0gU0NYX1RB U0tfRU5BQkxFRCkKLSsJCXJldHVybjsKLSsKLSAJcC0+c2N4LndlaWdodCA9IHNjaGVkX3dlaWdo dF90b19jZ3JvdXAoc2NhbGVfbG9hZF9kb3duKGx3LT53ZWlnaHQpKTsKLSAJaWYgKFNDWF9IQVNf T1Aoc2NoLCBzZXRfd2VpZ2h0KSkKLSAJCVNDWF9DQUxMX09QX1RBU0soc2NoLCBzZXRfd2VpZ2h0 LCBycSwgcCwgcC0+c2N4LndlaWdodCk7Ci1AQCAtNDI4MCw2ICs0MzEwLDE1IEBAIGJvb2wgc2N4 X2Nhbl9zdG9wX3RpY2soc3RydWN0IHJxICpycSkKLSAJaWYgKHAtPnNjaGVkX2NsYXNzICE9ICZl eHRfc2NoZWRfY2xhc3MpCi0gCQlyZXR1cm4gdHJ1ZTsKLSAKLSsJLyoKLSsJICogQHJxLT5jdXJy IG1heSBzdGlsbCByZWZlcmVuY2UgYW4gb3V0Z29pbmcgRVhUIHRhc2sgYWZ0ZXIgaXQgaGFzIGJl ZW4KLSsJICogZGVxdWV1ZWQuIElmIG5vIEVYVCB0YXNrcyBhcmUgYWNjb3VudGVkIG9uIEBycSwg aWdub3JlIGl0cyBzdGFsZQotKwkgKiBzbGljZSBzdGF0ZS4gSWYgYW5vdGhlciB0YXNrIGlzIGRp c3BhdGNoZWQgZnJvbSBhIERTUSwKLSsJICogc2V0X25leHRfdGFza19zY3goKSB3aWxsIHVwZGF0 ZSB0aGUgZGVwZW5kZW5jeSBmb3IgdGhlIGluY29taW5nIHRhc2suCi0rCSAqLwotKwlpZiAoIXJx LT5zY3gubnJfcnVubmluZykKLSsJCXJldHVybiB0cnVlOwotKwotIAlpZiAoc2N4X2J5cGFzc2lu ZyhzY2gsIGNwdV9vZihycSkpKQotIAkJcmV0dXJuIGZhbHNlOwotIAotQEAgLTU2MDQsNyArNTY0 Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfa2lja19zeW5jcyh2b2lkKQotIAlpbnQgY3B1OwotIAot IAlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7Ci0tCQlzdHJ1Y3Qgc2N4X2tpY2tfc3luY3Mg Kiprc3luY3MgPSBwZXJfY3B1X3B0cigmc2N4X2tpY2tfc3luY3MsIGNwdSk7Ci0rCQlzdHJ1Y3Qg c2N4X2tpY2tfc3luY3MgX19yY3UgKiprc3luY3MgPSBwZXJfY3B1X3B0cigmc2N4X2tpY2tfc3lu Y3MsIGNwdSk7Ci0gCQlzdHJ1Y3Qgc2N4X2tpY2tfc3luY3MgKnRvX2ZyZWU7Ci0gCi0gCQl0b19m cmVlID0gcmN1X3JlcGxhY2VfcG9pbnRlcigqa3N5bmNzLCBOVUxMLCB0cnVlKTsKLUBAIC02NTI3 LDcgKzY1NjYsNyBAQCBzdGF0aWMgaW50IGFsbG9jX2tpY2tfc3luY3Modm9pZCkKLSAJICogY2Fu IGV4Y2VlZCBwZXJjcHUgYWxsb2NhdG9yIGxpbWl0cyBvbiBsYXJnZSBtYWNoaW5lcy4KLSAJICov Ci0gCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKLS0JCXN0cnVjdCBzY3hfa2lja19zeW5j cyAqKmtzeW5jcyA9IHBlcl9jcHVfcHRyKCZzY3hfa2lja19zeW5jcywgY3B1KTsKLSsJCXN0cnVj dCBzY3hfa2lja19zeW5jcyBfX3JjdSAqKmtzeW5jcyA9IHBlcl9jcHVfcHRyKCZzY3hfa2lja19z eW5jcywgY3B1KTsKLSAJCXN0cnVjdCBzY3hfa2lja19zeW5jcyAqbmV3X2tzeW5jczsKLSAKLSAJ CVdBUk5fT05fT05DRShyY3VfYWNjZXNzX3BvaW50ZXIoKmtzeW5jcykpOwotQEAgLTc0MDEsNiAr NzQ0MCwxMiBAQCBzdGF0aWMgdm9pZCBzY3hfc3ViX2VuYWJsZV93b3JrZm4oc3RydWN0IGt0aHJl YWRfd29yayAqd29yaykKLSAJcGVyY3B1X3VwX3dyaXRlKCZzY3hfZm9ya19yd3NlbSk7Ci0gZXJy X2Rpc2FibGU6Ci0gCW11dGV4X3VubG9jaygmc2N4X2VuYWJsZV9tdXRleCk7Ci0rCS8qCi0rCSAq IFNvbWUgZW5hYmxlIGZhaWx1cmVzIG9ubHkgcmV0dXJuIGFuIGVycm5vIChlLmcuIC1FTk9NRU0g ZnJvbSBhbgotKwkgKiBhbGxvY2F0aW9uKSB3aXRob3V0IGNhbGxpbmcgc2N4X2Vycm9yKCkuIFJl Y29yZCBpdCBzbwotKwkgKiBzY3hfZmx1c2hfZGlzYWJsZV93b3JrKCkgcnVucyB0aGUgZGlzYWJs ZSBhbmQgb3BzLmV4aXQoKSBmaXJlcy4KLSsJICovCi0rCXNjeF9lcnJvcihzY2gsICJzY3hfc3Vi X2VuYWJsZSgpIGZhaWxlZCAoJWQpIiwgcmV0KTsKLSAJc2N4X2ZsdXNoX2Rpc2FibGVfd29yayhz Y2gpOwotIAljbWQtPnJldCA9IDA7Ci0gfQotZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFj a2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCi1pbmRleCA4ZTZmM2E3MzRiYTAuLmU3NWQy OTMyNDc1YSAxMDA2NDQKLS0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKLSsrKyBiL25ldC9w YWNrZXQvYWZfcGFja2V0LmMKLUBAIC00NTYxLDcgKzQ1NjEsMTEgQEAgc3RhdGljIGludCBwYWNr ZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiB0cGFja2V0X3JlcV91ICpyZXFfdSwK LSAKLSAJc3Bpbl9sb2NrKCZwby0+YmluZF9sb2NrKTsKLSAJV1JJVEVfT05DRShwby0+bnVtLCBu dW0pOwotLQlpZiAod2FzX3J1bm5pbmcpCi0rCS8qCi0rCSAqIE5FVERFVl9VTlJFR0lTVEVSIG1h eSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9jawotKwkgKiB3YXMg ZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2 aWNlLgotKwkgKi8KLSsJaWYgKHdhc19ydW5uaW5nICYmIFJFQURfT05DRShwby0+aWZpbmRleCkg IT0gLTEpCi0gCQlyZWdpc3Rlcl9wcm90X2hvb2soc2spOwotIAotIAlzcGluX3VubG9jaygmcG8t PmJpbmRfbG9jayk7CiBkaWZmIC0tZ2l0IGEvc2NyaXB0cy9NYWtlZmlsZS5saWIgYi9zY3JpcHRz L01ha2VmaWxlLmxpYgogaW5kZXggMDcxOGUzOWNlZGRhLi4xMGU5NGExYjhiNmUgMTAwNjQ0CiAt LS0gYS9zY3JpcHRzL01ha2VmaWxlLmxpYgpAQCAtMzA0NCwyNyArNjg1NCw2IEBAIGluZGV4IDhk NDY4ODZkMmNjYS4uMTRhOWNkZmY5NDJiIDEwMDY0NAogIHN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlf aG9va19saXN0IGxvY2tkb3duX2hvb2tzW10gX19yb19hZnRlcl9pbml0ID0gewogIAlMU01fSE9P S19JTklUKGxvY2tlZF9kb3duLCBsb2NrZG93bl9pc19sb2NrZWRfZG93biksCiAgfTsKLWRpZmYg LS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jIGIvc291bmQvc29jL2NvZGVj cy9jczQybDQzLWphY2suYwotaW5kZXggM2UwNGU2ODk3YjE0Li5lODgxMDk5NzljMTggMTAwNjQ0 Ci0tLS0gYS9zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jCi0rKysgYi9zb3VuZC9zb2Mv Y29kZWNzL2NzNDJsNDMtamFjay5jCi1AQCAtMzEwLDYgKzMxMCw3IEBAIGlycXJldHVybl90IGNz NDJsNDNfYmlhc19kZXRlY3RfY2xhbXAoaW50IGlycSwgdm9pZCAqZGF0YSkKLSAjZGVmaW5lIENT NDJMNDNfSkFDS19BQlNFTlQgMHgwCi0gCi0gI2RlZmluZSBDUzQyTDQzX0pBQ0tfT1BUSUNBTCAo U05EX0pBQ0tfTUVDSEFOSUNBTCB8IFNORF9KQUNLX0FWT1VUKQotKyNkZWZpbmUgQ1M0Mkw0M19K QUNLX01JQ1JPUEhPTkUgKFNORF9KQUNLX01FQ0hBTklDQUwgfCBTTkRfSkFDS19NSUNST1BIT05F KQotICNkZWZpbmUgQ1M0Mkw0M19KQUNLX0hFQURQSE9ORSAoU05EX0pBQ0tfTUVDSEFOSUNBTCB8 IFNORF9KQUNLX0hFQURQSE9ORSkKLSAjZGVmaW5lIENTNDJMNDNfSkFDS19IRUFEU0VUIChTTkRf SkFDS19NRUNIQU5JQ0FMIHwgU05EX0pBQ0tfSEVBRFNFVCkKLSAjZGVmaW5lIENTNDJMNDNfSkFD S19MSU5FT1VUIChTTkRfSkFDS19NRUNIQU5JQ0FMIHwgU05EX0pBQ0tfTElORU9VVCkKLUBAIC04 NzEsNyArODcyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjczQybDQzX2phY2tfb3ZlcnJpZGVf bW9kZSB7Ci0gCQkuaHNkZXRfbW9kZSA9IENTNDJMNDNfSkFDS18zX1BPTEVfU1dJVENIRVMsCi0g CQkubWljX2N0cmwgPSAoMHgzIDw8IENTNDJMNDNfSkFDS19TVEVSRU9fQ09ORklHX1NISUZUKSB8 Ci0gCQkJICAgIENTNDJMNDNfSFMxX0JJQVNfRU5fTUFTSyB8IENTNDJMNDNfSFMyX0JJQVNfRU5f TUFTSywKLS0JCS5yZXBvcnQgPSBDUzQyTDQzX0pBQ0tfTElORUlOLAotKwkJLnJlcG9ydCA9IENT NDJMNDNfSkFDS19NSUNST1BIT05FLAotIAl9LAotIAlbQ1M0Mkw0M19KQUNLX1JBV19PUFRJQ0FM XSA9IHsKLSAJCS5oc2RldF9tb2RlID0gQ1M0Mkw0M19KQUNLXzNfUE9MRV9TV0lUQ0hFUywKIGRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3J0NzIyLXNkY2EuYyBiL3NvdW5kL3NvYy9jb2Rl Y3MvcnQ3MjItc2RjYS5jCiBpbmRleCA3OWI4YjdlNzBhMzMuLjIzZDJmNjNkNjhlZiAxMDA2NDQK IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ3MjItc2RjYS5jCgpkaWZmIC0tZ2l0IGEvc291cmNl cyBiL3NvdXJjZXMKaW5kZXggZTAyZTFjMC4uZTEzYjQyZSAxMDA2NDQKLS0tIGEvc291cmNlcwor KysgYi9zb3VyY2VzCkBAIC0xLDMgKzEsMyBAQAotU0hBNTEyIChsaW51eC03LjEuNS50YXIueHop ID0gNzY0OTRjMTIxZDgxYmY2YjYzMTEyODIzNGFkMmE4MDM3NDkwNTIxZjc3NjY0ZWU3NGJmOWMx NDNkZDRkM2YyODJjZWM1NzFlOWY5NmE2MzAwNGY4OGViZmNkZTM3NmI0ODNkYWM1Y2NhYzRmNDNm MTM4YWI1YmJlYjg0NDFlMDMKLVNIQTUxMiAoa2VybmVsLWFiaS1zdGFibGVsaXN0cy03LjEuNS50 YXIueHopID0gYTdmOTc3MzljNzdlZTk0MTcyNzdiODAwODRkZGQ3ZmE2OWY2NTI0MzUzODE3MGJk NTgzYzE2NmEwMGJiYWM2OWY1MGU0MjYwOTA2MjMxMmFiOGI0ODkzZGRkMmExNmU5MjdlZWYyZjli YzM0MmNhODhjNDhmMzg4YTFjNjJiM2MKLVNIQTUxMiAoa2VybmVsLWthYmktZHctNy4xLjUudGFy Lnh6KSA9IDQ2MzkwNzlmZjkwNDc4NDExYWMyOWFjOTczNmQ5NTA3NTg0NDk0ZjFhZGJjOTc5MTRh NmE4NjI1MWJhYTZmOTdkYTAwMDBiYzRkMDZiMDQwN2MxYjU2NTM3M2NjZGUyODVjZWNmNmY3MWFk NTYzMjQwMmE3MjgyMjQzY2M3NTQwCitTSEE1MTIgKGxpbnV4LTcuMS42LnRhci54eikgPSBhYmQ5 ZTEyNzI2MWFjYzdmZGUzYWNmOThhNmE0OTkyYzU4NDI3YzhkOTNhYTM3OThlNGMzNWEzMTYwNDNm OTBiYzVlMmZiY2U1NDc2MzdhYzk3YjAyMzFjZGFhYzgxZjI1ZmNkYTk5MGE2NzQyMTJkNzRmNmQ2 ZDc1MmY5OGMwOAorU0hBNTEyIChrZXJuZWwtYWJpLXN0YWJsZWxpc3RzLTcuMS42LnRhci54eikg PSBkMWJhYWZjYjM1ODhjMGI5NTY3MDZmYjcyZjc0YmFiZmVhOTE1ZDgyOWRmNDExNjU3NGZjOTQx N2E4NDYyZWE1NzE0Mjc3ZDZiOTBmMzMzMGM0MzI0ZGM1Mjg0MjJhOGUxY2E0ZDhkMTEyNDAwMTZm NGY5MmRiMmI5OWJiOWU2YgorU0hBNTEyIChrZXJuZWwta2FiaS1kdy03LjEuNi50YXIueHopID0g MTE4Mzk1MzY5ZjgxNTYxZjhlODdiYTcwZjQ2ODMyNGJiMzM2MTk3ZDM1MjJlODNlNzY4NTdmZTFh MWM2NzBhMWE1NTg3MWE3NmRkYjFiZDQ1NWM1MTlkYjlkNjA2MjM0ZjY0ZjRiMzM1NzhlOGViZGY5 MDUxZjc3MzQzM2E3ZDEK