From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [RFC PATCH v3 14/24] ARM: NUMA: DT: Parse NUMA distance information Date: Tue, 18 Jul 2017 17:11:36 +0530 Message-ID: <1500378106-2620-15-git-send-email-vijay.kilari@gmail.com> References: <1500378106-2620-1-git-send-email-vijay.kilari@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1500378106-2620-1-git-send-email-vijay.kilari@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, Vijaya Kumar K List-Id: xen-devel@lists.xenproject.org RnJvbTogVmlqYXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgoKUGFyc2UgZGlz dGFuY2UtbWF0cml4IGFuZCBmZXRjaCBub2RlIGRpc3RhbmNlIGluZm9ybWF0aW9uLgpTdG9yZSBk aXN0YW5jZSBpbmZvcm1hdGlvbiBpbiBub2RlX2Rpc3RhbmNlW10uCgpSZWdpc3RlciBkdF9ub2Rl X2Rpc3RhbmNlKCkgZnVuY3Rpb24gcG9pbnRlciB3aXRoCnRoZSBBUk0gbnVtYSBjb2RlLiBUaGlz IGFwcHJvYWNoIGNhbiBiZSBsYXRlciB1c2VkIGZvcgpBQ1BJLgoKU2lnbmVkLW9mZi1ieTogVmlq YXlhIEt1bWFyIEsgPFZpamF5YS5LdW1hckBjYXZpdW0uY29tPgotLS0KdjM6IC0gTW92ZWQgX19u b2RlX2Rpc3RhbmNlKCkgZGVjbGFyYXRpb24gdG8gY29tbW9uCiAgICAgIGhlYWRlciBmaWxlCiAg ICAtIFVzZSBkZXZpY2VfdHJlZV9ub2RlX2NvbXBhdGlibGUoKSBpbnN0ZWFkIG9mCiAgICAgIGRl dmljZV90cmVlX25vZGVfbWF0Y2hlcygpCiAgICAtIERyb3BwZWQgeGVuL2Vycm5vLmggaW5jbHVz aW9uCi0tLQogeGVuL2FyY2gvYXJtL251bWEvZHRfbnVtYS5jIHwgMTMxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vbnVtYS9udW1hLmMg ICAgfCAgMjIgKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oICB8ICAgMiArCiB4 ZW4vaW5jbHVkZS9hc20teDg2L251bWEuaCAgfCAgIDEgLQogeGVuL2luY2x1ZGUveGVuL251bWEu aCAgICAgIHwgICAzICsKIDUgZmlsZXMgY2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbnVtYS9kdF9udW1hLmMgYi94ZW4v YXJjaC9hcm0vbnVtYS9kdF9udW1hLmMKaW5kZXggODQwMzBlNy4uNDZjMDM0NiAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL251bWEvZHRfbnVtYS5jCisrKyBiL3hlbi9hcmNoL2FybS9udW1hL2R0 X251bWEuYwpAQCAtMjMsNiArMjMsNDggQEAKICNpbmNsdWRlIDx4ZW4vbnVtYS5oPgogI2luY2x1 ZGUgPGFzbS9zZXR1cC5oPgogCitzdGF0aWMgdWludDhfdCBub2RlX2Rpc3RhbmNlW01BWF9OVU1O T0RFU11bTUFYX05VTU5PREVTXTsKKworc3RhdGljIHVpbnQ4X3QgZHRfbm9kZV9kaXN0YW5jZShu b2RlaWRfdCBub2RlYSwgbm9kZWlkX3Qgbm9kZWIpCit7CisgICAgaWYgKCBub2RlYSA+PSBNQVhf TlVNTk9ERVMgfHwgbm9kZWIgPj0gTUFYX05VTU5PREVTICkKKyAgICAgICAgcmV0dXJuIG5vZGVh ID09IG5vZGViID8gTE9DQUxfRElTVEFOQ0UgOiBSRU1PVEVfRElTVEFOQ0U7CisKKyAgICByZXR1 cm4gbm9kZV9kaXN0YW5jZVtub2RlYV1bbm9kZWJdOworfQorCitzdGF0aWMgaW50IGR0X251bWFf c2V0X2Rpc3RhbmNlKHVpbnQzMl90IG5vZGVhLCB1aW50MzJfdCBub2RlYiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGlzdGFuY2UpCit7CisgICAvKiBub2RlX2Rp c3RhbmNlIGlzIHVpbnQ4X3QuIEVuc3VyZSBkaXN0YW5jZSBpcyBsZXNzIHRoYW4gMjU1ICovCisg ICBpZiAoIG5vZGVhID49IE1BWF9OVU1OT0RFUyB8fCBub2RlYiA+PSBNQVhfTlVNTk9ERVMgfHwg ZGlzdGFuY2UgPiAyNTUgKQorICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICBub2RlX2Rpc3Rh bmNlW25vZGVhXVtub2RlYl0gPSBkaXN0YW5jZTsKKworICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg aW5pdF9kdF9udW1hX2Rpc3RhbmNlKHZvaWQpCit7CisgICAgaW50IGksIGo7CisKKyAgICBmb3Ig KCBpID0gMDsgaSA8IE1BWF9OVU1OT0RFUzsgaSsrICkKKyAgICB7CisgICAgICAgIGZvciAoIGog PSAwOyBqIDwgTUFYX05VTU5PREVTOyBqKysgKQorICAgICAgICB7CisgICAgICAgICAgICAvKgor ICAgICAgICAgICAgICogSW5pdGlhbGl6ZSBkaXN0YW5jZSAxMCBmb3IgbG9jYWwgZGlzdGFuY2Ug YW5kCisgICAgICAgICAgICAgKiAyMCBmb3IgcmVtb3RlIGRpc3RhbmNlLgorICAgICAgICAgICAg ICovCisgICAgICAgICAgICBpZiAoIGkgID09IGogKQorICAgICAgICAgICAgICAgIG5vZGVfZGlz dGFuY2VbaV1bal0gPSBMT0NBTF9ESVNUQU5DRTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgICAgICBub2RlX2Rpc3RhbmNlW2ldW2pdID0gUkVNT1RFX0RJU1RBTkNFOworICAgICAgICB9 CisgICAgfQorfQorCiAvKgogICogRXZlbiB0aG91Z2ggd2UgY29ubmVjdCBjcHVzIHRvIG51bWEg ZG9tYWlucyBsYXRlciBpbiBTTVAKICAqIGluaXQsIHdlIG5lZWQgdG8ga25vdyB0aGUgbm9kZSBp ZHMgbm93IGZvciBhbGwgY3B1cy4KQEAgLTU4LDYgKzEwMCw3NiBAQCBzdGF0aWMgaW50IF9faW5p dCBkdF9udW1hX3Byb2Nlc3NfY3B1X25vZGUoY29uc3Qgdm9pZCAqZmR0KQogICAgIHJldHVybiAw OwogfQogCitzdGF0aWMgaW50IF9faW5pdCBkdF9udW1hX3BhcnNlX2Rpc3RhbmNlX21hcChjb25z dCB2b2lkICpmZHQsIGludCBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHJlc3NfY2VsbHMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplX2NlbGxzKQorewor ICAgIGNvbnN0IHN0cnVjdCBmZHRfcHJvcGVydHkgKnByb3A7CisgICAgY29uc3QgX19iZTMyICpt YXRyaXg7CisgICAgaW50IGVudHJ5X2NvdW50LCBsZW4sIGk7CisKKyAgICBwcmludGsoWEVOTE9H X0lORk8gIk5VTUE6IHBhcnNpbmcgbnVtYS1kaXN0YW5jZS1tYXBcbiIpOworCisgICAgcHJvcCA9 IGZkdF9nZXRfcHJvcGVydHkoZmR0LCBub2RlLCAiZGlzdGFuY2UtbWF0cml4IiwgJmxlbik7Cisg ICAgaWYgKCAhcHJvcCApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcKKyAg ICAgICAgICAgICAgICJOVU1BOiBObyBkaXN0YW5jZS1tYXRyaXggcHJvcGVydHkgaW4gZGlzdGFu Y2UtbWFwXG4iKTsKKworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAo IGxlbiAlIHNpemVvZih1aW50MzJfdCkgIT0gMCApCisgICAgeworICAgICAgICAgcHJpbnRrKFhF TkxPR19XQVJOSU5HCisgICAgICAgICAgICAgICAgImRpc3RhbmNlLW1hdHJpeCBpbiBub2RlIGlz IG5vdCBhIG11bHRpcGxlIG9mIHUzMlxuIik7CisKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgfQorCisgICAgZW50cnlfY291bnQgPSBsZW4gLyBzaXplb2YodWludDMyX3QpOworICAgIGlm ICggZW50cnlfY291bnQgPD0gMCApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5J TkcgIk5VTUE6IEludmFsaWQgZGlzdGFuY2UtbWF0cml4XG4iKTsKKworICAgICAgICByZXR1cm4g LUVJTlZBTDsKKyAgICB9CisKKyAgICBtYXRyaXggPSAoY29uc3QgX19iZTMyICopcHJvcC0+ZGF0 YTsKKyAgICBmb3IgKCBpID0gMDsgaSArIDIgPCBlbnRyeV9jb3VudDsgaSArPSAzICkKKyAgICB7 CisgICAgICAgIHVpbnQzMl90IG5vZGVhLCBub2RlYiwgZGlzdGFuY2U7CisKKyAgICAgICAgbm9k ZWEgPSBkdF9yZWFkX251bWJlcihtYXRyaXgsIDEpOworICAgICAgICBtYXRyaXgrKzsKKyAgICAg ICAgbm9kZWIgPSBkdF9yZWFkX251bWJlcihtYXRyaXgsIDEpOworICAgICAgICBtYXRyaXgrKzsK KyAgICAgICAgZGlzdGFuY2UgPSBkdF9yZWFkX251bWJlcihtYXRyaXgsIDEpOworICAgICAgICBt YXRyaXgrKzsKKworICAgICAgICBpZiAoIGR0X251bWFfc2V0X2Rpc3RhbmNlKG5vZGVhLCBub2Rl YiwgZGlzdGFuY2UpICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJO SU5HCisgICAgICAgICAgICAgICAgICAgIk5VTUE6IG5vZGUtaWQgb3V0IG9mIHJhbmdlIGluIGRp c3RhbmNlIG1hdHJpeCBmb3IgW25vZGUlZCAtPiBub2RlJWRdXG4iLAorICAgICAgICAgICAgICAg ICAgIG5vZGVhLCBub2RlYik7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAg ICB9CisgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiTlVNQTogZGlzdGFuY2Vbbm9kZSVkIC0+ IG5vZGUlZF0gPSAlZFxuIiwKKyAgICAgICAgICAgICAgIG5vZGVhLCBub2RlYiwgZGlzdGFuY2Up OworCisgICAgICAgIC8qCisgICAgICAgICAqIFNldCBkZWZhdWx0IGRpc3RhbmNlIG9mIG5vZGUg Qi0+QSBzYW1lIGFzIEEtPkIuCisgICAgICAgICAqIE5vIG5lZWQgdG8gY2hlY2sgZm9yIHJldHVy biB2YWx1ZSBvZiBudW1hX3NldF9kaXN0YW5jZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICgg bm9kZWIgPiBub2RlYSApCisgICAgICAgICAgICBkdF9udW1hX3NldF9kaXN0YW5jZShub2RlYiwg bm9kZWEsIGRpc3RhbmNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBfX2lu aXQgZHRfbnVtYV9wcm9jZXNzX21lbW9yeV9ub2RlKHVpbnQzMl90IG5pZCwgcGFkZHJfdCBzdGFy dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3Qgc2l6ZSkK IHsKQEAgLTkwLDExICsyMDIsMzAgQEAgdm9pZCBfX2luaXQgZHRfbnVtYV9wcm9jZXNzX21lbW9y eV9ub2RlKHVpbnQzMl90IG5pZCwgcGFkZHJfdCBzdGFydCwKICAgICByZXR1cm47CiB9CiAKK3N0 YXRpYyBpbnQgX19pbml0IGR0X251bWFfc2Nhbl9kaXN0YW5jZV9ub2RlKGNvbnN0IHZvaWQgKmZk dCwgaW50IG5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpuYW1lLCBpbnQgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyZXNzX2NlbGxzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZV9jZWxscywgdm9p ZCAqZGF0YSkKK3sKKyAgICBpZiAoIGRldmljZV90cmVlX25vZGVfY29tcGF0aWJsZShmZHQsIG5v ZGUsICJudW1hLWRpc3RhbmNlLW1hcC12MSIpICkKKyAgICAgICAgcmV0dXJuIGR0X251bWFfcGFy c2VfZGlzdGFuY2VfbWFwKGZkdCwgbm9kZSwgbmFtZSwgYWRkcmVzc19jZWxscywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfY2VsbHMpOworCisgICAgcmV0 dXJuIDA7Cit9CisKIGludCBfX2luaXQgZHRfbnVtYV9pbml0KHZvaWQpCiB7CiAgICAgaW50IHJl dDsKIAogICAgIHJldCA9IGR0X251bWFfcHJvY2Vzc19jcHVfbm9kZSgodm9pZCAqKWRldmljZV90 cmVlX2ZsYXR0ZW5lZCk7CisgICAgaWYgKCByZXQgKQorICAgICAgICByZXR1cm4gcmV0OworCisg ICAgcmV0ID0gZGV2aWNlX3RyZWVfZm9yX2VhY2hfbm9kZSgodm9pZCAqKWRldmljZV90cmVlX2Zs YXR0ZW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0X251bWFfc2Nh bl9kaXN0YW5jZV9ub2RlLCBOVUxMKTsKKyAgICBpZiAoICFyZXQgKQorICAgICAgICByZWdpc3Rl cl9ub2RlX2Rpc3RhbmNlKCZkdF9ub2RlX2Rpc3RhbmNlKTsKIAogICAgIHJldHVybiByZXQ7CiB9 CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbnVtYS9udW1hLmMgYi94ZW4vYXJjaC9hcm0vbnVt YS9udW1hLmMKaW5kZXggODIyNzM2MS4uYzAwYjkyYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt L251bWEvbnVtYS5jCisrKyBiL3hlbi9hcmNoL2FybS9udW1hL251bWEuYwpAQCAtMTgsMTAgKzE4 LDMwIEBACiAjaW5jbHVkZSA8eGVuL2N0eXBlLmg+CiAjaW5jbHVkZSA8eGVuL25vZGVtYXNrLmg+ CiAjaW5jbHVkZSA8eGVuL251bWEuaD4KKyNpbmNsdWRlIDxhc20vYWNwaS5oPgorCitzdGF0aWMg dWludDhfdCAoKm5vZGVfZGlzdGFuY2VfZm4pKG5vZGVpZF90IGEsIG5vZGVpZF90IGIpOwogCiB2 b2lkIG51bWFfZmFpbGVkKHZvaWQpCiB7CiAgICAgbnVtYV9vZmYgPSB0cnVlOworICAgIGluaXRf ZHRfbnVtYV9kaXN0YW5jZSgpOworICAgIG5vZGVfZGlzdGFuY2VfZm4gPSBOVUxMOworfQorCit1 aW50OF90IF9fbm9kZV9kaXN0YW5jZShub2RlaWRfdCBhLCBub2RlaWRfdCBiKQoreworICAgIGlm ICggbm9kZV9kaXN0YW5jZV9mbiAhPSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIG5vZGVfZGlzdGFu Y2VfZm4oYSwgYik7CisKKyAgICByZXR1cm4gYSA9PSBiID8gTE9DQUxfRElTVEFOQ0UgOiBSRU1P VEVfRElTVEFOQ0U7Cit9CisKK0VYUE9SVF9TWU1CT0woX19ub2RlX2Rpc3RhbmNlKTsKKwordm9p ZCByZWdpc3Rlcl9ub2RlX2Rpc3RhbmNlKHVpbnQ4X3QgKGZuKShub2RlaWRfdCBhLCBub2RlaWRf dCBiKSkKK3sKKyAgICBub2RlX2Rpc3RhbmNlX2ZuID0gZm47CiB9CiAKIHZvaWQgX19pbml0IG51 bWFfaW5pdCh2b2lkKQpAQCAtMjksNiArNDksOCBAQCB2b2lkIF9faW5pdCBudW1hX2luaXQodm9p ZCkKICAgICBpbnQgcmV0ID0gMDsKIAogICAgIG5vZGVzX2NsZWFyKHByb2Nlc3Nvcl9ub2Rlc19w YXJzZWQpOworICAgIGluaXRfZHRfbnVtYV9kaXN0YW5jZSgpOworCiAgICAgaWYgKCBudW1hX29m ZiApCiAgICAgICAgIGdvdG8gbm9fbnVtYTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNt LWFybS9udW1hLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL251bWEuaAppbmRleCAzNmNkNzgyLi5k MWRjODNhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL251bWEuaAorKysgYi94ZW4v aW5jbHVkZS9hc20tYXJtL251bWEuaApAQCAtNCw2ICs0LDggQEAKIHR5cGVkZWYgdWludDhfdCBu b2RlaWRfdDsKIAogdm9pZCBkdF9udW1hX3Byb2Nlc3NfbWVtb3J5X25vZGUodWludDMyX3Qgbmlk LCBwYWRkcl90IHN0YXJ0LCBwYWRkcl90IHNpemUpOwordm9pZCByZWdpc3Rlcl9ub2RlX2Rpc3Rh bmNlKHVpbnQ4X3QgKGZuKShub2RlaWRfdCBhLCBub2RlaWRfdCBiKSk7Cit2b2lkIGluaXRfZHRf bnVtYV9kaXN0YW5jZSh2b2lkKTsKIAogI2lmZGVmIENPTkZJR19OVU1BCiB2b2lkIG51bWFfaW5p dCh2b2lkKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbnVtYS5oIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9udW1hLmgKaW5kZXggZDhhMGE0NC4uY2EwYTJhNiAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9udW1hLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9udW1h LmgKQEAgLTE4LDcgKzE4LDYgQEAgZXh0ZXJuIG5vZGVpZF90IGFwaWNpZF90b19ub2RlW107CiBl eHRlcm4gdm9pZCBpbml0X2NwdV90b19ub2RlKHZvaWQpOwogCiB2b2lkIHNyYXRfcGFyc2VfcmVn aW9ucyhwYWRkcl90IGFkZHIpOwotZXh0ZXJuIHVpbnQ4X3QgX19ub2RlX2Rpc3RhbmNlKG5vZGVp ZF90IGEsIG5vZGVpZF90IGIpOwogdW5zaWduZWQgaW50IGFyY2hfZ2V0X2RtYV9iaXRzaXplKHZv aWQpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9udW1hLmggYi94ZW4v aW5jbHVkZS94ZW4vbnVtYS5oCmluZGV4IDExMGQ1ZGMuLjEwZWY0YzQgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL3hlbi9udW1hLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL251bWEuaApAQCAtNiw2 ICs2LDggQEAKICNpbmNsdWRlIDxhc20vbnVtYS5oPgogCiAjZGVmaW5lIE5VTUFfTk9fTk9ERSAg ICAgMHhGRgorI2RlZmluZSBMT0NBTF9ESVNUQU5DRSAgIDEwCisjZGVmaW5lIFJFTU9URV9ESVNU QU5DRSAgMjAKICNkZWZpbmUgTlVNQV9OT19ESVNUQU5DRSAweEZGCiAKICNkZWZpbmUgTUFYX05V TU5PREVTICAgIE5SX05PREVTCkBAIC03MCw2ICs3Miw3IEBAIGludCBudW1hX2FkZF9tZW1ibGso bm9kZWlkX3Qgbm9kZWlkLCBwYWRkcl90IHN0YXJ0LCB1aW50NjRfdCBzaXplKTsKIGludCBnZXRf bnVtX25vZGVfbWVtYmxrcyh2b2lkKTsKIGJvb2wgYXJjaF9zYW5pdGl6ZV9ub2Rlc19tZW1vcnko dm9pZCk7CiB2b2lkIG51bWFfZmFpbGVkKHZvaWQpOwordWludDhfdCBfX25vZGVfZGlzdGFuY2Uo bm9kZWlkX3QgYSwgbm9kZWlkX3QgYik7CiAjZWxzZQogc3RhdGljIGlubGluZSB2b2lkIG51bWFf YWRkX2NwdShpbnQgY3B1KSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBudW1hX3NldF9ub2RlKGlu dCBjcHUsIG5vZGVpZF90IG5vZGUpIHsgfQotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK