amd-mixture-of-experts · submission 24971
KernelBot user 160 · python · License unknown
Use it
Vendorable · source mirrored · license unknownView source →
No package. Vendor the mirrored source: 1 lines, June 9 Researcher Reciprocity License v1.0.
sushi.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mixture-of-experts-24971?include=source"interfacepython
Compatibility
measured onAMD Instinct MI300X
declared hardwareAMD Instinct MI300X
architecturesgfx942
dtypesfp16
Benchmark evidence
2 measurements across 1 GPU, fastest first.
Operation / workload
Hardware
Latency
Rank
Observed
Reported · How evidence levels are derived →
Source and license
sourceavailable
revision digestsha256:4716dc2e51dfddbb10ee0d1f9a9a8fc450688759ab477f7fb96752ca4c5f3c99
license declaredunknown
license concludedunknown
imported2026-08-15
Kernel source
sushi.py1 lines
IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1taXh0dXJlLW9mLWV4cGVydHMKIyFQT1BDT1JOIGdwdXMgTUkzMDAKCmltcG9ydCBtYXRoCmltcG9ydCB0b3JjaAppbXBvcnQgdG9yY2gubm4gYXMgbm4KaW1wb3J0IHRvcmNoLm5uLmZ1bmN0aW9uYWwgYXMgRgpmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgVHVwbGUsIE9wdGlvbmFsCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QKCgpjbGFzcyBFeHBlcnQobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IERpY3QsIGRfZXhwZXJ0OiBPcHRpb25hbFtpbnRdID0gTm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKICAgICAgICBzZWxmLmFjdF9mbiA9IG5uLlNpTFUoKQogICAgICAgIHNlbGYuZF9oaWRkZW46IGludCA9IGNvbmZpZ1siZF9oaWRkZW4iXQogICAgICAgIHNlbGYuZF9leHBlcnQ6IGludCA9IGNvbmZpZ1siZF9leHBlcnQiXSBpZiBkX2V4cGVydCBpcyBOb25lIGVsc2UgZF9leHBlcnQKCiAgICAgICAgc2VsZi5XX2dhdGUgPSBOb25lCiAgICAgICAgc2VsZi5XX3VwID0gTm9uZQogICAgICAgIHNlbGYuV19kb3duID0gTm9uZQoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIGdhdGUgPSBzZWxmLmFjdF9mbih4IEAgc2VsZi5XX2dhdGUpCiAgICAgICAgb3V0ID0gKGdhdGUgKiAoeCBAIHNlbGYuV191cCkpIEAgc2VsZi5XX2Rvd24KICAgICAgICByZXR1cm4gb3V0CgoKY2xhc3MgTW9FR2F0ZShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogRGljdCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi50b3BfazogaW50ID0gY29uZmlnWyJuX2V4cGVydHNfcGVyX3Rva2VuIl0KICAgICAgICBzZWxmLm51bV9leHBlcnRzOiBpbnQgPSBjb25maWdbIm5fcm91dGVkX2V4cGVydHMiXQogICAgICAgIHNlbGYuZF9oaWRkZW46IGludCA9IGNvbmZpZ1siZF9oaWRkZW4iXQoKICAgICAgICBzZWxmLldfZyA9IE5vbmUKCiAgICBkZWYgZm9yd2FyZChzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IFR1cGxlW3RvcmNoLlRlbnNvciwgdG9yY2guVGVuc29yXToKICAgICAgICBsb2dpdHMgPSB4IEAgc2VsZi5XX2cKICAgICAgICBzY29yZXMgPSBsb2dpdHMuc29mdG1heChkaW09LTEpCiAgICAgICAgdG9wa19zY29yZXMsIHRvcGtfaW5kaWNlcyA9IHRvcmNoLnRvcGsoCiAgICAgICAgICAgIHNjb3Jlcywgaz1zZWxmLnRvcF9rLCBkaW09LTEsIHNvcnRlZD1GYWxzZQogICAgICAgICkKCiAgICAgICAgcmV0dXJuIHRvcGtfaW5kaWNlcywgdG9wa19zY29yZXMKCgpjbGFzcyBNb0Uobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IERpY3QpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCiAgICAgICAgc2VsZi5leHBlcnRzID0gbm4uTW9kdWxlTGlzdCgKICAgICAgICAgICAgW0V4cGVydChjb25maWcpIGZvciBfIGluIHJhbmdlKGNvbmZpZ1sibl9yb3V0ZWRfZXhwZXJ0cyJdKV0KICAgICAgICApCiAgICAgICAgc2VsZi5nYXRpbmdfbmV0d29yayA9IE1vRUdhdGUoY29uZmlnKQogICAgICAgIHNoYXJlZF9leHBlcnRfZGltID0gY29uZmlnWyJkX2V4cGVydCJdICogY29uZmlnWyJuX3NoYXJlZF9leHBlcnRzIl0KICAgICAgICBzZWxmLnNoYXJlZF9leHBlcnQgPSBFeHBlcnQoY29uZmlnPWNvbmZpZywgZF9leHBlcnQ9c2hhcmVkX2V4cGVydF9kaW0pCgogICAgZGVmIGZvcndhcmQoc2VsZiwgeDogdG9yY2guVGVuc29yKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgc2hhcmVkX291dHB1dCA9IHNlbGYuc2hhcmVkX2V4cGVydCh4KQogICAgICAgIGV4cGVydF9pbmRpY2VzLCBleHBlcnRfc2NvcmVzID0gc2VsZi5nYXRpbmdfbmV0d29yayh4KQogICAgICAgIGJhdGNoX3NpemUsIHNlcV9sZW4sIGhpZGRlbl9kaW0gPSB4LnNoYXBlCiAgICAgICAgb3JpZ19zaGFwZSA9IHguc2hhcGUKICAgICAgICB4X2ZsYXQgPSB4LnZpZXcoLTEsIGhpZGRlbl9kaW0pCiAgICAgICAgZmxhdF9leHBlcnRfaW5kaWNlcyA9IGV4cGVydF9pbmRpY2VzLnZpZXcoLTEpCiAgICAgICAgZmxhdF9leHBlcnRfd2VpZ2h0cyA9IGV4cGVydF9zY29yZXMudmlldygtMSwgMSkKICAgICAgICByb3V0ZWRfb3V0cHV0X2ZsYXQgPSBzZWxmLm1vZV9pbmZlcigKICAgICAgICAgICAgeF9mbGF0LCBmbGF0X2V4cGVydF9pbmRpY2VzLCBmbGF0X2V4cGVydF93ZWlnaHRzCiAgICAgICAgKQoKICAgICAgICByb3V0ZWRfb3V0cHV0ID0gcm91dGVkX291dHB1dF9mbGF0LnZpZXcoKm9yaWdfc2hhcGUpCiAgICAgICAgcmV0dXJuIHJvdXRlZF9vdXRwdXQgKyBzaGFyZWRfb3V0cHV0CgogICAgQHRvcmNoLm5vX2dyYWQoKQogICAgZGVmIG1vZV9pbmZlcigKICAgICAgICBzZWxmLAogICAgICAgIHg6IHRvcmNoLlRlbnNvciwKICAgICAgICBmbGF0X2V4cGVydF9pbmRpY2VzOiB0b3JjaC5UZW5zb3IsCiAgICAgICAgZmxhdF9leHBlcnRfd2VpZ2h0czogdG9yY2guVGVuc29yLAogICAgKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgZXhwZXJ0X2NhY2hlID0gdG9yY2guemVyb3NfbGlrZSh4KQogICAgICAgIGlkeHMgPSBmbGF0X2V4cGVydF9pbmRpY2VzLmFyZ3NvcnQoKQogICAgICAgIGNvdW50cyA9IGZsYXRfZXhwZXJ0X2luZGljZXMuYmluY291bnQoKS5jcHUoKS5udW1weSgpCiAgICAgICAgdG9rZW5zX3Blcl9leHBlcnQgPSBjb3VudHMuY3Vtc3VtKCkKICAgICAgICBudW1fcGVyX3RvayA9IHNlbGYuY29uZmlnWyJuX2V4cGVydHNfcGVyX3Rva2VuIl0KICAgICAgICB0b2tlbl9pZHhzID0gaWR4cyAvLyBudW1fcGVyX3RvawogICAgICAgIGZvciBleHBlcnRfaWQsIGVuZF9pZHggaW4gZW51bWVyYXRlKHRva2Vuc19wZXJfZXhwZXJ0KToKICAgICAgICAgICAgc3RhcnRfaWR4ID0gMCBpZiBleHBlcnRfaWQgPT0gMCBlbHNlIHRva2Vuc19wZXJfZXhwZXJ0W2V4cGVydF9pZCAtIDFdCiAgICAgICAgICAgIGlmIHN0YXJ0X2lkeCA9PSBlbmRfaWR4OgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGV4cGVydCA9IHNlbGYuZXhwZXJ0c1tleHBlcnRfaWRdCiAgICAgICAgICAgIGV4cF90b2tlbl9pZHhzID0gdG9rZW5faWR4c1tzdGFydF9pZHg6ZW5kX2lkeF0KICAgICAgICAgICAgZXhwZXJ0X3Rva2VucyA9IHhbZXhwX3Rva2VuX2lkeHNdCiAgICAgICAgICAgIGV4cGVydF9vdXQgPSBleHBlcnQoZXhwZXJ0X3Rva2VucykKICAgICAgICAgICAgZXhwZXJ0X291dC5tdWxfKGZsYXRfZXhwZXJ0X3dlaWdodHNbaWR4c1tzdGFydF9pZHg6ZW5kX2lkeF1dKQogICAgICAgICAgICBleHBlcnRfY2FjaGUuc2NhdHRlcl9yZWR1Y2VfKAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIGV4cF90b2tlbl9pZHhzLnZpZXcoLTEsIDEpLnJlcGVhdCgxLCB4LnNoYXBlWy0xXSksCiAgICAgICAgICAgICAgICBleHBlcnRfb3V0LAogICAgICAgICAgICAgICAgcmVkdWNlPSJzdW0iLAogICAgICAgICAgICApCgogICAgICAgIHJldHVybiBleHBlcnRfY2FjaGUKCgpkZWYgY3VzdG9tX2tlcm5lbChkYXRhOiBpbnB1dF90KSAtPiBvdXRwdXRfdDoKICAgIGlucHV0X3RlbnNvciwgd2VpZ2h0cywgY29uZmlnID0gZGF0YQogICAgbnVtX2V4cGVydHMgPSBjb25maWdbIm5fcm91dGVkX2V4cGVydHMiXQogICAgbW9lID0gTW9FKGNvbmZpZykKCiAgICBtb2UuZ2F0aW5nX25ldHdvcmsuV19nID0gd2VpZ2h0c1sicm91dGVyLndlaWdodCJdLnQoKQoKICAgIGZvciBpIGluIHJhbmdlKG51bV9leHBlcnRzKToKICAgICAgICBtb2UuZXhwZXJ0c1tpXS5XX2dhdGUgPSB3ZWlnaHRzW2YiZXhwZXJ0cy57aX0uMC53ZWlnaHQiXQogICAgICAgIG1vZS5leHBlcnRzW2ldLldfdXAgPSB3ZWlnaHRzW2YiZXhwZXJ0cy57aX0uMS53ZWlnaHQiXQogICAgICAgIG1vZS5leHBlcnRzW2ldLldfZG93biA9IHdlaWdodHNbZiJleHBlcnRzLntpfS4yLndlaWdodCJdCgogICAgbW9lLnNoYXJlZF9leHBlcnQuV19nYXRlID0gd2VpZ2h0c1sic2hhcmVkX2V4cGVydHMuMC53ZWlnaHQiXQogICAgbW9lLnNoYXJlZF9leHBlcnQuV191cCA9IHdlaWdodHNbInNoYXJlZF9leHBlcnRzLjEud2VpZ2h0Il0KICAgIG1vZS5zaGFyZWRfZXhwZXJ0LldfZG93biA9IHdlaWdodHNbInNoYXJlZF9leHBlcnRzLjIud2VpZ2h0Il0KCiAgICBvdXRwdXQgPSBtb2UoaW5wdXRfdGVuc29yKQoKICAgIHJldHVybiBvdXRwdXQKSource code from GPU Mode and the KernelBot dataset · June 9 Researcher Reciprocity License v1.0
Changes from previous submission
Against this author's previous submission amd-mixture-of-experts · submission 22003.
- IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1taXh0dXJlLW9mLWV4cGVydHMKIyFQT1BDT1JOIGdwdXMgTUkzMDAKCmltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCBtYXRoCmltcG9ydCB0b3JjaAppbXBvcnQgdG9yY2gubm4gYXMgbm4KaW1wb3J0IHRvcmNoLm5uLmZ1bmN0aW9uYWwgYXMgRgpmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgVHVwbGUsIE9wdGlvbmFsCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QKZnJvbSB0b3JjaC51dGlscy5jcHBfZXh0ZW5zaW9uIGltcG9ydCBsb2FkX2lubGluZQoKCmNsYXNzIEV4cGVydChubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogRGljdCwgZF9leHBlcnQ6IE9wdGlvbmFsW2ludF0gPSBOb25lKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwogICAgICAgIHNlbGYuYWN0X2ZuID0gbm4uU2lMVSgpCiAgICAgICAgc2VsZi5kX2hpZGRlbjogaW50ID0gY29uZmlnWyJkX2hpZGRlbiJdCiAgICAgICAgc2VsZi5kX2V4cGVydDogaW50ID0gY29uZmlnWyJkX2V4cGVydCJdIGlmIGRfZXhwZXJ0IGlzIE5vbmUgZWxzZSBkX2V4cGVydAoKICAgICAgICBzZWxmLldfZ2F0ZSA9IE5vbmUKICAgICAgICBzZWxmLldfdXAgPSBOb25lCiAgICAgICAgc2VsZi5XX2Rvd24gPSBubi5MaW5lYXIoc2VsZi5kX2V4cGVydCwgc2VsZi5kX2hpZGRlbiwgYmlhcz1GYWxzZSkKCiAgICBkZWYgZm9yd2FyZChzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICBnYXRlID0gc2VsZi5hY3RfZm4oeCBAIHNlbGYuV19nYXRlKQogICAgICAgIG91dCA9IHNlbGYuV19kb3duKGdhdGUgKiAoeCBAIHNlbGYuV191cCkpCiAgICAgICAgcmV0dXJuIG91dAoKCmNsYXNzIE1vRUdhdGUobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IERpY3QpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYudG9wX2s6IGludCA9IGNvbmZpZ1sibl9leHBlcnRzX3Blcl90b2tlbiJdCiAgICAgICAgc2VsZi5udW1fZXhwZXJ0czogaW50ID0gY29uZmlnWyJuX3JvdXRlZF9leHBlcnRzIl0KICAgICAgICBzZWxmLmRfaGlkZGVuOiBpbnQgPSBjb25maWdbImRfaGlkZGVuIl0KCiAgICAgICAgc2VsZi5XX2cgPSBubi5MaW5lYXIoc2VsZi5kX2hpZGRlbiwgc2VsZi5udW1fZXhwZXJ0cywgYmlhcz1GYWxzZSkKCiAgICBkZWYgZm9yd2FyZChzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IFR1cGxlW3RvcmNoLlRlbnNvciwgdG9yY2guVGVuc29yXToKICAgICAgICBsb2dpdHMgPSBzZWxmLldfZyh4KQogICAgICAgIHNjb3JlcyA9IGxvZ2l0cy5zb2Z0bWF4KGRpbT0tMSkKICAgICAgICB0b3BrX3Njb3JlcywgdG9wa19pbmRpY2VzID0gdG9yY2gudG9waygKICAgICAgICAgICAgc2NvcmVzLCBrPXNlbGYudG9wX2ssIGRpbT0tMSwgc29ydGVkPUZhbHNlCiAgICAgICAgKQoKICAgICAgICByZXR1cm4gdG9wa19pbmRpY2VzLCB0b3BrX3Njb3JlcwoKCmNsYXNzIE1vRShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogRGljdCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKICAgICAgICBzZWxmLmV4cGVydHMgPSBubi5Nb2R1bGVMaXN0KAogICAgICAgICAgICBbRXhwZXJ0KGNvbmZpZykgZm9yIF8gaW4gcmFuZ2UoY29uZmlnWyJuX3JvdXRlZF9leHBlcnRzIl0pXQogICAgICAgICkKICAgICAgICBzZWxmLmdhdGluZ19uZXR3b3JrID0gTW9FR2F0ZShjb25maWcpCiAgICAgICAgc2hhcmVkX2V4cGVydF9kaW0gPSBjb25maWdbImRfZXhwZXJ0Il0gKiBjb25maWdbIm5fc2hhcmVkX2V4cGVydHMiXQogICAgICAgIHNlbGYuc2hhcmVkX2V4cGVydCA9IEV4cGVydChjb25maWc9Y29uZmlnLCBkX2V4cGVydD1zaGFyZWRfZXhwZXJ0X2RpbSkKCiAgICBkZWYgZm9yd2FyZChzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICBzaGFyZWRfb3V0cHV0ID0gc2VsZi5zaGFyZWRfZXhwZXJ0KHgpCiAgICAgICAgZXhwZXJ0X2luZGljZXMsIGV4cGVydF9zY29yZXMgPSBzZWxmLmdhdGluZ19uZXR3b3JrKHgpCiAgICAgICAgYmF0Y2hfc2l6ZSwgc2VxX2xlbiwgaGlkZGVuX2RpbSA9IHguc2hhcGUKICAgICAgICBvcmlnX3NoYXBlID0geC5zaGFwZQogICAgICAgIHhfZmxhdCA9IHgudmlldygtMSwgaGlkZGVuX2RpbSkKICAgICAgICBmbGF0X2V4cGVydF9pbmRpY2VzID0gZXhwZXJ0X2luZGljZXMudmlldygtMSkKICAgICAgICBmbGF0X2V4cGVydF93ZWlnaHRzID0gZXhwZXJ0X3Njb3Jlcy52aWV3KC0xLCAxKQogICAgICAgIHJvdXRlZF9vdXRwdXRfZmxhdCA9IHNlbGYubW9lX2luZmVyKAogICAgICAgICAgICB4X2ZsYXQsIGZsYXRfZXhwZXJ0X2luZGljZXMsIGZsYXRfZXhwZXJ0X3dlaWdodHMKICAgICAgICApCgogICAgICAgIHJvdXRlZF9vdXRwdXQgPSByb3V0ZWRfb3V0cHV0X2ZsYXQudmlldygqb3JpZ19zaGFwZSkKICAgICAgICByZXR1cm4gcm91dGVkX291dHB1dCArIHNoYXJlZF9vdXRwdXQKCiAgICBAdG9yY2gubm9fZ3JhZCgpCiAgICBkZWYgbW9lX2luZmVyKAogICAgICAgIHNlbGYsCiAgICAgICAgeDogdG9yY2guVGVuc29yLAogICAgICAgIGZsYXRfZXhwZXJ0X2luZGljZXM6IHRvcmNoLlRlbnNvciwKICAgICAgICBmbGF0X2V4cGVydF93ZWlnaHRzOiB0b3JjaC5UZW5zb3IsCiAgICApIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICBleHBlcnRfY2FjaGUgPSB0b3JjaC56ZXJvc19saWtlKHgpCiAgICAgICAgaWR4cyA9IGZsYXRfZXhwZXJ0X2luZGljZXMuYXJnc29ydCgpCiAgICAgICAgY291bnRzID0gZmxhdF9leHBlcnRfaW5kaWNlcy5iaW5jb3VudCgpLmNwdSgpLm51bXB5KCkKICAgICAgICB0b2tlbnNfcGVyX2V4cGVydCA9IGNvdW50cy5jdW1zdW0oKQogICAgICAgIG51bV9wZXJfdG9rID0gc2VsZi5jb25maWdbIm5fZXhwZXJ0c19wZXJfdG9rZW4iXQogICAgICAgIHRva2VuX2lkeHMgPSBpZHhzIC8vIG51bV9wZXJfdG9rCiAgICAgICAgZm9yIGV4cGVydF9pZCwgZW5kX2lkeCBpbiBlbnVtZXJhdGUodG9rZW5zX3Blcl9leHBlcnQpOgogICAgICAgICAgICBzdGFydF9pZHggPSAwIGlmIGV4cGVydF9pZCA9PSAwIGVsc2UgdG9rZW5zX3Blcl9leHBlcnRbZXhwZXJ0X2lkIC0gMV0KICAgICAgICAgICAgaWYgc3RhcnRfaWR4ID09IGVuZF9pZHg6CiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgZXhwZXJ0ID0gc2VsZi5leHBlcnRzW2V4cGVydF9pZF0KICAgICAgICAgICAgZXhwX3Rva2VuX2lkeHMgPSB0b2tlbl9pZHhzW3N0YXJ0X2lkeDplbmRfaWR4XQogICAgICAgICAgICBleHBlcnRfdG9rZW5zID0geFtleHBfdG9rZW5faWR4c10KICAgICAgICAgICAgZXhwZXJ0X291dCA9IGV4cGVydChleHBlcnRfdG9rZW5zKQogICAgICAgICAgICBleHBlcnRfb3V0Lm11bF8oZmxhdF9leHBlcnRfd2VpZ2h0c1tpZHhzW3N0YXJ0X2lkeDplbmRfaWR4XV0pCiAgICAgICAgICAgIGV4cGVydF9jYWNoZS5zY2F0dGVyX3JlZHVjZV8oCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgZXhwX3Rva2VuX2lkeHMudmlldygtMSwgMSkucmVwZWF0KDEsIHguc2hhcGVbLTFdKSwKICAgICAgICAgICAgICAgIGV4cGVydF9vdXQsCiAgICAgICAgICAgICAgICByZWR1Y2U9InN1bSIsCiAgICAgICAgICAgICkKCiAgICAgICAgcmV0dXJuIGV4cGVydF9jYWNoZQoKCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgaW5wdXRfdGVuc29yLCB3ZWlnaHRzLCBjb25maWcgPSBkYXRhCiAgICBudW1fZXhwZXJ0cyA9IGNvbmZpZ1sibl9yb3V0ZWRfZXhwZXJ0cyJdCiAgICBtb2UgPSBNb0UoY29uZmlnKQoKICAgIG1vZS5nYXRpbmdfbmV0d29yay5XX2cud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKHdlaWdodHNbInJvdXRlci53ZWlnaHQiXSkKCiAgICBmb3IgaSBpbiByYW5nZShudW1fZXhwZXJ0cyk6CiAgICAgICAgbW9lLmV4cGVydHNbaV0uV19nYXRlID0gd2VpZ2h0c1tmImV4cGVydHMue2l9LjAud2VpZ2h0Il0KICAgICAgICBtb2UuZXhwZXJ0c1tpXS5XX3VwID0gd2VpZ2h0c1tmImV4cGVydHMue2l9LjEud2VpZ2h0Il0KICAgICAgICBkb3duX3Byb2pfd2VpZ2h0ID0gd2VpZ2h0c1tmImV4cGVydHMue2l9LjIud2VpZ2h0Il0KCiAgICAgICAgbW9lLmV4cGVydHNbaV0uV19kb3duLndlaWdodCA9IG5uLlBhcmFtZXRlcihkb3duX3Byb2pfd2VpZ2h0LnQoKSkKCiAgICBtb2Uuc2hhcmVkX2V4cGVydC5XX2dhdGUgPSB3ZWlnaHRzWyJzaGFyZWRfZXhwZXJ0cy4wLndlaWdodCJdCiAgICBtb2Uuc2hhcmVkX2V4cGVydC5XX3VwID0gd2VpZ2h0c1sic2hhcmVkX2V4cGVydHMuMS53ZWlnaHQiXQogICAgbW9lLnNoYXJlZF9leHBlcnQuV19kb3duLndlaWdodCA9IG5uLlBhcmFtZXRlcigKICAgICAgICB3ZWlnaHRzWyJzaGFyZWRfZXhwZXJ0cy4yLndlaWdodCJdLnQoKQogICAgKQoKICAgIG91dHB1dCA9IG1vZShpbnB1dF90ZW5zb3IpCgogICAgcmV0dXJuIG91dHB1dAo=No newline at end of file+ IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1taXh0dXJlLW9mLWV4cGVydHMKIyFQT1BDT1JOIGdwdXMgTUkzMDAKCmltcG9ydCBtYXRoCmltcG9ydCB0b3JjaAppbXBvcnQgdG9yY2gubm4gYXMgbm4KaW1wb3J0IHRvcmNoLm5uLmZ1bmN0aW9uYWwgYXMgRgpmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgVHVwbGUsIE9wdGlvbmFsCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QKCgpjbGFzcyBFeHBlcnQobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IERpY3QsIGRfZXhwZXJ0OiBPcHRpb25hbFtpbnRdID0gTm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKICAgICAgICBzZWxmLmFjdF9mbiA9IG5uLlNpTFUoKQogICAgICAgIHNlbGYuZF9oaWRkZW46IGludCA9IGNvbmZpZ1siZF9oaWRkZW4iXQogICAgICAgIHNlbGYuZF9leHBlcnQ6IGludCA9IGNvbmZpZ1siZF9leHBlcnQiXSBpZiBkX2V4cGVydCBpcyBOb25lIGVsc2UgZF9leHBlcnQKCiAgICAgICAgc2VsZi5XX2dhdGUgPSBOb25lCiAgICAgICAgc2VsZi5XX3VwID0gTm9uZQogICAgICAgIHNlbGYuV19kb3duID0gTm9uZQoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIGdhdGUgPSBzZWxmLmFjdF9mbih4IEAgc2VsZi5XX2dhdGUpCiAgICAgICAgb3V0ID0gKGdhdGUgKiAoeCBAIHNlbGYuV191cCkpIEAgc2VsZi5XX2Rvd24KICAgICAgICByZXR1cm4gb3V0CgoKY2xhc3MgTW9FR2F0ZShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogRGljdCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi50b3BfazogaW50ID0gY29uZmlnWyJuX2V4cGVydHNfcGVyX3Rva2VuIl0KICAgICAgICBzZWxmLm51bV9leHBlcnRzOiBpbnQgPSBjb25maWdbIm5fcm91dGVkX2V4cGVydHMiXQogICAgICAgIHNlbGYuZF9oaWRkZW46IGludCA9IGNvbmZpZ1siZF9oaWRkZW4iXQoKICAgICAgICBzZWxmLldfZyA9IE5vbmUKCiAgICBkZWYgZm9yd2FyZChzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IFR1cGxlW3RvcmNoLlRlbnNvciwgdG9yY2guVGVuc29yXToKICAgICAgICBsb2dpdHMgPSB4IEAgc2VsZi5XX2cKICAgICAgICBzY29yZXMgPSBsb2dpdHMuc29mdG1heChkaW09LTEpCiAgICAgICAgdG9wa19zY29yZXMsIHRvcGtfaW5kaWNlcyA9IHRvcmNoLnRvcGsoCiAgICAgICAgICAgIHNjb3Jlcywgaz1zZWxmLnRvcF9rLCBkaW09LTEsIHNvcnRlZD1GYWxzZQogICAgICAgICkKCiAgICAgICAgcmV0dXJuIHRvcGtfaW5kaWNlcywgdG9wa19zY29yZXMKCgpjbGFzcyBNb0Uobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IERpY3QpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCiAgICAgICAgc2VsZi5leHBlcnRzID0gbm4uTW9kdWxlTGlzdCgKICAgICAgICAgICAgW0V4cGVydChjb25maWcpIGZvciBfIGluIHJhbmdlKGNvbmZpZ1sibl9yb3V0ZWRfZXhwZXJ0cyJdKV0KICAgICAgICApCiAgICAgICAgc2VsZi5nYXRpbmdfbmV0d29yayA9IE1vRUdhdGUoY29uZmlnKQogICAgICAgIHNoYXJlZF9leHBlcnRfZGltID0gY29uZmlnWyJkX2V4cGVydCJdICogY29uZmlnWyJuX3NoYXJlZF9leHBlcnRzIl0KICAgICAgICBzZWxmLnNoYXJlZF9leHBlcnQgPSBFeHBlcnQoY29uZmlnPWNvbmZpZywgZF9leHBlcnQ9c2hhcmVkX2V4cGVydF9kaW0pCgogICAgZGVmIGZvcndhcmQoc2VsZiwgeDogdG9yY2guVGVuc29yKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgc2hhcmVkX291dHB1dCA9IHNlbGYuc2hhcmVkX2V4cGVydCh4KQogICAgICAgIGV4cGVydF9pbmRpY2VzLCBleHBlcnRfc2NvcmVzID0gc2VsZi5nYXRpbmdfbmV0d29yayh4KQogICAgICAgIGJhdGNoX3NpemUsIHNlcV9sZW4sIGhpZGRlbl9kaW0gPSB4LnNoYXBlCiAgICAgICAgb3JpZ19zaGFwZSA9IHguc2hhcGUKICAgICAgICB4X2ZsYXQgPSB4LnZpZXcoLTEsIGhpZGRlbl9kaW0pCiAgICAgICAgZmxhdF9leHBlcnRfaW5kaWNlcyA9IGV4cGVydF9pbmRpY2VzLnZpZXcoLTEpCiAgICAgICAgZmxhdF9leHBlcnRfd2VpZ2h0cyA9IGV4cGVydF9zY29yZXMudmlldygtMSwgMSkKICAgICAgICByb3V0ZWRfb3V0cHV0X2ZsYXQgPSBzZWxmLm1vZV9pbmZlcigKICAgICAgICAgICAgeF9mbGF0LCBmbGF0X2V4cGVydF9pbmRpY2VzLCBmbGF0X2V4cGVydF93ZWlnaHRzCiAgICAgICAgKQoKICAgICAgICByb3V0ZWRfb3V0cHV0ID0gcm91dGVkX291dHB1dF9mbGF0LnZpZXcoKm9yaWdfc2hhcGUpCiAgICAgICAgcmV0dXJuIHJvdXRlZF9vdXRwdXQgKyBzaGFyZWRfb3V0cHV0CgogICAgQHRvcmNoLm5vX2dyYWQoKQogICAgZGVmIG1vZV9pbmZlcigKICAgICAgICBzZWxmLAogICAgICAgIHg6IHRvcmNoLlRlbnNvciwKICAgICAgICBmbGF0X2V4cGVydF9pbmRpY2VzOiB0b3JjaC5UZW5zb3IsCiAgICAgICAgZmxhdF9leHBlcnRfd2VpZ2h0czogdG9yY2guVGVuc29yLAogICAgKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgZXhwZXJ0X2NhY2hlID0gdG9yY2guemVyb3NfbGlrZSh4KQogICAgICAgIGlkeHMgPSBmbGF0X2V4cGVydF9pbmRpY2VzLmFyZ3NvcnQoKQogICAgICAgIGNvdW50cyA9IGZsYXRfZXhwZXJ0X2luZGljZXMuYmluY291bnQoKS5jcHUoKS5udW1weSgpCiAgICAgICAgdG9rZW5zX3Blcl9leHBlcnQgPSBjb3VudHMuY3Vtc3VtKCkKICAgICAgICBudW1fcGVyX3RvayA9IHNlbGYuY29uZmlnWyJuX2V4cGVydHNfcGVyX3Rva2VuIl0KICAgICAgICB0b2tlbl9pZHhzID0gaWR4cyAvLyBudW1fcGVyX3RvawogICAgICAgIGZvciBleHBlcnRfaWQsIGVuZF9pZHggaW4gZW51bWVyYXRlKHRva2Vuc19wZXJfZXhwZXJ0KToKICAgICAgICAgICAgc3RhcnRfaWR4ID0gMCBpZiBleHBlcnRfaWQgPT0gMCBlbHNlIHRva2Vuc19wZXJfZXhwZXJ0W2V4cGVydF9pZCAtIDFdCiAgICAgICAgICAgIGlmIHN0YXJ0X2lkeCA9PSBlbmRfaWR4OgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGV4cGVydCA9IHNlbGYuZXhwZXJ0c1tleHBlcnRfaWRdCiAgICAgICAgICAgIGV4cF90b2tlbl9pZHhzID0gdG9rZW5faWR4c1tzdGFydF9pZHg6ZW5kX2lkeF0KICAgICAgICAgICAgZXhwZXJ0X3Rva2VucyA9IHhbZXhwX3Rva2VuX2lkeHNdCiAgICAgICAgICAgIGV4cGVydF9vdXQgPSBleHBlcnQoZXhwZXJ0X3Rva2VucykKICAgICAgICAgICAgZXhwZXJ0X291dC5tdWxfKGZsYXRfZXhwZXJ0X3dlaWdodHNbaWR4c1tzdGFydF9pZHg6ZW5kX2lkeF1dKQogICAgICAgICAgICBleHBlcnRfY2FjaGUuc2NhdHRlcl9yZWR1Y2VfKAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIGV4cF90b2tlbl9pZHhzLnZpZXcoLTEsIDEpLnJlcGVhdCgxLCB4LnNoYXBlWy0xXSksCiAgICAgICAgICAgICAgICBleHBlcnRfb3V0LAogICAgICAgICAgICAgICAgcmVkdWNlPSJzdW0iLAogICAgICAgICAgICApCgogICAgICAgIHJldHVybiBleHBlcnRfY2FjaGUKCgpkZWYgY3VzdG9tX2tlcm5lbChkYXRhOiBpbnB1dF90KSAtPiBvdXRwdXRfdDoKICAgIGlucHV0X3RlbnNvciwgd2VpZ2h0cywgY29uZmlnID0gZGF0YQogICAgbnVtX2V4cGVydHMgPSBjb25maWdbIm5fcm91dGVkX2V4cGVydHMiXQogICAgbW9lID0gTW9FKGNvbmZpZykKCiAgICBtb2UuZ2F0aW5nX25ldHdvcmsuV19nID0gd2VpZ2h0c1sicm91dGVyLndlaWdodCJdLnQoKQoKICAgIGZvciBpIGluIHJhbmdlKG51bV9leHBlcnRzKToKICAgICAgICBtb2UuZXhwZXJ0c1tpXS5XX2dhdGUgPSB3ZWlnaHRzW2YiZXhwZXJ0cy57aX0uMC53ZWlnaHQiXQogICAgICAgIG1vZS5leHBlcnRzW2ldLldfdXAgPSB3ZWlnaHRzW2YiZXhwZXJ0cy57aX0uMS53ZWlnaHQiXQogICAgICAgIG1vZS5leHBlcnRzW2ldLldfZG93biA9IHdlaWdodHNbZiJleHBlcnRzLntpfS4yLndlaWdodCJdCgogICAgbW9lLnNoYXJlZF9leHBlcnQuV19nYXRlID0gd2VpZ2h0c1sic2hhcmVkX2V4cGVydHMuMC53ZWlnaHQiXQogICAgbW9lLnNoYXJlZF9leHBlcnQuV191cCA9IHdlaWdodHNbInNoYXJlZF9leHBlcnRzLjEud2VpZ2h0Il0KICAgIG1vZS5zaGFyZWRfZXhwZXJ0LldfZG93biA9IHdlaWdodHNbInNoYXJlZF9leHBlcnRzLjIud2VpZ2h0Il0KCiAgICBvdXRwdXQgPSBtb2UoaW5wdXRfdGVuc29yKQoKICAgIHJldHVybiBvdXRwdXQKNo newline at end of file
Best evidence level for this revision: reported
JSON