ZGlmZiAtLWdpdCBhL2JvYXJkL2Fkc3ZpeC9NYWtlZmlsZSBiL2JvYXJkL2Fkc3ZpeC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTUxNGFhCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRzdml4L01ha2VmaWxlCkBAIC0wLDAgKzEsNDggQEAKKworIworIyAoQykgQ29weXJpZ2h0IDIwMDAKKyMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xJQgk9IGxpYiQoQk9BUkQpLmEKKworT0JKUwk6PSBhZHN2aXgubyBwY21jaWEubworU09CSlMJOj0gbWVtc2V0dXAubyBweGF2b2x0YWdlLm8KKworJChMSUIpOgkkKE9CSlMpICQoU09CSlMpCisJJChBUikgY3J2ICRAICQoT0JKUykgJChTT0JKUykKKworY2xlYW46CisJcm0gLWYgJChTT0JKUykgJChPQkpTKQorCitkaXN0Y2xlYW46CWNsZWFuCisJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKy5kZXBlbmQ6CU1ha2VmaWxlICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykKKwkJJChDQykgLU0gJChDUFBGTEFHUykgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKSA+ICRACisKKy1pbmNsdWRlIC5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzdml4L2Fkc3ZpeC5jIGIvYm9hcmQvYWRzdml4L2Fkc3ZpeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNzcwZTkKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9hZHN2aXgvYWRzdml4LmMKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNAorICogUm9iZXJ0IFdoYWxleSwgQXBwbGllZCBEYXRhIFN5c3RlbXMsIEluYy4gcndoYWxleUBhcHBsaWVkZGF0YS5uZXQKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEt5bGUgSGFycmlzLCBOZXh1cyBUZWNobm9sb2dpZXMsIEluYy4ga2hhcnJpc0BuZXh1cy10ZWNoLm5ldAorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogU3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CisgKiBNYXJpdXMgR3JvZWdlciA8bWdyb2VnZXJAc3lzZ28uZGU+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBNaXNjZWxhbmVvdXMgcGxhdGZvcm0gZGVwZW5kZW50IGluaXRpYWxpc2F0aW9ucworICovCisKK2ludCBib2FyZF9pbml0ICh2b2lkKQoreworCURFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCisJLyogbWVtb3J5IGFuZCBjcHUtc3BlZWQgYXJlIHNldHVwIGJlZm9yZSByZWxvY2F0aW9uICovCisJLyogc28gd2UgZG8gX25vdGhpbmdfIGhlcmUgKi8KKworCS8qIGFyY2ggbnVtYmVyIG9mIEFEU1ZJWC1Cb2FyZCAqLworCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSA2MjA7CisKKwkvKiBhZHJlc3Mgb2YgYm9vdCBwYXJhbWV0ZXJzICovCisJZ2QtPmJkLT5iaV9ib290X3BhcmFtcyA9IDB4YTAwMDAwM2M7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGJvYXJkX2xhdGVfaW5pdCh2b2lkKQoreworCXNldGVudigic3Rkb3V0IiwgInNlcmlhbCIpOworCXNldGVudigic3RkZXJyIiwgInNlcmlhbCIpOworCXJldHVybiAwOworfQorCisKK2ludCBkcmFtX2luaXQgKHZvaWQpCit7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7CisJZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bMV0uc3RhcnQgPSBQSFlTX1NEUkFNXzI7CisJZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgPSBQSFlTX1NEUkFNXzJfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bMl0uc3RhcnQgPSBQSFlTX1NEUkFNXzM7CisJZ2QtPmJkLT5iaV9kcmFtWzJdLnNpemUgPSBQSFlTX1NEUkFNXzNfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBQSFlTX1NEUkFNXzQ7CisJZ2QtPmJkLT5iaV9kcmFtWzNdLnNpemUgPSBQSFlTX1NEUkFNXzRfU0laRTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzdml4L2NvbmZpZy5tayBiL2JvYXJkL2Fkc3ZpeC9jb25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThiZTRlYgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2Fkc3ZpeC9jb25maWcubWsKQEAgLTAsMCArMSBAQAorVEVYVF9CQVNFID0gMHhhMTcwMDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzdml4L21lbXNldHVwLlMgYi9ib2FyZC9hZHN2aXgvbWVtc2V0dXAuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjZhYmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRzdml4L21lbXNldHVwLlMKQEAgLTAsMCArMSw0NjggQEAKKy8qCisgKiBUaGlzIHdhcyBvcmlnaW5hbGx5IGZyb20gdGhlIEx1YmJvY2sgdS1ib290IHBvcnQuCisgKgorICogTW9zdCBvZiB0aGlzIHRha2VuIGZyb20gUmVkYm9vdCBoYWxfcGxhdGZvcm1fc2V0dXAuaCB3aXRoIGNsZWFudXAKKyAqCisgKiBOT1RFOiBJIGhhdmVuJ3QgY2xlYW4gdGhpcyB1cCBjb25zaWRlcmFibHksIGp1c3QgZW5vdWdoIHRvIGdldCBpdAorICogcnVubmluZy4gU2VlIGhhbF9wbGF0Zm9ybV9zZXR1cC5oIGZvciB0aGUgc291cmNlLiBTZWUKKyAqIGJvYXJkL2NyYWRsZS9tZW1zZXR1cC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCisgKiBtdWNoIGNsZWFuZXIuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorCisvKiB3YWl0IGZvciBjb3Byb2Nlc3NvciB3cml0ZSBjb21wbGV0ZSAqLworICAgLm1hY3JvIENQV0FJVCByZWcKKyAgIG1yYwlwMTUsMCxccmVnLGMyLGMwLDAKKyAgIG1vdglccmVnLFxyZWcKKyAgIHN1YglwYyxwYywjNAorICAgLmVuZG0KKworCisvKgorICoJTWVtb3J5IHNldHVwCisgKi8KKworLmdsb2JsIG1lbXNldHVwCittZW1zZXR1cDoKKworCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCWxkcgkJcjAsCT1HUFNSMAorCWxkcgkJcjEsCT1DRkdfR1BTUjBfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BTUjEKKwlsZHIJCXIxLAk9Q0ZHX0dQU1IxX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQU1IyCisJbGRyCQlyMSwJPUNGR19HUFNSMl9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUFNSMworCWxkcgkJcjEsCT1DRkdfR1BTUjNfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BDUjAKKwlsZHIJCXIxLAk9Q0ZHX0dQQ1IwX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQQ1IxCisJbGRyCQlyMSwJPUNGR19HUENSMV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUENSMgorCWxkcgkJcjEsCT1DRkdfR1BDUjJfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BDUjMKKwlsZHIJCXIxLAk9Q0ZHX0dQQ1IzX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQRFIwCisJbGRyCQlyMSwJPUNGR19HUERSMF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUERSMQorCWxkcgkJcjEsCT1DRkdfR1BEUjFfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BEUjIKKwlsZHIJCXIxLAk9Q0ZHX0dQRFIyX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQRFIzCisJbGRyCQlyMSwJPUNGR19HUERSM19WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMF9MCisJbGRyCQlyMSwJPUNGR19HQUZSMF9MX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIwX1UKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIwX1VfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjFfTAorCWxkcgkJcjEsCT1DRkdfR0FGUjFfTF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMV9VCisJbGRyCQlyMSwJPUNGR19HQUZSMV9VX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIyX0wKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIyX0xfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjJfVQorCWxkcgkJcjEsCT1DRkdfR0FGUjJfVV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSM19MCisJbGRyCQlyMSwJPUNGR19HQUZSM19MX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIzX1UKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIzX1VfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9UFNTUgkJLyogZW5hYmxlIEdQSU8gcGlucyAqLworCWxkcgkJcjEsCT1DRkdfUFNTUl9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBFbmFibGUgbWVtb3J5IGludGVyZmFjZQkJCQkJICAgICovCisJLyoJCQkJCQkJCSAgICAqLworCS8qIFRoZSBzZXF1ZW5jZSBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgcmVjb21tZW5kZWQgaW5pdCBzdGVwcwkgICAgKi8KKwkvKiBkZXRhaWxlZCBpbiB0aGUgSW50ZWwgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW1zIERldmVsb3BlcnMgR3VpZGUsICovCisJLyogQ2hhcHRlciAxMC4JCQkJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbAkgICAgKi8KKwkvKgkgICBjbG9ja3MgdG8gc2V0dGxlLiBPbmx5IG5lY2Vzc2FyeSBhZnRlciBoYXJkIHJlc2V0Li4uCSAgICAqLworCS8qCSAgIEZJWE1FOiBjYW4gYmUgb3B0aW1pemVkIGxhdGVyCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCisJbW92IHIyLCAjMAorCXN0ciByMiwgW3IzXQorCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KKwkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQkgICAgKi8KKzE6CisJbGRyIHIyLCBbcjNdCisJY21wIHI0LCByMgorCWJndCAxYgorCittZW1faW5pdDoKKworCWxkcglyMSwgID1NRU1DX0JBU0UJCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHIuICovCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyYTogSW5pdGlhbGl6ZSBBc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeSBjb250cm9sbGVyCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIE1TQyByZWdpc3RlcnM6IHRpbWluZywgYnVzIHdpZHRoLCBtZW0gdHlwZQkJCSAgICAqLworCisJLyogTVNDMDogbkNTKDAsMSkJCQkJCQkgICAgKi8KKwlsZHIJcjIsICAgPUNGR19NU0MwX1ZBTAorCXN0cglyMiwgICBbcjEsICNNU0MwX09GRlNFVF0KKwlsZHIJcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCS8qIHJlYWQgYmFjayB0byBlbnN1cmUJICAgICovCisJCQkJCQkvKiB0aGF0IGRhdGEgbGF0Y2hlcwkgICAgKi8KKwkvKiBNU0MxOiBuQ1MoMiwzKQkJCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTVNDMV9WQUwKKwlzdHIJcjIsICBbcjEsICNNU0MxX09GRlNFVF0KKwlsZHIJcjIsICBbcjEsICNNU0MxX09GRlNFVF0KKworCS8qIE1TQzI6IG5DUyg0LDUpCQkJCQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NU0MyX1ZBTAorCXN0cglyMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQorCWxkcglyMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMmI6IEluaXRpYWxpemUgQ2FyZCBJbnRlcmZhY2UJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogTUVDUjogTWVtb3J5IEV4cGFuc2lvbiBDYXJkIFJlZ2lzdGVyCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUVDUl9WQUwKKwlzdHIJcjIsICBbcjEsICNNRUNSX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01FQ1JfT0ZGU0VUXQorCisJLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUNNRU0wX1ZBTAorCXN0cglyMiwgIFtyMSwgI01DTUVNMF9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ01FTTBfT0ZGU0VUXQorCisJLyogTUNNRU0xOiBDYXJkIEludGVyZmFjZSBzbG90IDEgdGltaW5nCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUNNRU0xX1ZBTAorCXN0cglyMiwgIFtyMSwgI01DTUVNMV9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQorCisJLyogTUNBVFQwOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDAJICAgICovCisJbGRyCXIyLCAgPUNGR19NQ0FUVDBfVkFMCisJc3RyCXIyLCAgW3IxLCAjTUNBVFQwX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DQVRUMF9PRkZTRVRdCisKKwkvKiBNQ0FUVDE6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMQkgICAgKi8KKwlsZHIJcjIsICA9Q0ZHX01DQVRUMV9WQUwKKwlzdHIJcjIsICBbcjEsICNNQ0FUVDFfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUNBVFQxX09GRlNFVF0KKworCS8qIE1DSU8wOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDAJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUNJTzBfVkFMCisJc3RyCXIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUNJTzBfT0ZGU0VUXQorCisJLyogTUNJTzE6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NQ0lPMV9WQUwKKwlzdHIJcjIsICBbcjEsICNNQ0lPMV9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ0lPMV9PRkZTRVRdCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyYzogV3JpdGUgRkxZQ05GRyAgRklYTUU6IHdoYXQncyB0aGF0Pz8/CQkgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJbGRyCXIyLCAgPUNGR19GTFlDTkZHX1ZBTAorCXN0cglyMiwgIFtyMSwgI0ZMWUNORkdfT0ZGU0VUXQorCXN0cglyMiwJW3IxLCAjRkxZQ05GR19PRkZTRVRdCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyZDogSW5pdGlhbGl6ZSBUaW1pbmcgZm9yIFN5bmMgTWVtb3J5IChTRENMSzApCQkgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiBCZWZvcmUgYWNjZXNzaW5nIE1EUkVGUiB3ZSBuZWVkIGEgdmFsaWQgRFJJIGZpZWxkLCBzbyB3ZSBzZXQJICAgICovCisJLyogdGhpcyB0byBwb3dlciBvbiBkZWZhdWx0cyArIERSSSBmaWVsZC4JCQkgICAgKi8KKworCWxkcglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0KKwlsZHIJcjIsCT0weEZGRgorCWJpYwlyNCwJcjQsIHIyCisKKwlsZHIJcjMsCT1DRkdfTURSRUZSX1ZBTAorCWFuZAlyMywJcjMsICByMgorCisJb3JyCXI0LAlyNCwgcjMKKwlzdHIJcjQsCVtyMSwgI01EUkVGUl9PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURSRUZSCSAgICAqLworCisJb3JyCXI0LCAgcjQsICNNRFJFRlJfSzBSVU4KKwlvcnIJcjQsICByNCwgI01EUkVGUl9LMERCNAorCW9ycglyNCwgIHI0LCAjTURSRUZSX0swRlJFRQorCW9ycglyNCwgIHI0LCAjTURSRUZSX0swREIyCisJb3JyCXI0LCAgcjQsICNNRFJFRlJfSzFEQjIKKwliaWMJcjQsICByNCwgI01EUkVGUl9LMUZSRUUKKwliaWMJcjQsICByNCwgI01EUkVGUl9LMkZSRUUKKworCXN0cglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIJICAgICovCisJbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KKworCS8qIE5vdGU6IHByZXNlcnZlIHRoZSBtZHJlZnIgdmFsdWUgaW4gcjQJCQkgICAgKi8KKworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMzogSW5pdGlhbGl6ZSBTeW5jaHJvbm91cyBTdGF0aWMgTWVtb3J5IChGbGFzaC9QZXJpcGhlcmFscykgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiBJbml0aWFsaXplIFNYQ05GRyByZWdpc3Rlci4gQXNzZXJ0IHRoZSBlbmFibGUgYml0cwkJICAgICovCisKKwkvKiBXcml0ZSBTWE1SUyB0byBjYXVzZSBhbiBNUlMgY29tbWFuZCB0byBhbGwgZW5hYmxlZCBiYW5rcyBvZgkgICAgKi8KKwkvKiBzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5LiBOb3RlIHRoYXQgU1hMQ1IgbmVlZCBub3QgYmUgd3JpdHRlbiAgICovCisJLyogYXQgdGhpcyB0aW1lLgkJCQkJCSAgICAqLworCisJbGRyCXIyLCAgPUNGR19TWENORkdfVkFMCisJc3RyCXIyLCAgW3IxLCAjU1hDTkZHX09GRlNFVF0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDQ6IEluaXRpYWxpemUgU0RSQU0JCQkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCWJpYwlyNCwgcjQsICMoTURSRUZSX0syRlJFRSB8TURSRUZSX0sxRlJFRSB8IE1EUkVGUl9LMEZSRUUpCisKKwlvcnIJcjQsIHI0LCAjTURSRUZSX0sxUlVOCisJYmljCXI0LCByNCwgI01EUkVGUl9LMkRCMgorCXN0cglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKwlsZHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCisKKwliaWMJcjQsIHI0LCAjTURSRUZSX1NMRlJTSAorCXN0cglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKwlsZHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCisKKwlvcnIJcjQsIHI0LCAjTURSRUZSX0UxUElOCisJc3RyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCWxkcglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKworCW5vcAorCW5vcAorCisKKwkvKiBTdGVwIDRkOiB3cml0ZSBNRENORkcgd2l0aCBNRENORkc6REV4IGRlYXNzZXJ0ZWQgKHNldCB0byAwKSwgdG8gICovCisJLyoJICAgIGNvbmZpZ3VyZSBidXQgbm90IGVuYWJsZSBlYWNoIFNEUkFNIHBhcnRpdGlvbiBwYWlyLgkgICAgKi8KKworCWxkcglyNCwJPUNGR19NRENORkdfVkFMCisJYmljCXI0LAlyNCwJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCisJYmljCXI0LAlyNCwJIyhNRENORkdfREUyfE1EQ05GR19ERTMpCisKKwlzdHIJcjQsCVtyMSwgI01EQ05GR19PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURDTkZHCSAgICAqLworCWxkcglyNCwJW3IxLCAjTURDTkZHX09GRlNFVF0KKworCisJLyogU3RlcCA0ZTogV2FpdCBmb3IgdGhlIGNsb2NrIHRvIHRoZSBTRFJBTXMgdG8gc3RhYmlsaXplLAkgICAgKi8KKwkvKgkgICAgMTAwLi4yMDAgtXNlYy4JCQkJCSAgICAqLworCisJbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCisJbW92IHIyLCAjMAorCXN0ciByMiwgW3IzXQorCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KKwkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQkgICAgKi8KKzE6CisJICAgIGxkciByMiwgW3IzXQorCSAgICBjbXAgcjQsIHIyCisJICAgIGJndCAxYgorCisKKwkvKiBTdGVwIDRmOiBUcmlnZ2VyIGEgbnVtYmVyICh1c3VhbGx5IDgpIHJlZnJlc2ggY3ljbGVzIGJ5CSAgICAqLworCS8qCSAgICBhdHRlbXB0aW5nIG5vbi1idXJzdCByZWFkIG9yIHdyaXRlIGFjY2Vzc2VzIHRvIGRpc2FibGVkICovCisJLyoJICAgIFNEUkFNLCBhcyBjb21tb25seSBzcGVjaWZpZWQgaW4gdGhlIHBvd2VyIHVwIHNlcXVlbmNlICAgKi8KKwkvKgkgICAgZG9jdW1lbnRlZCBpbiBTRFJBTSBkYXRhIHNoZWV0cy4gVGhlIGFkZHJlc3MoZXMpIHVzZWQgICAqLworCS8qCSAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4JCSAgICAqLworCisJbGRyCXIzLAk9Q0ZHX0RSQU1fQkFTRQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCisKKwkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZAkJICAgICovCisJLyoJICAgIChNRENORkc6REV4IHNldCB0byAxKS4JCQkJICAgICovCisKKwlsZHIJcjMsCVtyMSwgI01EQ05GR19PRkZTRVRdCisJbW92CXI0LCByMworCW9ycglyMywJcjMsCSNNRENORkdfREUwCisJc3RyCXIzLAlbcjEsICNNRENORkdfT0ZGU0VUXQorCW1vdglyMCwgcjMKKworCS8qIFN0ZXAgNGg6IFdyaXRlIE1ETVJTLgkJCQkJICAgICovCisKKwlsZHIJcjIsICA9Q0ZHX01ETVJTX1ZBTAorCXN0cglyMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KKworCS8qIGVuYWJsZSBBUEQgKi8KKwlsZHIJcjMsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCW9ycglyMywgIHIzLCAgI01EUkVGUl9BUEQKKwlzdHIJcjMsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCisJLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLworCitzZXR2b2x0YWdlOgorCisJbW92CXIxMCwJbHIKKwlibAlpbml0UFhBdm9sdGFnZQkvKiBJbiBjYXNlIHRoZSBib2FyZCBpcyByZWJvb3Rpbmcgd2l0aCBhICAgICovCisJbW92CWxyLAlyMTAJLyogbG93IHZvbHRhZ2UgcmFpc2UgaXQgdXAgdG8gYSBnb29kIG9uZS4gICAqLworCit3YWtldXA6CisJLyogQXJlIHdlIHdha2luZyBmcm9tIHNsZWVwPyAqLworCWxkcglyMCwJPVJDU1IKKwlsZHIJcjEsCVtyMF0KKwlhbmQJcjEsCXIxLCAjKFJDU1JfR1BSIHwgUkNTUl9TTVIgfCBSQ1NSX1dEUiB8IFJDU1JfSFdSKQorCXN0cglyMSwJW3IwXQorCXRlcQlyMSwJI1JDU1JfU01SCisKKwlibmUJaW5pdGlycXMKKworCWxkcglyMCwJPVBTU1IKKwltb3YJcjEsCSNQU1NSX1BICisJc3RyCXIxLAlbcjBdCisKKwkvKiBpZiBzbywgcmVzdW1lIGF0IFBTUFIgKi8KKwlsZHIJcjAsCT1QU1BSCisJbGRyCXIxLAlbcjBdCisJbW92CXBjLAlyMQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIERpc2FibGUgKG1hc2spIGFsbCBpbnRlcnJ1cHRzIGF0IGludGVycnVwdCBjb250cm9sbGVyCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW5pdGlycXM6CisKKwltb3YJcjEsICAjMAkJLyogY2xlYXIgaW50LiBsZXZlbCByZWdpc3RlciAoSVJRLCBub3QgRklRKSAqLworCWxkcglyMiwgID1JQ0xSCisJc3RyCXIxLCAgW3IyXQorCisJbGRyCXIyLCAgPUlDTVIJLyogbWFzayBhbGwgaW50ZXJydXB0cyBhdCB0aGUgY29udHJvbGxlciAgICAqLworCXN0cglyMSwgIFtyMl0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBDbG9jayBpbml0aWFsaXNhdGlvbgkJCQkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW5pdGNsa3M6CisKKwkvKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrcywgYW5kIHNldCB0aGUgY29yZSBjbG9jayBmcmVxdWVuY3kgICovCisKKwkvKiBUdXJuIE9mZiBvbi1jaGlwIHBlcmlwaGVyYWwgY2xvY2tzIChleGNlcHQgZm9yIG1lbW9yeSkJICAgICovCisJLyogZm9yIHJlLWNvbmZpZ3VyYXRpb24uCQkJCQkgICAgKi8KKwlsZHIJcjEsICA9Q0tFTgorCWxkcglyMiwgID1DRkdfQ0tFTgorCXN0cglyMiwgIFtyMV0KKworCS8qIC4uLiBhbmQgd3JpdGUgdGhlIGNvcmUgY2xvY2sgY29uZmlnIHJlZ2lzdGVyCQkJICAgICovCisJbGRyCXIyLCAgPUNGR19DQ0NSCisJbGRyCXIxLCAgPUNDQ1IKKwlzdHIJcjIsICBbcjFdCisKKwkvKiBUdXJuIG9uIHR1cmJvIG1vZGUgKi8KKwltcmMJcDE0LCAwLCByMiwgYzYsIGMwLCAwCisJb3JyCXIyLCByMiwgIzB4QgkJLyogVHVyYm8sIEZhc3QtQnVzLCBGcmVxIGNoYW5nZSoqLworCW1jcglwMTQsIDAsIHIyLCBjNiwgYzAsIDAKKworCS8qIFJlLXdyaXRlIE1EUkVGUiAqLworCWxkcglyMSwgPU1FTUNfQkFTRQorCWxkcglyMiwgW3IxLCAjTURSRUZSX09GRlNFVF0KKwlzdHIJcjIsIFtyMSwgI01EUkVGUl9PRkZTRVRdCisjaWZkZWYgUlRDCisJLyogZW5hYmxlIHRoZSAzMktoeiBvc2NpbGxhdG9yIGZvciBSVEMgYW5kIFBvd2VyTWFuYWdlcgkJICAgICovCisJbGRyCXIxLCAgPU9TQ0MKKwltb3YJcjIsICAjT1NDQ19PT04KKwlzdHIJcjIsICBbcjFdCisKKwkvKiBOT1RFOiAgc3BpbiBoZXJlIHVudGlsIE9TQ0MuT09LIGdldCBzZXQsIG1lYW5pbmcgdGhlIFBMTAkgICAgKi8KKwkvKiBoYXMgc2V0dGxlZC4JCQkJCQkJICAgICovCis2MDoKKwlsZHIJcjIsIFtyMV0KKwlhbmRzCXIyLCByMiwgIzEKKwliZXEJNjBiCisjZWxzZQorI2Vycm9yICJSVEMgbm90IGRlZmluZWQiCisjZW5kaWYKKworCS8qIEludGVycnVwdCBpbml0OiBNYXNrIGFsbCBpbnRlcnJ1cHRzCQkJCSAgICAqLworICAgIGxkciByMCwgPUlDTVIgLyogZW5hYmxlIG5vIHNvdXJjZXMgKi8KKwltb3YgcjEsICMwCisgICAgc3RyIHIxLCBbcjBdCisJLyogRklYTUUgKi8KKworLy8gI2RlZmluZSBOT0RFQlVHCisjaWZkZWYgTk9ERUJVRworCS8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLworCW1vdglyMCwjMAorCW1jcglwMTUsMCxyMCxjMTQsYzgsMCAgLyogaWJjcjAgKi8KKwltY3IJcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCisJbWNyCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLworCisJLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KKwltb3YJcjAsIzB4ODAwMDAwMDAKKwltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KKworI2VuZGlmCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogRW5kIG1lbXNldHVwCQkJCQkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworZW5kbWVtc2V0dXA6CisKKwltb3YJcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC9hZHN2aXgvcGNtY2lhLmMgYi9ib2FyZC9hZHN2aXgvcGNtY2lhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE1YmUwMQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2Fkc3ZpeC9wY21jaWEuYwpAQCAtMCwwICsxLDY3IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA0CisgKiBSb2JlcnQgV2hhbGV5LCBBcHBsaWVkIERhdGEgU3lzdGVtcywgSW5jLiByd2hhbGV5QGFwcGxpZWRkYXRhLm5ldAorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorCit2b2lkIHBjbWNpYV9wb3dlcl9vbih2b2lkKQoreworI2lmIDAKKwlpZiAoIShHUExSKDIwKSAmIEdQSU9fYml0KDIwKSkpIHsgLyogMy4zViAqLworCQlHUENSKDgxKSA9IEdQSU9fYml0KDgxKTsKKwkJR1BTUig4MikgPSBHUElPX2JpdCg4Mik7CisJfQorCWVsc2UgaWYgKCEoR1BMUigyMSkgJiBHUElPX2JpdCgyMSkpKSB7IC8qIDUuMFYgKi8KKwkJR1BDUig4MSkgPSBHUElPX2JpdCg4MSk7CisJCUdQQ1IoODIpID0gR1BJT19iaXQoODIpOworCX0KKyNlbHNlCisjd2FybmluZyAiQm9hcmQgd2lsbCBvbmx5IHN1cHBseSA1Viwgd2FpdCBmb3IgbmV4dCBIVyBzcGluIGZvciBzZWxlY3RhYmxlIHBvd2VyIgorCS8qIDUuMFYgKi8KKwlHUENSKDgxKSA9IEdQSU9fYml0KDgxKTsKKwlHUENSKDgyKSA9IEdQSU9fYml0KDgyKTsKKyNlbmRpZgorCisJdWRlbGF5KDMwMDAwMCk7CisKKwkvKiByZXNldCB0aGUgY2FyZCAqLworCUdQU1IoNTIpID0gR1BJT19iaXQoNTIpOworCisJLyogZW5hYmxlIFBDTUNJQSAqLworCUdQQ1IoODMpID0gR1BJT19iaXQoODMpOworCisJLyogY2xlYXIgcmVzZXQgKi8KKwl1ZGVsYXkoMTApOworCUdQQ1IoNTIpID0gR1BJT19iaXQoNTIpOworCisJdWRlbGF5KDIwMDAwKTsKK30KKwordm9pZCBwY21jaWFfcG93ZXJfb2ZmKHZvaWQpCit7CisJLyogMFYgKi8KKwlHUFNSKDgxKSA9IEdQSU9fYml0KDgxKTsKKwlHUFNSKDgyKSA9IEdQSU9fYml0KDgyKTsKKwkvKiBkaXNhYmxlIFBDTUNJQSAqLworCUdQU1IoODMpID0gR1BJT19iaXQoODMpOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzdml4L3B4YXZvbHRhZ2UuUyBiL2JvYXJkL2Fkc3ZpeC9weGF2b2x0YWdlLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEwMzU5YwotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2Fkc3ZpeC9weGF2b2x0YWdlLlMKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDQKKyAqIFJvYmVydCBXaGFsZXksIEFwcGxpZWQgRGF0YSBTeXN0ZW1zLCBJbmMuIHJ3aGFsZXlAYXBwbGllZGRhdGEubmV0CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CisKKyNkZWZpbmUgTFRDMTY2M19BRERSICAgIDB4MjAKKworI2RlZmluZSBMVEMxNjYzX1NZCTB4MDEJLyogU3luYyBBQ0sgKi8KKyNkZWZpbmUgTFRDMTY2M19TRAkweDA0CS8qIHNodXRkb3duICovCisjZGVmaW5lIExUQzE2NjNfQkcJMHgwNAkvKiBJbnRlcm5hbCBWb2x0YWdlIFJlZiAqLworCisjZGVmaW5lIFZPTFRfMV81NSAgICAgICAgIDE4ICAgIC8qIERBQyB2YWx1ZSBmb3IgMS41NVYgKi8KKworCQkuZ2xvYmFsCWluaXRQWEF2b2x0YWdlCisKK0AgU2V0IHRoZSB2b2x0YWdlIHRvIDEuNTVWIGVhcmx5IGluIHRoZSBib290IHByb2Nlc3Mgc28gd2UgY2FuIHJ1bgorQCBhdCBhIGhpZ2ggY2xvY2sgc3BlZWQgYW5kIGJvb3QgcXVpY2tseS4gIE5vdGUgdGhhdCB0aGlzIGlzIG5lY2Vzc2FyeQorQCBiZWNhdXNlIHRoZSByZXNldCBidXR0b24gZG9lcyBub3QgcmVzZXQgdGhlIENQVSB2b2x0YWdlLCBzbyBpZiB0aGUKK0Agdm9sdGFnZSB3YXMgbG93IChzYXkgMC44NVYpIHRoZW4gdGhlIENQVSB3b3VsZCBjcmFzaCB3aXRob3V0IHRoaXMKK0Agcm91dGluZQorCitAIFRoaXMgcm91dGluZSBjbG9iYmVycyByMC1yNAorCitpbml0aWFsaXplaTJjOgorCisJCWxkcglyMiwgPUNLRU4KKwkJbGRyCXIzLCBbcjJdCisJCW9ycglyMywgcjMsICNDS0VOMTVfUFdSSTJDCisJCXN0cglyMywgW3IyXQorCisJCWxkcglyMiwgPVBDRlIKKwkJbGRyCXIzLCBbcjJdCisJCW9ycglyMywgcjMsICNQQ0ZSX1BJMkNfRU4KKwkJc3RyCXIzLCBbcjJdCisKKwkJLyogZGVsYXkgZm9yIGFib3V0IDI1MG1zZWMKKwkJICovCisJCWxkcglyMywgPU9TQ1IKKwkJbW92CXIyLCAjMAorCQlzdHIJcjIsIFtyM10KKwkJbGRyCXIxLCA9MHhDMDAwMAorCisxOgorCQlsZHIJcjIsIFtyM10KKwkJY21wCXIxLCByMgorCQliZ3QJMWIKKwkJbGRyCXIwLCA9UFdSSUNSCisJCWxkcglyMSwgW3IwXQorCQliaWMJcjEsIHIxLCAjKElDUl9NQSB8IElDUl9TVEFSVCB8IElDUl9TVE9QKQorCQlzdHIJcjEsIFtyMF0KKworCQlvcnIJcjEsIHIxLCAjSUNSX1VSCisJCXN0cglyMSwgW3IwXQorCisJCWxkcglyMiwgPVBXUklTUgorCQlsZHIJcjMsID0weDdmZgorCQlzdHIJcjMsIFtyMl0KKworCQliaWMJcjEsIHIxLCAjSUNSX1VSCisJCXN0cglyMSwgW3IwXQorCisJCW1vdglyMSwgIyhJQ1JfR0NEIHwgSUNSX1NDTEUpCisJCXN0cglyMSwgW3IwXQorCisJCW9ycglyMSwgcjEsICNJQ1JfSVVFCisJCXN0cglyMSwgW3IwXQorCisJCW9ycglyMSwgcjEsICNJQ1JfRk0KKwkJc3RyCXIxLCBbcjBdCisKKwkJLyogZGVsYXkgZm9yIGFib3V0IDFtc2VjCisJCSAqLworCQlsZHIJcjMsID1PU0NSCisJCW1vdglyMiwgIzAKKwkJc3RyCXIyLCBbcjNdCisJCWxkcglyMSwgPTB4QzAwCisKKzE6CisJCWxkcglyMiwgW3IzXQorCQljbXAJcjEsIHIyCisJCWJndAkxYgorCQltb3YJcGMsIGxyCisKK3NlbmRieXRlaTJjOgorCQlsZHIJcjMsID1QV1JJREJSCisJCXN0cglyMCwgW3IzXQorCQlsZHIJcjMsID1QV1JJQ1IKKwkJbGRyCXIwLCBbcjNdCisJCW9ycglyMCwgcjAsIHIxCisJCWJpYwlyMCwgcjAsIHIyCisJCXN0cglyMCwgW3IzXQorCQlvcnIJcjAsIHIwLCAjSUNSX1RCCisJCXN0cglyMCwgW3IzXQorCisJCW1vdglyMiwgIzB4MTAwMDAwCisKK3dhaXRmb3J0eGVtcHR5aTJjOgorCisJCWxkcglyMCwgPVBXUklTUgorCQlsZHIJcjEsIFtyMF0KKworCQkvKiB0YWtlIGl0IGZyb20gdGhlIHRvcCBpZiB3ZSBkb24ndCBnZXQgZW1wdHkgYWZ0ZXIgYSB3aGlsZSAqLworCQlzdWJzCXIyLCByMiwgIzEKKwkJbW92ZXEJbHIsIHI0CisJCWJlcQlpbml0UFhBdm9sdGFnZQorCisJCXRzdAlyMSwgI0lTUl9JVEUKKworCQliZXEJd2FpdGZvcnR4ZW1wdHlpMmMKKworCQlvcnIJcjEsIHIxLCAjSVNSX0lURQorCQlzdHIJcjEsIFtyMF0KKworCQltb3YJcGMsIGxyCisKK2luaXRQWEF2b2x0YWdlOgorCisJCW1vdglyNCwgbHIKKworCQlibAlzZXRsZWRzCisKKwkJYmwJaW5pdGlhbGl6ZWkyYworCisJCWJsCXNldGxlZHMKKworCQkvKiBub3cgc2VuZCB0aGUgcmVhbCBtZXNzYWdlIHRvIHNldCB0aGUgY29ycmVjdCB2b2x0YWdlICovCisJCWxkcglyMCwgPUxUQzE2NjNfQUREUgorCQltb3YJcjAsIHIwLCBMU0wgIzEKKwkJbW92CXIxLCAjSUNSX1NUQVJUCisJCWxkcglyMiwgPShJQ1JfU1RPUCB8IElDUl9BTERJRSB8IElDUl9BQ0tOQUspCisJCWJsCXNlbmRieXRlaTJjCisKKwkJYmwJc2V0bGVkcworCisJCW1vdglyMCwgI0xUQzE2NjNfQkcKKwkJbW92CXIxLCAjMAorCQltb3YJcjIsICMoSUNSX1NUT1AgfCBJQ1JfU1RBUlQpCisJCWJsCXNlbmRieXRlaTJjCisKKwkJYmwJc2V0bGVkcworCisJCWxkcglyMCwgPVZPTFRfMV81NQorCQlhbmQJcjAsIHIwLCAjMHhmZgorCQltb3YJcjEsICMwCisJCW1vdglyMiwgIyhJQ1JfU1RPUCB8IElDUl9TVEFSVCkKKwkJYmwJc2VuZGJ5dGVpMmMKKworCQlibAlzZXRsZWRzCisKKwkJbGRyCXIwLCA9Vk9MVF8xXzU1CisJCW1vdglyMCwgcjAsIEFTUiAjOAorCQlhbmQJcjAsIHIwLCAjMHhmZgorCQltb3YJcjEsICNJQ1JfU1RPUAorCQltb3YJcjIsICNJQ1JfU1RBUlQKKwkJYmwJc2VuZGJ5dGVpMmMKKworCQlibAlzZXRsZWRzCisKKwkJQCBkZWxheSBhIGxpdHRsZSBmb3IgdGhlIHZvbGF0YWdlIHRvIHN0YWJsaXplCisJCWxkcglyMywgPU9TQ1IKKwkJbW92CXIyLCAjMAorCQlzdHIJcjIsIFtyM10KKwkJbGRyCXIxLCA9MHhDMAorCisxOgorCQlsZHIJcjIsIFtyM10KKwkJY21wCXIxLCByMgorCQliZ3QJMWIKKwkJbW92CXBjLCByNAorCitzZXRsZWRzOgorCW1vdgkJcGMsIGxyCisKKwlsZHIJCXI1LCA9MHg0MGUwMDA1OAorCWxkcgkJcjMsIFtyNV0KKwliaWMJCXIzLCByMywgIzB4MworCXN0cgkJcjMsIFtyNV0KKwlsZHIJCXI1LCA9MHg0MGUwMDAwYworCWxkcgkJcjMsIFtyNV0KKwlvcnIJCXIzLCByMywgIzB4MDAwMTAwMDAKKwlzdHIJCXIzLCBbcjVdCisKKwlAIGlubmVyIGxvb3AKKwltb3YJCXIwLCAjMHgyCisxOgorCisJbGRyCQlyNSwgPTB4NDBlMDAwMTgKKwltb3YJCXIzLCAjMHgwMDAxMDAwMAorCXN0cgkJcjMsIFtyNV0KKworCUAgb3V0ZXIgbG9vcAorCW1vdgkJcjMsICMweDAwRjAwMDAwCisyOgorCXN1YnMJCXIzLCByMywgIzEKKwlibmUJCTJiCisKKwlsZHIJCXI1LCA9MHg0MGUwMDAyNAorCW1vdgkJcjMsICMweDAwMDEwMDAwCisJc3RyCQlyMywgW3I1XQorCisJQCBvdXRlciBsb29wCisJbW92CQlyMywgIzB4MDBGMDAwMDAKKzM6CisJc3VicwkJcjMsIHIzLCAjMQorCWJuZQkJM2IKKworCXN1YnMJCXIwLCByMCwgIzEKKwlibmUJCTFiCisKKwltb3YJCXBjLCBscgorCmRpZmYgLS1naXQgYS9ib2FyZC9hZHN2aXgvdS1ib290LmxkcyBiL2JvYXJkL2Fkc3ZpeC91LWJvb3QubGRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YzM3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9hZHN2aXgvdS1ib290LmxkcwpAQCAtMCwwICsxLDU1IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAwCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKK09VVFBVVF9GT1JNQVQoImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIikKK09VVFBVVF9BUkNIKGFybSkKK0VOVFJZKF9zdGFydCkKK1NFQ1RJT05TCit7CisJLiA9IDB4MDAwMDAwMDA7CisKKwkuID0gQUxJR04oNCk7CisJLnRleHQgICAgICA6CisJeworCSAgY3B1L3B4YS9zdGFydC5vCSgudGV4dCkKKwkgICooLnRleHQpCisJfQorCisJLiA9IEFMSUdOKDQpOworCS5yb2RhdGEgOiB7ICooLnJvZGF0YSkgfQorCisJLiA9IEFMSUdOKDQpOworCS5kYXRhIDogeyAqKC5kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmdvdCA6IHsgKiguZ290KSB9CisKKwlfX3VfYm9vdF9jbWRfc3RhcnQgPSAuOworCS51X2Jvb3RfY21kIDogeyAqKC51X2Jvb3RfY21kKSB9CisJX191X2Jvb3RfY21kX2VuZCA9IC47CisKKwkuID0gQUxJR04oNCk7CisJX19ic3Nfc3RhcnQgPSAuOworCS5ic3MgOiB7ICooLmJzcykgfQorCV9lbmQgPSAuOworfQo=